Part Number:CC1311R3Other Parts Discussed in Thread:WI-SUN
你好!
在使用自己制作的bootloader对APP进行线上升级时发现,使用ccs直接生成的.bin文件升级成功后跳转到APP时会进入faultISR,而在CCS直接下载进芯片的APP可以跳转并且正常运行。将可以正常跳转和运行的APP程序从memory中读取出来并保存为.bin文件,用这个读取出来的.bin文件来升级,程序也可以正常跳转和运行。
对比ccs直接生成的bin文件和从memory中读取出来的.bin文件,发现在文件后半段有几处地方有几个字节不相同,并且ccs直接生成的.bin不带.ccfg段。
左边为从memory中读出来的,右边有ccs直接生成的。
请问ccs该如何配置生成可以用于升级的bin文件?
tang y:
试着先ccs直接下载,然后在不擦除ccfg段的情况下用ccs直接生成的bin文件进行升级,APP还是不能正常运行。
,
Galaxy Yue:
你好,
你的图片无法点开查看
麻烦重新发一下
tang y 说:而在CCS直接下载进芯片的APP可以跳转并且正常运行
没读懂是什么意思
tang y 说:然后在不擦除ccfg段的情况下用ccs直接生成的bin文件进行升级,
有试着擦除CCFG段之后生成的bin,app可以正常运行吗
APP是自主研发的吗?还是使用的TI TOOLS
,
tang y:
Galaxy Yue 说:有试着擦除CCFG段之后生成的bin,app可以正常运行吗
ccs生成的.bin文件就没有带ccfg段。无法运行。
Galaxy Yue 说:没读懂是什么意思
从这里直接将app程序下载进去,程序是可以正常跳转和运行的。
Galaxy Yue 说:APP是自主研发的吗?
自主研发的。
,
Galaxy Yue:
您使用哪种技术? (Ti WI-SUN FAN 堆栈、TI 15.4 堆栈、专有 RF?)
对于每种技术,我们在用户指南中都有解释 OAD 的章节。我猜你的 bin 文件中缺少的部分是 oad 图像标题。我们使用 python 工具将其添加到文件中。
https://dev.ti.com/tirex/explore/node?node=A__AHaph7YfvcrVy2cDlmb4sQ__com.ti.SIMPLELINK_CC13XX_CC26XX_SDK__BSEc4rl__LATEST&placeholder=true
我们还有 SimpleLink Academy 实验室,可完成执行 OAD 的所有步骤,包括如何准备好图像:
https://dev.ti.com/tirex/explore/node?node=A__AEIJm0rwIeU.2P1OBWwlaA__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST&placeholder=true
,
Galaxy Yue:
This is intentional.
CCFG 作为引导加载程序示例的一部分包含在内。因此,应用程序映像不应包含 CCFG。
您需要在设备上运行引导加载程序(bim 或 MCUBoot)才能运行支持 oad 的应用程序映像。
,
tang y:
Galaxy Yue 说:您使用哪种技术? (Ti WI-SUN FAN 堆栈、TI 15.4 堆栈、专有 RF?)
用的是专有RF。
Galaxy Yue 说:对于每种技术,我们在用户指南中都有解释 OAD 的章节。我猜你的 bin 文件中缺少的部分是 oad 图像标题。我们使用 python 工具将其添加到文件中。
我的bootloader是自己制作的,并没有没有去处理image header,应该不需要添加这些头。
,
tang y:
我试过将生成的bin删去最后的88个字节的CCFG,但还是不行。ccs中能直接配置生成的bin文件不包含ccfg段吗?
,
Galaxy Yue:
为您跟进处理,有进展会通知您的
,
tang y:
好的、谢谢
,
Galaxy Yue:
是的,CCS 中有一个设置不包括 CCFG,但我还没有测试过。 (因此我们生成 .bin 的构建后步骤只是删除了 CCFG。)
如果您不从启用 OAD 的示例项目开始,我将从以下步骤开始:
– 删除系统配置中的设备配置
– 从链接器命令文件中删除 CCFG 提及
这可能会给你带来一堆构建错误,我还没有测试过。
相反,我会尝试调试为什么您的设备没有按您的预期运行:
– 您的引导加载程序运行正常吗?
– Advanced OAD SimpleLink Academy 中给出了调试引导加载程序和应用程序映像之间跳转的说明:
https://dev.ti.com/tirex/explore/node?node=A__AdzaR5YxHU3-EzX70EuRBg__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST&placeholder=true
– 读出设备的内存并检查是否有CCFG(由引导加载程序项目拥有)
,
tang y:
Galaxy Yue 说:- 您的引导加载程序运行正常吗?
可以确认,bootloader运行是正常的,使用从芯片flash中读出来的bin文件是可以正常升级并且升级完成后能够正常跳转运行的。
Galaxy Yue 说:- 读出设备的内存并检查是否有CCFG(由引导加载程序项目拥有)
在可以正常跳转和运行的bootloader+app中,有3处ccfg,
bootloader分配的地址为0x0 – 0x9FFF;
app地址为0xA000 – 0x13FFF;
flash总大小为0x0 – 0x57FFF;
从bootloader程序中进入DEBUG,可以在memory browser中看到在上面3个区域的最高地址处(0x9FA8,0x13FA8,0x57FA8)分别都有一段CCFG;
其中0x57FA8处的ccfg段是额外写入的,否则bootloader无法正常运行。
而在无法正常运行的、CCS直接生成的app bin文件中,CCFG段放在了0x7DA8处(这是app编译出来的程序实际的大小),升级时写入芯片中也就是放在了0xA000+0x7DA8 = 0x11DA8处