2022年11月5日(纠正与补充)

  • 无论是生成Dat文件还是生成Bin文件都必须使用TI官方的“Hex6x.exe”软件。
  • 关于该“Hex6x.exe”软件的使用,请参考:SPRU186W 第十一章 Hex Conversion Utility Description。
  • “Hex6x.exe”软件,需要 直接参数或者RMD文件,将“.out”文件转换成ASCII编码的文本文件。生成的文本文件的内容是用户程序编码中的各个段落。
  • 在我们使用CCS烧录程序的时候,可以选择烧录bin格式的程序或者是dat格式的程序。在这两者中,bin文件的空间大小更小。
  • 本文8月1日的内容,关于生成bin文件的方式存在错误。在此纠正

1. 生成bin格式的文件

  • 之前的理解都是,bin文件是按照地址位置摆放数据,但凡两个段之间相距很远,就会填充很多的0。这种生成的方式会导致bin文件很大(100M+)。
  • CCSv5下载使用的bin文件,是将段追加在一起,每个段前,记录这段的大小以及段的存放位置。

1.1 步骤

(1)使用hex工具,将out文件生成“btbl文件”(文本文件)。
(2)使用“btoccs”工具,将btbl文件中的字符合并成4字节16进制的数(文本文件)。
(3)使用“ccstobin”工具,将4字节16进制的字符数转换成真实数值,以二进制文件存放。

  • Hex工具是不开源的,而btoccs和ccstobin是开源的。

2022年8月1日

参考链接:
知乎讲解《CCS如何生成hex和bin文件》
官网资料《构建前和构建后的步骤》

1. 生成BIN文件

1.1 ofd6x工具

将.out文件转换为一个xml文件。

ofd6x -x --xml_indent=0 --obj_display=none,sections,header,segments Card6678_C0.out > ofd_123_456_789.xml

1.2 mkhex4bin工具

为 TI的十六进制转换工具hex6x 创建一个文件。
该文件可用于将xml文件转换为一个临时文件。

mkhex4bin  ofd_123_456_789.xml > hexcmd_321_432_658.tmp

1.3 hex6x工具

十六进制转换实用程序。将来自mkhex4bin的临时文件和.out文件一起,转换为一个bin文件。

hex6x -q -b -image -o Card6678_C0.bin hexcmd_321_432_658.tmp Card6678_C0.out

2. 生成DAT文件

参考文献:
Hex6x工具介绍
全部工具链介绍
bootloader搬运代码与下载
ti官网提问:
在nysh.spi.map中设置spi 启动参数表

  • 全过程示意图

2.1 hex6x.exe

  • 详情参考文件《SPRU186W.pdf》Chapter 11 Hex Conversion Utility Description。
  • 根据 上述文件,可以知道正确用法是: hex6x.exe filename.rmd 。
  • cmd类似rmd文件,指导解析生成二进制文件时候的类型和方式。
  • 如何写CMD文件,如下图所示,8个CMD文件仅仅是输入输出的文件名不同,其他的配置皆相同。
  • 即使是下载的C6657双核的命令文件,也只是文件名改变。

2.2 mergebtbl工具

  • 合并多个btbl文件。将多个文件中的内容拼接在一起,最后以0x00000000结尾。
  • 删除辅核的的入口地址 _c_init00。(1) 在core0程序中人工将辅核地址写到对应的MAGIC_ADDRESS。(2) 或者,将各个辅核入口地址看做是一个只有4字节的段。以段的形式,添加在.btbl文件的末尾。如下图所示。

2.3 AddDdrTable6678

  • 将DDR3的初始化配置添加到文件中。按照段的形式,添加在core0的入口地址之后。

  • DDR配置信息,一共是4长度+4地址+112数据=120字节。

  • 长度数值:0x00000070=112字节。

  • 地址数值:0x00873500。如下图所示,0x00873500为DDR的配置表地址。

  • 引导加载程序bootloader在器件初始引导期间,使用 L2 SRAM 的一部分(起始地址 0x0087 2DC0 和结束地址 0x0087 FFFF)。

  • 以段的形式,将DDR3的配置信息,写在文件中。设备上电启动之后,由搬运代码将DDR3的配置写到L2SRAM中的0x00873500地址处。引导程序会使用该处的配置,用来配置DDR3。

  • 关于DDR3的112个配置数据,是根据titool.h中的 BOOT_EMIF4_TBL_T 定义的。这些配置除前四个之外,都是DDR中的寄存器。

  • 目前:configselect=0x024280F5 尚不知道从何而来。

  • DDR参数

  • 参数生成工具

  • 附加内容:DDR3初始化代码工程示例

  • 《DDR3初始化-SPRABL2A》

2.4 b2i2c工具

  • b2i2c.exe 将 .btbl文件中的内容取出,对内容进行字节分割,按照124字节写入一个block块。
  • 在block块的开头,添加2字节的长度信息和2字节的校验和。一个块为 2+2+124=128字节(0x0080)。
  • 在btbl文件中的数据是以ACII码形式存在。将数据转化为十六进制流,再做分割块的操作。
  • 最后将十六进制流数据,再转回ASCIIHex格式,写入.i2C文件。并添加开始符号,结束符号以及$AXXXX。
  • 下图略过了AddDdrTable6678的过程。

2.5 b2ccs工具

  • b2ccs.exe工具将.i2c文件转换为CCS可识别的文件格式.ccs。并添加ccs header。
  • 先将文件由ASCIIHex转换为十六进制流。每4个字节转换为一个32位数,作为1行到.ccs文件。
  • 在.ccs文件的最前面一行,添加:1651 1 10000 1 1c5f0。
  • 1651:固定标示符
  • 1:数据格式
  • 10000:基地址
  • 1:页类型(0-数据 1-程序)
  • 1c5f0:数据长度。(116208行数据+1行开头)

2.6 romparse工具和qfparse工具

  • 在.ccs文件中,添加boot启动参数表。一共256行,256x字=256x32位数据。
  • 参数表的定义在titool.h中。
  • 如果使用romparse工具进行boot参数表的添加。需要修改nysh.spi.map配置文件。如下图所示。
  • bootmode等于50而不是6,是因为这里的数值用RBL内部使用的扩展引导模式值。(可以理解为,原本的序号6,在去掉一个no boot模式后变成5。对每个序号索引扩大10倍,方便以后中间穿插拓展RBL的引导方式,因而SPI启动模式在RBL中变成了50)
  • 如果使用qfparse工具,这个是个人编写的非官方工具。需要配合ParaTable.map文件。在这个map文件中,直接列出了256行参数字,直接修改其中的数值并不是很方便。如下图所示。
  • 添加完参数表之后的文件如下图所示。长度有原先的0x1c5f0变成(0x1c5f0+256 = 0x1c6f0行)。
  • 起始地址0x8000000。

2.7 byteswapccs工具和modify工具

  • 器件是小端模式。低字节在前面。需要将每行4字节的数据,按照字节进行翻转。即0x87654321变成0x21436587。
  • 文件的第一行信息不变。
  • 官方工具是byteswapccs,个人工具编写的是modify。转换之后得到的新文件为.dat文件。

【DSP】【第四篇】如何生成bin和dat文件相关推荐

  1. Vivado如何生成BIN或MCS文件并烧写到FLASH中

    一. 参考资料 参考资料:UG908 - Vivado Design Suite 用户指南:编程和调试(中文版) (v2021.1) 传送门:Xilinx官网--网站关键字搜索--ug908 目前(2 ...

  2. 在CCS上生成.bin .hex .txt文件并烧录到MSP430 使LCD灯亮

    在CCS上生成.bin .hex .txt文件并烧录到MSP430 使LCD灯亮  摘自    https://www.cnblogs.com/binglmm/p/9629618.html      ...

  3. comtrade文件C语言,生成的comtrade.dat文件有关问题,波形分析软件打开看点是乱的...

    生成的comtrade.dat文件问题,波形分析软件打开看点是乱的? 将连续的采样数据写成comtrade文件,数据类型是short int ,只有1个通道的数据,保证数据都没有问题(从波形看是正弦的 ...

  4. keil MDK中如何生成*.bin格式的文件

    在Realview MDK的集成开发环境中,默认情况下可以生成*.axf格式的调试文件和*.hex格式的可执行文件.虽然这两个格式的文件非常有利于ULINK2仿真器的下载和调试,但是ADS的用户更习惯 ...

  5. Gh0st源码学习(三)生成DLL和DAT文件

    从生成的EXE文件中分离出DLL和DAT 文件 一.自定义DLL和DAT文件的生成路径 先搜索 IDR_BSS . IDR_DLL   1. IDR_DLL   位置:\Gh0st3.6原版\Serv ...

  6. Keil如何生成bin文件【Keil生成Bin文件的方法】

    使用过Keil的同鞋都知道,现在Keil中默认可以输出.axf的调试文件和可以通过钩选输出的.hex可执行文件,没有bin(二进制)文件的输出选项.可是偏偏某些时候需要或者习惯性的使用.bin文件来进 ...

  7. 关于bin和obj文件夹。debug 和release的区别(转)

    关于bin和obj文件夹. 楼主hcaihao(影子男孩)2002-05-29 20:04:24 在 .NET技术 / C# 提问 VS.Net会生成bin和obj文件夹以及它们下面的Debug和Re ...

  8. ccs读取dat文件c语言程序,TMS320DM642学习----第六篇(CCS中.dat文件类型详解)

    1.如下为.dat文件中文件头的基本格式: MagicNumber Format StartingAddress PageNum Length [NewFormat] 下面是分别的解释: MagicN ...

  9. UR机器人装箱姿态_UR10 RG2机械臂手臂+RealsenseZR300 机器人手眼标定 系列第四篇

    UR10 RG2机械臂手臂+RealsenseZR300 机器人手眼标定 系列第四篇 发布时间:2018-09-18 17:43, 浏览次数:1180 , 标签: UR RG RealsenseZR ...

最新文章

  1. 选择域名需注意什么才更有利于网站优化?
  2. python读取c盘中的csv文件-python读取当前目录下的CSV文件数据
  3. P1574: [Usaco2009 Jan]地震损坏Damage
  4. java 蓝桥杯 Huffuman树
  5. scrapy.Request使用meta传递数据,以及deepcopy的使用
  6. java map 缓存数据_Map方式实现JAVA数据缓存
  7. Atitit.attilax的 case list 项目经验 案例列表
  8. 分享一下linux系统的精彩描述
  9. Python文件指针
  10. 【运动蓝牙耳机选择】运动蓝牙耳机怎么选 哪种无线蓝牙运动耳机适合你
  11. 使用cerebro可视化ElasticSearch集群信息
  12. 炎黄盈动易鲸云低代码平台,全面助推企业数字化转型升级
  13. SWF文件格式说明书--SWF文件头
  14. 【allegro 17.4软件操作保姆级教程三】布局操作基础二
  15. 将wordpress博客转移至新虚拟主机
  16. [Git] 配置Github Gitee reference加速
  17. 跟着禅一练功夫-少林八段锦对身体有什么样的益处
  18. 单目运算符、双目运算符、三目运算符
  19. 关于Unity碰撞检测失败的冷门原因
  20. 火爆的keychron机械键盘,你还没有入手?【重点:附键盘选购建议】

热门文章

  1. Python简介和行业应用方向
  2. python绘制立体心形_python画出心形图
  3. VINS在安卓手机上实现、安卓相机标定、IMU标定 亲爸级原理介绍和教学
  4. 自媒体视频消重软件,视频内容进行消重
  5. 亚马逊主图视频可以上传几个?有什么要求?
  6. 多看一眼多进步,python入门到放弃
  7. 视频过大如何压缩变小?
  8. selenium【自动下载谷歌驱动】自动获取谷歌版本,并自动下载对应版本的chromedriver.exe
  9. 不安全的文件下载与上传
  10. kaggle数据集汇总_超全的3D视觉数据集汇总