c6678镜像工具链介绍课件

上传人:w****i 文档编号:98183983 上传时间:2019-09-09 格式:PPT 页数:29 大小:2.46MB
返回 下载 相关 举报
c6678镜像工具链介绍课件_第1页
第1页 / 共29页
c6678镜像工具链介绍课件_第2页
第2页 / 共29页
c6678镜像工具链介绍课件_第3页
第3页 / 共29页
c6678镜像工具链介绍课件_第4页
第4页 / 共29页
c6678镜像工具链介绍课件_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《c6678镜像工具链介绍课件》由会员分享,可在线阅读,更多相关《c6678镜像工具链介绍课件(29页珍藏版)》请在金锄头文库上搜索。

1、TMS320C6678镜像工具链,主要内容,1.镜像工具链,1.镜像工具链,将CCS生成的.out文件转化为Bootloader 可以“理解”的格式是c66x 启动至关重要的一步。与以前的DSP 启动相比,c66x 系列的工具链更加复杂和多样化,参见文献2。 如上图所示,经CCS生成的多个.out文件,分别经hex6x十六进制转换工具处理为包含程序入口地址及段信息的.btbl文件(boot table)。hex6x的转换过程参见文献1,本文中不再进行介绍。 因为最终烧写到外部Flash的程序数据包含在一个.dat文件里,所以需要把经过hex6x处理得到的4个.btbl合并为一个.btbl文件,

2、处理过程参见mergebtbl工具部分。 程序bootload过程中需要用到DDR,在此之前需要对DDR进行配置;DDR的配置信息按照段的格式(4B长度信息+4B写入地址信息+若干数据)被添加到.btbl文件中;AddDDrTable6678工具完成上述工作。,1.镜像工具链,烧写程序将数据烧写到外部Flash过程中将数据分成若干小数据块并分多次进行烧写,同时为确保数据在转换过程中不会出现误码,b2i2c_ex工具将.btbl文件每124B分为1个block,在block的开始处添加2B的block长度信息+2B校验和。输出为.i2c文件。 数据时通过CCS烧写入Flash的,在此之前需要把包

3、含数据的.dat文件加载到CCS中,因此转换后的.dat文件应当被CCS识别,b2ccs_ex工具将.i2c文件转换为CCS可识别的文件格式.ccs,并添加了ccs header。 烧写数据需要包含配置bootloader过程的Boot参数表信息,qfparse工具将Boot参数表添加到.ccs文件的对应位置。 最后,由于器件是小端模式的(低有效字节在前),modify工具所以需要将数据转为小端模式。,2. mergebtbl工具,2. mergebtbl工具,由文献1可知,.out经hex6x处理生成的.btbl文件格式如右图单核.btbl所示。Bootloader按照“段”的格式复制数据:

4、当扫描数据得到段长度、段地址(复制到DSP内部存储器系统的地址)信息后,bootloader将随后的相应长度的数据搬移到DSP内部存储器对应地址中。复制结束后PC指针指向程序入口地址_c_int00开始执行程序。 多核.btbl数据可以按照单核,btbl模式进行处理,转换后格式如右图:首先是4B的core0程序入口地址,随后是core0程序的段数据,mergebtbl工具将core1core3程序的段数据依次加到core0段数据的末尾,最后以4B的0结尾。 在合并过程中,删除了辅核程序的入口地址。,2. mergebtbl工具,mergebtbl工具将对应多个核的多个.btbl文件合并到一个.

5、btbl文件,输出的simple.btbl文件依旧满足ASCII-Hex文件格式。 以下是附带文件spi_boot_suit_v2.3.1_release1_utilities1.6678 multicore_boot_4cores中输出文件simple.btbl与输入文件simple0.btbl对比,2. mergebtbl工具,以下是附带文件spi_boot_suit_v2.3.1_release1_utilities1.6678 multicore_boot_4cores中输出文件simple.btbl与输入文件simple1.btbl对比,2. mergebtbl工具,以下是附带文件s

6、pi_boot_suit_v2.3.1_release1_utilities1.6678 multicore_boot_4cores中输出文件simple.btbl与输入文件simple2.btbl对比,2. mergebtbl工具,以下是附带文件spi_boot_suit_v2.3.1_release1_utilities1.6678 multicore_boot_4cores中输出文件simple.btbl与输入文件simple3.btbl对比,可以看到合并文件依旧为ASCII-Hex格式;输出文件(simple.btbl)是输入各文件(simple0.btbl simple3.btbl

7、)段数据依次组合;在合并段数据前添加core0入口地址;在段数据结尾添加4字节0作为结束标志。辅核的入口地址被删除(不应删除)。,3. AddDdrTable6678工具,3. AddDdrTable6678工具,程序bootload过程中需要用到DDR,在此之前需要对DDR进行配置;DDR的配置信息按照“段”的格式(4B长度信息+4B写入地址信息+若干数据)被添加到.btbl文件中(即将DDR配置信息作为一个段添加到.btbl文件,在DSP启动时将配置段数据写入到对应地址下)。 DDR配置信息作为一个段被添加到.btbl文件中的core0入口地址(4B)与其他数据之间。 DDR配置信息含义参

8、见文献3.pp.1516. 在附带文件tiboot.h中有bootEmif4Tbl_s结构体定义了DDR配置参数(第841872行),3. AddDdrTable6678工具,添加DDR配置信息段的实现细节参见附带程序spi_boot_suit_v2.3.1_release 3_tools_prjAddDdrTable;在该程序中定义了120B的常量数组,数组被初始化为DDR配置信息段:最前4B数据(0x00000070=112)为段数据长度,即120-4(段长度)-4(段地址);其后4B数据(0x00873500)为DDR配置信息将被加载到内存中的地址。 关于加载地址及配置信息的取值参见文献

9、2.pp.3及文献3.pp.15。,3. AddDdrTable6678工具,下图为AddDDrTable6678工具处理前后.btbl文件中数据的变化,可以看出该工具仅将DDR配置信息添加到core0程序入口与段数据之间。左上图为处理前数据,右图为处理后数据,左下图为DDR配置信息段。,4. b2i2c_ex及b2ccs_ex工具,4. b2i2c_ex及b2ccs_ex工具,烧写程序将数据烧写到外部Flash过程中将数据分成若干小数据块并分多次进行烧写,同时为确保数据在转换过程中不会出现误码,b2i2c_ex工具将.btbl文件每124B分为1个block,在block的开始处添加2B的b

10、lock长度信息+2B校验和。输出为.i2c文件。 首先将输入.btbl文件中的数据(不包括ASCII-Hex格式文件的开始符、结束符及$AXXXX,参见文献1)由ASCII码转为十六进制流; 其次将二进制流每124B划分为一组,每一组前添加4B信息(2B为组长度信息/字节为单位,2B为组内128B数据校验和),从而将数据扩充为每组128B; 将扩充后的数据以ASCII-Hex格式重新写入输出文件.i2c(添加开始符、结束符及$AXXXX )。,4. b2i2c_ex及b2ccs_ex工具,上述数据转化过程的实现参见附带文件spi_boot_suit_v2.3.1_release 3_tool

11、s_prj b2i2c_ex 由下图可以看出b2i2c_ex工具处理前后.btbl文件与.i2c文件的变化(上图为处理前数据,下图为处理后数据)。,附加4B信息:组长度+校验和,组数据:124B/组,4. b2i2c_ex及b2ccs_ex工具,数据时通过CCS烧写入Flash的,在此之前需要把包含数据的.dat文件加载到CCS中,因此转换后的.dat文件应当被CCS识别,b2ccs_ex工具将.i2c文件转换为CCS可识别的文件格式.ccs,并添加了ccs header。 首先将输入.btbl文件中的数据(不包括ASCII-Hex格式文件的开始符、结束符及$AXXXX,参见文献1)由ASCI

12、I码转为十六进制流; 其次将十六进制流每4B(8个十六进制位)转为一个32位数,作为1行输出到.ccs文件; 在.ccs文件的最前面一行添加.ccs文件头信息:1651 1 10000 1 e300 上述处理的实现过程参见附带文件spi_boot_suit_v2.3.1_release3_tools_prj b2ccs_ex,4. b2i2c_ex及b2ccs_ex工具,.ccs文件头信息:1651 1 10000 1 e300解释 1651 固定标示符 1 数据格式: 1-十六进制;2-十进制;3-十进制长整形;4-十进制浮点型 10000 基地址 数据在DSP存储系统中存放的地址 0 页类

13、型: 0-数据 ;1-程序 E3000 数据长度,4. b2i2c_ex及b2ccs_ex工具,下图展示了b2ccs_ex处理前后文件中数据格式的变化。可以看到转换后文件格式是可以被CCS识别的.ccs格式。,5. qfparse工具,5. qfparse工具,烧写数据需要包含配置bootloader的Boot参数表信息,qfparse工具将Boot参数表添加到.ccs文件的对应位置。 不同的bootloader方式对应的Boot参数表内容不同,具体配置方式参见文献3.及文献2.pp.6。 附带文件tiboot.h定义了对应不同Boot方式的boot参数表结构体。从该结构体可以得到参数表变量的

14、用途及占用字宽。,5. qfparse工具,通常Boot参数占用32B空间(8字),在Boot参数表后附加256-8字的0作为填充字段,构成256字的参数表。 附带工具链中的qfparse工具通过调用文件ParaTable.map将事先插入的参数表写入.ccs文件的最前面,该参数表是基于SPI boot方式的。 qfparse工具处理后,输出文件格式如右图。 qfparse工具的实现细节参见附带文件spi_boot_suit_v2.3.1_release3_tools_prjqfparse,5. qfparse工具,qfparse工具处理前后文件格式的变化如右图所示。(左图为处理前文件,右图为

15、处理后文件),可以看到qfparse在文件前部插入256字的boot参数表。,256字boot参数表,6. modify工具,6. modify工具,最后,由于器件是小端模式的(低有效字节在前),所以modify工具需要将每行4B数据按字节翻转。其实现过程在附带文件spi_boot_suit_v2.3.1_release3_tools_prj modify。处理前后数据格式变化如下图所示。,6. modify工具,左图为经转换工具链处理后获得的.dat数据被加载到DDR中的形式。可以看出数据是按字节形式加载的。 DSP是小端模式,低有效字节在前、高有效字节在后,例如0x80000000地址下的数据00 00 50 00 的实际值应为0x00500000,为数据转换前的形式。,附带的工具链有一个问题:在mergetable合并各个.btbl文件过程中,删掉了辅核程序的入口地址,这就需要在core0程序中人工地将各辅核入口地址写到其对应核的MAGIC_ADDRESS中,增加了程序设计的不便,原因参见文献1。 可行的办法是,将各辅核入口地址看做一个只有4B内容的段,并以段的形式添加在.btbl文件的末尾,因而形成的文件格式如右图所示。 上述改进,待时间充裕时,再做探索。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号