详细阐述UCD3xxx系列数字电源控制器烧写常用的两种十六进制文件格式:X0 和Intel Hex
件名称为sample.hex;
Hex470 –x sample.out
这段命令是把生成的的sample.out 文件转换成X0 格式文件,文件名称sample.x0。
既然Hex470 可以直接把Out 文件转换成Hex 文件,那为什么要先转成X0 再转换成Hex 文件呢?有两个原因:Hex470 不会计算程序闪存的校验和;Hex470 生成的Hex 文件地址是基于程序闪存模式,而烧写器需要的地址是ROM模式,也就是从0x10000 至0x17FFF,所以UCD3xxx 不支持Hex470 直接生成的Hex 文件,需要通过FusionX0ToHex.exe 转换程序把X0 文件转换成Hex 格式文件,具体命令格式是:
FusionX0ToHex --infile x0-file
--format intel|srec|hexdump
--pflash-checksum calc|none|source
--export pflash|dflash|both|source
--outfile hex-file
--infile 主要指定输入X0 文件。
--format 主要指定生成哪种Hex 格式,分别为intel、srec(Motorola S-Record)和hexdump。
--pflash-checksum 主要指定程序闪存的校验模式,calc 模式-基于X0 文件计算校验位并写入相应位置;none 模式-校验位默认为0xFFFFFFFF;source 模式是使用X0 自己的校验位。
--export 指定输出哪一部分存储,pflash 指只输出程序闪存部分。dflash 指输出数据闪存部分。both 是输出程序和数据闪存。无论哪一部分,如果X0 文件中没有就用0xFF 填充。source 是直接把X0 输出。
--outfile 是指定输出Hex 文件名称。
下面就介绍一下如何在CCS 编译环境中嵌入hex470 和FusionX0ToHex 命令行。
在CCS(3.x 版本)编译环境中,进入工程(Project)菜单,然后选择编译选项(Build Options),然后点击通用标签(General),就会出现如图4 所示界面。在最后编译步骤(Final build steps)中,我们可以输入下面两条命令行:
hex470 -x -memwidth 8 .\debug\FB_48V_HS.out
FusionX0ToHex --infile FB_48V_HS.x0 --pflash-checksum calc --export both --format intel –outfile FB_48V_HS.hex
第一条命令中:-x 选项就是指把.\debug\FB_48V_HS.out 转换成X0 文件,-memwidth 8 是定义系统存储字宽为8 位。
图5:生成的X0 文件(UCD3xxx)
图6:生成的Hex 文件(UCD3xxx)
第二条命令中:输入待转文件是FB_48V_HS.x0,输出文件是 FB_48V_HS.hex,计算程序闪存的校验位,同时输出程序和数据闪存内容,格式是intel 十六进制。
4 基于UCD3xxx 进一步了解X0 和Hex 文件格式
为了进一步了解X0 和Hex 格式,下面通过UCD3xxx 硬开关全桥评估板软件来看一下具体生成的X0和Hex 文件,如图5 和图6 所示。
图5 的第一列统一是百分号开始;下面两列(一个字节)表示的是每一行除百分号外的字符长度,每行最多字符数是0x4E(78);然后一列表示后面数据类型,除最后一行是8(结束)外,其它都是6(数据);再有两列是整行的校验;地址占9 列,以8 开始,后面4 个字节代表实际地址;地址后面就都是数据了。从图中可以看出,X0 文件的程序闪存的地址都是从0 开始的,而且也没有整个程序闪存的校验。TI 烧写软件和工具主要使用X0 格式的文件,烧写软件自己会计算程序闪存的校验和,然后写到最后4 个字节,所以X0 不需要计算整个程序闪存的校验和。
图6 的第一列都是冒号;后面依次一个字节指的是整行所含数据的字节数;两个字节是偏置地址;一个字节是指的记录类型;然后是字节数不等的数据。最后一个字节是每一行的校验。图6 的第一行指定扩展地址,为0x0001;最后一行标志文件结束。另外,在程序闪存最后4 个字节(粉红色区域)就是整个程序闪存的校验和。如果这个校验和不对,程序就不会跳到程序闪存中执行。
5 小结
如果使用TI 提供的烧写软件(GUI)和工具(USB 适配器)烧写的话,只需要格式为X0 的文件;如果使用第三方烧写器在生产线烧写,那么就会需要Hex 格式文件。可以根据本文的介绍来生成所需的X0或者Hex 文件。
6 参考资料
1.SLUS868D - Digital Power Controllers, Texas Instruments Inc., 2012
2.SPNU118J - ARM Assembly Language Tools v4.9 User's Guide, Texas Instruments Inc., 2011
3.SRecord V1.59- Manipulate EPROM load files, 2012
4.Fusion Digital Power Designer, Texas Instruments Inc., 2012
- 详细阐述UCD3xxx 系列数字电源控制器烧写常用的两种十六进制文件格式:X0 和Intel Hex(12-05)
- 控制系统中常见的几种地线详解(10-13)
- 真正的数字电源是什么?(05-12)
- 如何利用智能MOSFET提升数字电源性能?(12-09)
- 解析数字电源与模拟电源的优劣(12-08)
- 基于数字电源控制器UCD3138的一种新的输入电流检测方法(二)(12-08)