1.Bcakground 简介:
- 操作系统: Windows 10
- Code Composer Studio 版本:12.5.0.00007
- 编译器版本:TI v22.6.0.LTS
- 输出格式:eabi (ELF)
- 闪存使用 SEC0和 SEC1、2个闪存扇区的最终程序和数据未满。
FLASH_BANK0_SEC0:origin = 0x080000、length = 0x001000
FLASH_BANK0_SEC1:origin = 0x081000、length = 0x001000
- 由于数据对齐(闪存孔洞)、最终十六进制存在未使用区域
- 我可以生成十六进制文件(例如、 Intel Hex)向右、使用此文件 通过其他工具生成 bin 文件;
- 但我在 直接使用 CCS 生成 bin 文件时遇到一些问题。
2.我尝试过的解决方案:
2.1编译后处理
在编译后处理中使用 tiobj2bin.exe (Properties→Build→Steps→Post-Build Steps):
"${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin "${BuildArtifactFileName}""${BuildArtifactFileBaseName}.bin""${CG_TOOL_ROOT}/bin/ofd2000 "${CG_TOOL_ROOT}/bin/hex2000 "${CCS_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin "
由于 Project 输出格式 为 eabi (ELF)、因此将出现 ERRO
2.2使用 C2000十六进制实用程序
将输出格式设置为 Binary (--binary、-b)、 --memwidth=8 --order=MS --romwidth=16,并生成 bin FIE。
最后的结果是,闪存孔未被填充,编程/数据被写入到第一个 falsh 孔后的错误位置;
2.3 -图像
根据2.2、我在- image 属性中运行并将-- fill 设置为0xFFFF、添加一个描述如下 ROM 的文件(由于8位和16位原因、地址乘以2):
ROM
{
flash_all:org = 0x00100000、len = 0x004000
}
这样、bin 可以生成填补空穴0xFFFF 的正确数据、但未使用编程的保留闪存也设置为0xFFFF。
例如、十六进制 结束 地址为0x081500、二进制文件中地址0x081500至0x081FFFF 中的数据也设置为0xFFFF、但十六进制文件中该地址没有数据。
我希望 bin 文件有未被处理的闪存区域、它可以根据编程大小自动更改。
如何获取需要获取的正确 bin 文件?