C6678十六进制转换工具Hex6x介绍.ppt

上传人:tia****nde 文档编号:8953586 上传时间:2020-04-02 格式:PPT 页数:28 大小:1.95MB
返回 下载 相关 举报
C6678十六进制转换工具Hex6x介绍.ppt_第1页
第1页 / 共28页
C6678十六进制转换工具Hex6x介绍.ppt_第2页
第2页 / 共28页
C6678十六进制转换工具Hex6x介绍.ppt_第3页
第3页 / 共28页
点击查看更多>>
资源描述
C6678十六进制转换工具Hex6x介绍 主要内容 说明 为便于读者进一步研究Hex6x 本文附带了基于TMS320C6678的例程定时器timer 由于该例程引用了TI自带的目标文件库 所以在导入例程后 会由于引用地址不正确而产生报错 为解决这些问题 本文又附带了文档帮助解决上述问题 本文中使用的说明文件是基于此例程的 同样 本文附带了hex6x转换工具 singlecore boot generator 附上本人的联系方式 方便交流 1014771170 1 Hex6x在文件格式转换中的作用 1 Hex6x在文件格式转换中的作用 将CCS生成的 out文件转化为Bootloader可以 理解 的格式是c66x启动至关重要的一步 与以前的DSP启动相比 c66x系列的工具链更加复杂和多样化 参见文献 2 如上图所示 经CCS生成的 out文件需要经过一系列格式转换工具的处理 转换为可以烧写到外部存储器并满足自启动要求的格式 在此过程中 Hex6x是最重要的转换环节 C66以前的DSP文件格式转换 只需要Hex6x十六进制转换工具 C6678还需要在此基础上做后续处理 如上图所示 1 Hex6x在文件格式转换中的作用 hex6x文件和 rmd文件配合使用 后者描述了输出控制 引导选项 存储器选项等内容 见调用Hex6x转换工具部分 经过处理后生成片上引导加载器加载程序所需的引导表 见构建导引表部分 本文档围绕Hex6x转换工具 介绍相关文档格式及其转换过程 1 Hex6x输入的 out文件由CCS生成 在编译选项中设定文件格式为满足小端模式的ELF目标文件格式 该文件格式详细介绍参见文献 3 Hex6x输入 rmd文件是指定了转换选项及转换文件名的命令文件 参见调用Hex6x转换工具部分 输出为引导表文件 见构建导引表部分 并以固定格式保存 参见ASCII Hex目标格式部分 虽然选项中提供了COFF输出格式选项 但是CCSv5提供的目标文件库只兼容ELF格式输出格式 如果选择COFF输出格式 连接器会报无法解析外部符号的错误 2 调用Hex6x转换工具 2 调用Hex6x转换工具 调用Hex6x工具有两种基本方法 在命令行指定选项和文件名 下面的例子把文件fimware out转换为TI Tagged格式 产生两个输出文件firm lsb和firm msb Hex6x tfirmware ofirm lsb ofirm msb在命令文件中指定选项和文件名 创建一个批处理文件 它存储Hex6x调用的包含命令行选项和文件名的命令文件 创建批处理文件spiboot multi 1cores bat 在批处理文件中调用Hex6x 并通过simple0 rmd命令文件调用命令行选项和命令文件名 为便于重复使用以及体现展示效果 本文档提供的例程singlecore boot generator采用第二种方法 即在批处理文件中调用Hex6x并指定命令文件 2 调用Hex6x转换工具 为在命令行中调用Hex6x转换工具 输入 Hex6x option filenameHex6x调用转换工具的命令 option 提供转换工程中的附加信息 通过这些选项指定转换后生成文件的格式 转换涉及存储器的宽度 控制引导加载选项等内容 若采用命令文件指定方式 则该选项在命令文件中设定 基本的转换工具选项列表见文献 1 pp 631 Filename指定被转换的 out文件 2 调用Hex6x转换工具 用命令文件调用hex6x 若计划用同样的输入文件及选项调用hex6x或需要使用ROMS和SECTIONS伪指令定制转换过程 则需要采用这种方式 首先新建批处理文件 例如例程中的spiboot multi 1cores bat 在批处理文件中输入调用工具Hex6x及命令文件 例如 hex6xsimple0 rmd新建命令文件simple0 rmd 在该命令文件中编辑输入需要转换的输入 out文件 转换选项 见前页 定制转换过程的ROMS及SECTIONS伪指令 若需要的话 2 调用Hex6x转换工具 命令文件格式如下所示 文件分三部分 1 输入文件列表 2 转换选项列表 3 ROMS和SECTIONS伪指令 本例中未展示SECTIONS伪指令 simple0 out 输入文件 a 生成文件为ASCII Hex格式 boot 把所有初始化段转化为可导引格式 代替SECTIONS伪指令 e c int00 指定程序入口地址 在引导程序加载后从那里开始执行程序 该值可以是具体的地址 也可以是一个全局符号 orderL 大小端选择 orderL为小端 orderM为大端 mapSPIBOOT0 map 输出映像文件 ROMS ROMS伪指令 ROM1 org 0 x0880 length 0 x2000000 memwidth 32 romwidth 32files simple0 btbl 指定输出文件 2 调用Hex6x转换工具 simple0 out 由CCSv5链接产生的ELF可执行目标文件 在执行批处理文件之前 该文件必须存放在同一目录下 a 指定经过Hex6x转换后的文件存储格式为ASCII HEX格式 即将十六进制数由ASCII字符表示 显然 还可以指定输出文件格式为其他规定的格式 参见文献 1 pp 647 649 simple0 out 输入文件 a 生成文件为ASCII Hex格式 boot 把所有初始化段转化为可导引格式 代替SECTIONS伪指令 e c int00 指定程序入口地址 在引导程序加载后从那里开始执行程序 该值可以是具体的地址 也可以是一个全局符号 orderL 大小端选择 orderL为小端 orderM为大端 mapSPIBOOT0 map 输出映像文件 ROMS ROMS伪指令 ROM1 org 0 x0880 length 0 x2000000 memwidth 32 romwidth 32files simple0 btbl 指定输出文件 2 调用Hex6x转换工具 boot 该选项表示将 out文件中的所有初始化段写入到输出的引导表文件 同样可通过 bootsection选项指定若干初始化段写入到输出的引导表文件 成为可引导段 未初始化段 bss usect 不可被写入到输出引导表文件 引导表参见构建引导表部分 simple0 out 输入文件 a 生成文件为ASCII Hex格式 boot 把所有初始化段转化为可导引格式 代替SECTIONS伪指令 e c int00 指定程序入口地址 在引导程序加载后从那里开始执行程序 该值可以是具体的地址 也可以是一个全局符号 orderL 大小端选择 orderL为小端 orderM为大端 mapSPIBOOT0 map 输出映像文件 ROMS ROMS伪指令 ROM1 org 0 x0880 length 0 x2000000 memwidth 32 romwidth 32files simple0 btbl 指定输出文件 2 调用Hex6x转换工具 e c int00 e选项指定程序入口 即程序被加载之后从那里执行 该选项指定的值可以是具体的程序段地址 也可以是程序中的全局符号 该符号被保存在 out文件中 参见文献 3 为ELF格式文件的ELF头的第五个成员变量 orderL 设定输出文件数字字节排列方式 orderL为小端终结方式 即最低有效字节排列在最后 与通常所说的大小端模式相反 通常所说小端模式指最低有效字节排列在前 存疑 simple0 out 输入文件 a 生成文件为ASCII Hex格式 boot 把所有初始化段转化为可导引格式 代替SECTIONS伪指令 e c int00 指定程序入口地址 在引导程序加载后从那里开始执行程序 该值可以是具体的地址 也可以是一个全局符号 orderL 大小端选择 orderL为小端终结 orderM为大端终结 mapSPIBOOT0 map 输出映像文件 ROMS ROMS伪指令 ROM1 org 0 x0880 length 0 x2000000 memwidth 32 romwidth 32files simple0 btbl 指定输出文件 2 调用Hex6x转换工具 mapSPIBOOT0 map指定输出映像文件 映像文件指出存储器上每一个区域 它的参数 相关联的输出文件名 以及按地址分开的内容表 map文件在第三部分进行描述 注 由命令文件中的转换选项设定的引导表文件包含程序各初始化段及相关信息参数 该引导表文件数据将被片上引导加载器 bootloader 加载到DSP上的内存空间 加载地址空间 不是运行地址空间 该内存空间由ROMS伪指令描述 simple0 out 输入文件 a 生成文件为ASCII Hex格式 boot 把所有初始化段转化为可导引格式 代替SECTIONS伪指令 e c int00 指定程序入口地址 在引导程序加载后从那里开始执行程序 该值可以是具体的地址 也可以是一个全局符号 orderL 大小端选择 orderL为小端终结 orderM为大端终结 mapSPIBOOT0 map 输出映像文件 ROMS ROMS伪指令 ROM1 org 0 x0880 length 0 x2000000 memwidth 32 romwidth 32files simple0 btbl 指定输出文件 3 ROMS伪指令 3 ROMS伪指令 ROMS伪指令用一张地址区域参数表指定系统的物理存储器配置 即对DSP外部存放程序的存储器的描述 ROMS伪指令与TMS320C6000连接器的MEMORY伪指令类似 二者定义的都是目标地址空间的存储器映射图 ROMS伪指令的一行定义一个指定的地址区域 ROMS ROMS伪指令 ROM1 org 0 x0880 length 0 x2000000 memwidth 32 romwidth 32files simple0 btbl 指定输出文件 3 ROMS伪指令 ROM1 表示存储器区域 该名称可以使1 8各字符 org 表示存储器区域的起始地址 它可以是origin org或者o 上图指定存储区域从实际物理地址0 x0880开始 该值没有从0开始 是因为存储器的开始不分要存放用于bootloader的其他参数数据 length 指定存储区域的长度作为ROM器件的物理长度 它可以是length len或者l 上图指定存储区域长度为0 x2000000 Bytes 即32MB 因此存储器空间应该大于0 x0880B 0 x2000000B ROMS ROMS伪指令 ROM1 org 0 x0880 length 0 x2000000 memwidth 32 romwidth 32files simple0 btbl 指定输出文件 3 ROMS伪指令 memwidth 指定DSP内部存储系统的物理宽度 通常存储系统在物理上与目标处理器的宽度相同 C6678为32bits处理器 romwidth 转换后的文件将被存储到DSP外部的存储器ROM中 该选项指定外部存储系统的物理宽度 在本例中外部存储宽度为32bits 关于目标宽度 存储器宽度及ROM宽度的详细描述参见文献 1 pp 632 634 在格式转换过程中 上述宽度将决定很多实现细节 文献同样进行了描述 在此不做进一步解释 files指定了输出文件名 ROMS ROMS伪指令 ROM1 org 0 x0880 length 0 x2000000 memwidth 32 romwidth 32files simple0 btbl 指定输出文件 3 ROMS伪指令 左图是转换过程中产生的映像文件 SPIBOOT0 map 右图为输入 out文件文件的段分布映射 timer map TMS320C6xHexConverterv7 2 1 INPUTFILENAME OUTPUTFORMAT ASCII HexBOOTLOADERPARAMETERSTableAddress 0 x0880 PAGE0EntryPoint 0 x808400 c int00 OUTPUTTRANSLATIONMAP 00000880 0200087fPage 0MemoryWidth 32ROMWidth 32 ROM1 OUTPUTFILES simple0 btbl b0 b31 CONTENTS 00000880 00009e37BOOTTABLE csl vect btad 00000880dest 0080dc00size 00000200 text btad 00000a8cdest 00800000size 00008a80 cinit btad 00009514dest 0080db18size 000000c0 const btad 000095dcdest 0080ca80size 000007a4 switch btad 00009d88dest 0080da1csize 000000a4 SEGMENTALLOCATIONMAPrunoriginloadoriginlengthinitlengthattrsmembers 008000000080000000008a8000008a80r x008000000080000000008a8000008a80r x text00808a8000808a800000400000000000rw 00808a8000808a800000200000000000rw stack0080aa800080aa800000200000000000rw sysmem0080ca800080ca80000007a4000007a4r 0080ca800080ca80000007a4000007a4r const0080d2240080d2240000000800000008rw 0080d2240080d2240000000800000008rw neardata0080d2300080d230000003a800000000rw 0080d2300080d230000003a800000000rw far0080d5e00080d5e00000043c0000031crw 0080d5e00080d5e00000031c0000031crw fardata0080d8fc0080d8fc0000012000000000rw cio0080da1c0080da1c000000a4000000a4r 0080da1c0080da1c000000a4000000a4r switch0080dac00080dac00000005800000058rw 0080dac00080dac00000005800000058rw bss0080db180080db18000000c0000000c0r 0080db180080db18000000c0000000c0r cinit0080dc000080dc000000020000000200r x0080dc000080dc000000020000000200r x csl vect 3 ROMS伪指令 左图是转换过程中产生的映像文件 SPIBOOT0 map 右图为输入 out文件文件的段分布映射 timer map 输出数据在存储器ROM上的映射结果 被转换到引导表的初始化段名 如上述介绍 未初始化段不会被转换到引导表 如上页右图棕色标记的各段 各段在外部存储器ROM上的起始地址 首段起始地址有ROMS伪指令给出 随后各段地址依次累加 各段被加载到DSP内部存储系统后的存储地址 各段长度 TMS320C6xHexConverterv7 2 1 INPUTFILENAME OUTPUTFORMAT ASCII HexBOOTLOADERPARAMETERSTableAddress 0 x0880 PAGE0EntryPoint 0 x808400 c int00 OUTPUTTRANSLATIONMAP 00000880 0200087fPage 0MemoryWidth 32ROMWidth 32 ROM1 OUTPUTFILES simple0 btbl b0 b31 CONTENTS 00000880 00009e37BOOTTABLE csl vect btad 00000880dest 0080dc00size 00000200 text btad 00000a8cdest 00800000size 00008a80 cinit btad 00009514dest 0080db18size 000000c0 const btad 000095dcdest 0080ca80size 000007a4 switch btad 00009d88dest 0080da1csize 000000a4 4 构建导引表 4 构建导引表 引导表格式很简单 它由一个4B的头部记录位域 该位域指明在完成数据复制后 引导加载器应当跳转到的地址 即程序的入口地址 头部记录之后 每一个包含在引导表内的段由如下内容组成 含有段尺寸的4B位域含有复制的目的地址的4B位域实际复制数据可以输入多个段 在数据结尾处有4B的0 表示数据结束 引导加载器的输入时引导表 引导表包含着记录 它只是引导加载器把包含在表内的数据块复制到指定的目的地址 Hex6x转换工具为加载器构建引导表 4 构建导引表 引导加载器的输入时引导表 引导表包含着记录 它只是引导加载器把包含在表内的数据块复制到指定的目的地址 Hex6x转换工具为加载器构建引导表 程序入口地址 4 构建导引表 引导加载器的输入时引导表 引导表包含着记录 它只是引导加载器把包含在表内的数据块复制到指定的目的地址 Hex6x转换工具为加载器构建引导表 首段csl vect段长度及段地址 OUTPUTFILES simple0 btbl b0 b31 CONTENTS 00000880 00009e37BOOTTABLE csl vect btad 00000880dest 0080dc00size 00000200 text btad 00000a8cdest 00800000size 00008a80 cinit btad 00009514dest 0080db18size 000000c0 const btad 000095dcdest 0080ca80size 000007a4 switch btad 00009d88dest 0080da1csize 000000a4 4 构建导引表 接下来是csl vect段数据 段数据可以在 out文件的对应位置找到 数据对比如下图所示 字节排列顺序相反 这是由于编译环境设定输出 out文件格式为小端模式 而设定的hex6x调用选项为 orderL即小端终结模式 区别如p13所示 5 ASCII Hex目标格式 5 ASCII Hex目标格式 Hex6x可以将输出文件转换为多个文件格式 在本节着重介绍常用的ASCII Hex格式 通常Hex6x将输出的引导表文件以ASCII Hex格式保存 ASCII Hex目标文件格式支持16位地址 本格式以字节流组成 字节之间用空格分隔 格式如下 文件以ASCII码的STX字符 ctrl B 02h 开始 以ASCII码的ETX字符 ctrl C 03h 结束 地址记录 数据在外部存储器ROM中起始地址 用 AXXXX标明 其中XXXX是4位十六进制数 共16bits 地址记录仅在如下情况下出现 1 由间隔内容出现 2 字节流在ROM上的存储地址不从0开始 数据内容为引导表二进制数的ASCII码表示
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!