Part Number:LAUNCHXL-CC26X2R1Other Parts Discussed in Thread:UNIFLASH
修改生成HEX文件起始和结束位置从而控制烧录位置
Nick Sun:
您好,
由于工程大小的不同,您无法控制结束位置地址。
起始地址的修改,您可以进您的工程文件找到.cmd文件并打开(CCS中),找到其中这一部分
按住Ctrl+鼠标右键点击FLASH_START,会跳转到
再按住Ctrl+鼠标右键点击FLASH_BASE,会跳转到
您可以修改这个位置的地址值。
具体FLASH的地址范围您可以查看CC13x2, CC26x2 SimpleLink Wireless MCU Technical Reference Manual (Rev. F)其中的Memory Map查看具体参数,如图:
希望可以帮助到您。
,
疾风亦有归途:
经对比发现OAD文件的CMD文件没有在CCS中,是直接在Demo OAD目录下修改CMD吗?
2、我试了一下出现很多错误,怎样修改最简单呢?还是仿照OAD工程CMD修改?
,
Nick Sun:
您好,
OAD的话您可以查看:Loading a Production Image,在Uniflash中烧录.bin文件后选择修改Load Addr。
,
疾风亦有归途:
您好!我希望是指定simple_peripheral/simple_central/multi_role等工程HEX在指定FLASH位置,但是CMD文件修改起来比较麻烦,单纯的修改FLASH_BASE/END都会报错,有什么参考或者快捷办法?
,
Nick Sun:
您好,
这样的话比较简单的方法就是结合OAD项目的经验。
将输出的文件转换成.bin文件,再将其通过UNIFLASH烧录到板子,.bin文件在UNIFLASH中需要指定地址。
您可以参考:https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/963977/launchxl-cc26x2r1-bluetooth-forum 这个帖子,在CCS中添加一个后处理的脚本将输出文件转换为.bin文件。
,
疾风亦有归途:
您好!
增加脚本这个办法我试过了,之前还问过您
e2echina.ti.com/…/launchxl-cc26x2r1-demo-simple_central-bin
,
Nick Sun:
您好,
这个和OAD的bin文件生成不是一个脚本,查看脚本位置能发现这个是在CCS文件夹中并不是SDK中(和OAD的bin生成文件不同),调用了一个tiobj2bin的脚本。
,
疾风亦有归途:
在CCS step中添加了这个命令 :
"${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/armofd" "${CG_TOOL_ROOT}/bin/armhex" "${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin"
报错如下:
也修改tiobj2bin.bat中ofd470 以及470相关改为2642/26×2均失败
,
Nick Sun:
您好,
我这边测试后(CCS12.3)发现也有问题,需要修改相关路径程序名,我在后处理step里修改后添加如下:"${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/tiarmofd" "${CG_TOOL_ROOT}/bin/tiarmhex" "${CCS_INSTALL_ROOT }/utils/tiobj2bin/mkhex4bin"
,
疾风亦有归途:
经验证没有报错,但是做出来的BIN比HEX还大,这个应该是有问题的吧?
,
Nick Sun:
您好,
这个是有可能的。
您可以查看这个帖子:https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1183567/tms320f28035-the-size-of-out-file-bin-is-bigger-than-hex?tisearch=e2e-sitesearch&keymatch=bin%25252525252520hex#
大概意思是memory map里面有空洞,唯一的解决办法就是去填充它,所以会导致这种情况。具体你可以查看这篇文档:An Introduction to Binary Files.
,
疾风亦有归途:
按照提示生成了BIN但是大小没变。。。。
我更改了刷写Bin的位置,结果导致如图,然后也按照提示Forced mass erase恢复,结果重新上电后依旧被锁。
,
Nick Sun:
您好,
疾风亦有归途 说:按照提示生成了BIN但是大小没变
根据什么提示做了什么修改吗?
疾风亦有归途 说:更改了刷写Bin的位置,
是更改了烧录起始地址吗?您是在哪里(软件)设置的相关配置?被锁又是什么情况?
,
疾风亦有归途:
Nick Sun 说:根据什么提示做了什么修改吗?
用链接中的objcopy工具做的如下图,但是Bin的尺寸没变。
Nick Sun 说:是更改了烧录起始地址吗?您是在哪里(软件)设置的相关配置?被锁又是什么情况?
更改了烧录的起始地址,就变成这样了
,
Nick Sun:
您好,
您的地址烧录地址是多少,位置是在给定的范围之内吗?如果烧到类似于CCFG区域的话可能导致文件损坏。
,
疾风亦有归途:
起始:0x00028000
bin Size:352KB
应该是烧写到CCFG了,还有办法恢复吗?
,
Nick Sun:
您好,
您使用的是什么烧录软件?有尝试过Uniflash下的erase entire flash吗?
,
疾风亦有归途:
我使用上图办法,没有恢复,我试下您提供的方法,但现在没办法验证
,
Nick Sun:
您好,
您尝试使用以下Uniflash是否能擦除成功,期待您的跟进。
本问题和该帖子主题无关,也希望您可以重新开一个帖子论述相关问题。
,
疾风亦有归途:
疾风亦有归途 说:用链接中的objcopy工具做的如下图,但是Bin的尺寸没变。
我就执行了上图命令,生成的BIn还是352kb,我该怎样去除空洞?我看连接里面也是上图命令。
Nick Sun 说:
您好,
您尝试使用以下Uniflash是否能擦除成功,期待您的跟进。
本问题和该帖子主题无关,也希望您可以重新开一个帖子论述相关问题。
新帖路径:e2echina.ti.com/…/launchxl-cc26x2r1-flash
,
Nick Sun:
您好,
我这边又研究了一下那一份文件,最后的example只是介绍如何生成二进制文件(.bin),并没有说可以去除空洞。所以您生成的.bin文件和通过后步骤生成的大小是一样的(这是肯定的,因为他们都是调用了同一个路径下的同一个工具去生成的)。
关于hole的问题只有在文档中的有介绍,也只有从理论上讲述了如何避免空洞。