您的位置 首页 5G

根据TMS320C6678的多核DSP加载形式研讨

摘要:德州仪器TI推出的八核DSP芯片TMS320C6678是目前基于Keystone架构的最高性能的DSP器件,是市场上应用广泛的C6455高端处理平台升级的理想选择。本文主要研究了C6678 D

摘要:德州仪器TI推出的八核DSP芯片TMS320C6678是现在依据Keystone架构的最高功能的DSP器材,是市场上运用广泛的C6455高端处理渠道晋级的抱负挑选。本文首要研讨了C6678 DSP程序的各种单核加栽和多核加载的几种形式,首要用到多核boot技能,对EMIF16 FLASH boot引导形式、主机(PCIe接口)引导形式、I2C引导形式、SRIO引导形式、网络引导boot引导形式的办法做了研讨,对TI的高功能多核架构DSP芯片的程序加载供给了有用的参阅帮忙。

近年来,以数字信号处理器(DSP)为根底的通用信号处理模块的研发遭到人们的注重,DSP技能广泛运用于雷达、通讯、图画处理等范畴。跟着声纳、雷达、高清视频以及嵌入式机器视觉等需求不断攀升,多核DSP的运用已成为满意开展的重要途径。因为DSP体系安稳运转起来后,在实践的运用中都要脱离仿真器材,完结体系的主动加载,尤其是多核DSP加载进程中,不同于多芯片间的加载办法,需求完结核间的调度,数据协同处理,因而多核发动的加载办法需求做具体研讨。

TMS320C6678 DSP是TI最新发布的一款依据KeyStone架构高功能的超长指令字(VLIW)架构芯片,片内有8个内核,每个核频率为1.25 GHz,单核每秒高达40 GB MAC定点运算和20 GB FLOP浮点运算才能,作业速度可达10GHz。与现在运用较为广泛的TMS320C6455 DSP,为单核1.2GHz作业,定点处理才能为9600M MAC。可见C6678的处理才能要远强于C6455。针对C6678多核协同处理特性,本文以自定义的双6678板卡渠道为根底,深入研讨C6678的多种加载办法,对EMIF16 FLASH boot引导形式、I2C引导形式、SRIO引导形式、网络引导boot形式做了剖析和阐明,主机(PCIe接口)引导形式、HYPERLINK引导形式和SPI引导形式的运用,本文不做阐明。

1 多核加载办法论说

在C6678的片内地址空间0x20800000到0x20B1FFFF间集成了一块128K的内部ROM程序,又叫做RBL(ROMBoot Loader),Rom code是C6678出厂时固化在Rom中的,用户不能改动,在DSP复位或上电时完结将DSP代码从外部接口读入到内部高速ram。发动进程能够大致分为主机引导和内存引导发动,在内存引导发动进程代码从一个外部内存的加载初始运用程序到内部的内存来履行。假如主机形式,发动程序装备DSP在被迫状况,等候代码将DSP运用程序程序由外部主机写入ram开端履行。为习惯不同的体系要求,RBL供给了几种发动的履行办法。不同的引导办法如表1所示。

依据TMS320C6678的多核DSP加载形式研讨

2 多核boot预处理

C6678有8个核,选用依据KeyStone架构的中止操控器、核间通讯寄存器以及适宜的通讯拓扑结构完结多核间的通讯,core0为主核,其它7个核能够一致履行相同的Romcode代码,也能够不同,或许依据核号(即DNUM)进行不同程序的分支。关于core0来说,它首要是读取DEVS TAT寄存器的加载形式,并依据当时加载形式进行一些接口的初始化和PLL的装备,还要依据加载形式决议是否搬移数据。关于其它的7个核来说,它们首要是挂载IPC中止,然后进入IDLE状况等候core0发过来的中止。中止一到,就跳到进口地址开端履行程序,待加载工程全体流程如图1所示。

依据TMS320C6678的多核DSP加载形式研讨

代码读入前要依据不同的boot办法进行转化格局,转化东西是将各核的.out文件转化成.dat或.bin文件,也有网络boot时要转化成.eth格局的文件来传送,不同的转化办法在各自的boot阐明中具体论述。不管哪一种发动办法,首先要boot起来core0之后再引导其他的从核,重点是从核在boot发动时经过host向DSP写了MAGIC_ADDRESS并触发IPC中止,DSP跳转到BOOT_MAIGC_ADDRESS所指向的地址履行程序。

3 C6678 EMIF flash boot

3.1 core0加载

C6678的EMIF16加载是一种直接从Nor Flash(有必要挂在CE2空间:0x70000000)加载core0的形式,不需求I2CEEPROM的参加,由Rom code初始化EMIF16接口,因为EMIF16外接Nor Flash是一种XIP器材,因而直接跳到Nor Flash的开端地址处开端履行。

为了将Nor Flash中的代码搬移到C6678的core0的L2SRAM中,需求在core0的待加载工程中编写引导代码,此引导代码的效果便是将core0的代码按段加载到内存中,最终跳到进口地址处开端履行。引导代码放在L2 SRAM的前1KB空间,并烧写到Nor Flash的前1KB空间,运用代码放到1KB后边,生成.out文件编写转化东西生成.dat文件,如图2所示Nor Flash代码格局:

依据TMS320C6678的多核DSP加载形式研讨

3.2 core0加载其它核

在多核加载进程中,core0是主核,corel-core7是从核,由core0加载从核,具体进程是:

1)上电后,core0完结程序加载,并跳到进口地址开端履行程序。

2)在core0主程序中.core0从Nor Flash中读取corel的代码,并按段加载到core1的L2 SRAM,然后将core1程序的进口地址写到core1的BOOT_MAG%&&&&&%_ADDRESS,最终向core1发送IPC中止,其它核的加载进程相同。各个核的Nor Flash空间分配如表2所示。

依据TMS320C6678的多核DSP加载形式研讨

在将c_int00地址写到magic address时,留意需求保证写的是大局地址,如当程序放在L2时,c_int00地址应该转化为0x1n8xxxxx,其间n为coreID.

4 C6678 I2C boot

C6678的I2C boot是经过I2C总线读取挂载在总线上的eepromm中的IBL读取参数表装备RBL加载运用程序到的指定数据块。能够操作主I2C形式或从形式,在主形式的DSP读取带有镜像文件的I2C从设备。在从形式,DSP为I2C衔接的从设备,主设备大多是另一个DSP或FPGA。

4.1 单核发动形式

单核发动包括:RBL、IBL、运用程序。关于I2C发动,需求做的首要有4步:

1)编译IBL:不同版别的IBL,其目录下的内容有些不同。编译IBL需求的东西有TI CGEN eompiler CGT_C6000_7.x和MinGW。

2)将编译好的IBL写到EEPROM中,并依据需求修正EEPROM中的IBL configuration table;

3)将运用程序写到NOR FLASH或NAND FLASH中:

首先要编写格局转化东西,将CCS生成的运用程序拷贝到格局转化东西中,将ELF格局的.out转化成CCS格局的数据文件.dat,然后将该.dat写到NOR FLASH或许NAND FLASH即可。

4)将拨码开关拨到相应的发动形式。C6678板卡NORboot的bootmode[]=101000100010000,NAND boot的bootmode[]=101010000010000。

4.2 多核发动形式

多核发动包括核内RBL、IBL、MAD、运用程序。

选用pre-link形式:在这种操作形式下的MAP东西为运用程序段做地址分配和调用pre-linker。这种形式合适运用在多核,是运用程序开发人员想要MAP东西帮忙地址分配,使多核运用之间的通用代码同享。

MAD引导的多核装载的进程有以下几个进程:

1)在发动时分,DSP设备将运转ROM引导装载程序,将加载并运转在i2c eeprom上载好的IBL。

2)IBL将下载MAD镜像文件从tftp服务器(MAD文件也能够存数在板上的NOR/NAND FLASH中)到DDR中。给IBL装备了一个履行程序的进口地址,在非MAD引导的状况下,此地址将是运转程序下载的进口地址,在MAD引导状况下,IBL装备为跳转到MAD Lader的进口地址。

3)MAD引导装载程序状况,装载运用程序段,在每个装备好的核的运转地址开端履行程序。

5 C6678网络boot

C6678芯片网络经过MARVEL操控芯片与外部RJ45网络接口相连,留意添加经过MDIO对MARVEL芯片的操控,然后完结与PC的通讯。树立C66 78的网络boot首要有图3所示进程。

依据TMS320C6678的多核DSP加载形式研讨

DSP内RBL首要装备SerDes,SGMII,SWITCH以及多核导航器,预备经过千兆以太网接口接纳boot table。这些开端的装备是经过查询与发动形式相关的DEVSTAT寄存器和引导网络boot的parameter table。在发动形式选定后,PA子体系的时钟首要参阅main PLL的参阅时钟或Ser Des参阅时钟。

1)运用arp指令检查网络缓存区链接状况,arp-a检测网口外接的设备。

2)运用hex6x.exe将out文件生成hex文件:要有*.cmd文件和hex6x.exe和*.out文件。

3)编译生成.eth网络boot格局文件:最好将编译东西放到本目录下编译,转化得到.eth网络文件。

4)获取板卡的MAC地址:正确装备板卡的拨码开关。

装备正确今后PC就能收到板卡宣布的BOOTP包(3 s周期),设置C6678的bootmode[]=010000100111000。检查板卡的MAC地址:经过wires hark抓包获取板卡板的MAC地址。

5)传输boot文件:MINGW环境里边运转指令,绑定板卡的MAC地址和IP,设置板卡IP地址为192.168.1.2,PC端的地址为192.168. 1.1。文件传输指令pcsendpkt.exe simple.eth 192.168.1.2。发送文件到板卡内存,传输文件成功后能够板卡中止向PC发送MAC地址,而且能够看到PC向板卡运用UDP协议传输DSP Core0的代码,Wireshark抓取网口数据包成果如图4所示。

依据TMS320C6678的多核DSP加载形式研讨

将Core0的代码存到DSP的内存,此刻Core0仍处于boot load的EMAC加载形式,当发送完毕代码后,向Core0发送完毕包.Core0依据EMAC加载协议,当收到该包后则从加载形式跳转为正常形式,PC指针从指定的程序进口地址处开端运转。

6)在core0加载的程序中编写core1到core7的加载程序,经过网口读入coreN各个核的代码程序到对应的RAM中,假如7个从核的代码相同,只用读入一次从中心代码,加载到7个核中,0核像7个核发送IPC中止触发运转程序。调查程序跳转地址到设定的地址处,验证程序运转成果。

6 C6678 SRIO boot

C6678支撑的SRIO协议为2.1版别,link rate速率即1.25G,2.5G,3.125Gbit,运用4x形式。SRIO协议规则有两种传输办法:Direct IO与Message办法。当DSP处于SRIO bootload形式时,将代码直接写入DSP内存并中止.DSP立即从boot形式跳转到正常形式,履行加载的代码.

1)程序文件格局的转化:

①运用代码转化东西hex6x.exe转化ELF格局的out文件成为十六进制格局的boot table文件。

②运用Bttbl2Hfile.exe,hfite2array.exe将boot table文件转化为一个DAT格局文件。

③仿制生成文件到\srioboot_example\src,使boot image链接到DSP的发动程序中。

2)DSP boot进程:DSP boot工程运用多核程序包的BIOS支撑库来初始化DDR,它首先从SRIO衔接的DSP中经过SRIO将DDR的初始化程序的代码读入到Core0的L2RAM中,然后写入DDR初始化引导程序的进口地址到core0的boot magic address中。在DSP上运转的RBL检测到core0建议的进口地址,并跳转开端发动初始化DDR。DDR的初始化代码在初始化DDR正确后将持续校验SRIO boot magicaddress,SRIO boot引导流程如图5所示。

依据TMS320C6678的多核DSP加载形式研讨

然后从DSP将由SRIO把运用程序引导到本地的DDR内存发动板卡,写入的运用程序的进口地址到core0。Core0开端发动和打印发动信息,并经过write_boot_magic_number()和一个IPC中止发送到其它中心,写入进口地址发动其它从核,程序会跳转到其它核上运转的写boot地址指令开端发动,每个中心将写入0xBABEFACE到对应的SRIO boot magicaddress。

3)板卡SRIO boot:板卡上包括两片C6678芯片,SRIOboot。两片C6678经过4xlane差分线互联,运用RS-232总线衔接到PC的串行端口,板卡设置boot形式,C6678_A的bootmode []=100000101011000,C6678_B的bootmode []=100000101011100。这将设置引导板从SRIO发动,参阅时钟频率为312.5 MHz,数据速率3.125 GBs和lane设置4x端口,在1GHz的体系时钟。

翻开超级终端或TERA终端衔接,设置波特率115200,数据8位,无奇偶校验,中止位和流量操控,衔接主机的CCSv5,加载和运转srio boot_example_evm66xxl.out程序。CCS操控台将显现以下音讯:…[C66xx_0]Transfer boot code via SRIO successfully

超级终端会显现以下音讯:SRIO Boot Hello World Example Version 01.00.00.01;Booting Hello World image on Core0 from SRIO … … Booting Hello World image on Core7 from Core 0

7 结 论

TMS320C6678是8内核的DSP,首要完结了体系主动加载boot load程序,支撑的多种加载办法:首要有EMIFFLASH加载、网络EMAC加载,以及SRIO加载和I2C加载。多种加载办法能为实测项目运用中到达更高的功率,在数字信号处理体系中多核DSP的开展必定成为一种趋势,多核间的有用加载更直接影响到项目的全体特性,依照该规划思路编制的boot load办法已在TMS320CC6678+FPCA的CPCI处理卡中得到运用,运用的高端处理渠道可运用于航天范畴、船只范畴、无线渠道和高速图画处理范畴等,多核DSP体系能很好的复位及快速完结多核间的加载,体系运转安稳可靠性较高。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/282032.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部