This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好!
在使用自己制作的bootloader对APP进行线上升级时发现,使用ccs直接生成的.bin文件升级成功后跳转到APP时会进入faultISR,而在CCS直接下载进芯片的APP可以跳转并且正常运行。将可以正常跳转和运行的APP程序从memory中读取出来并保存为.bin文件,用这个读取出来的.bin文件来升级,程序也可以正常跳转和运行。
对比ccs直接生成的bin文件和从memory中读取出来的.bin文件,发现在文件后半段有几处地方有几个字节不相同,并且ccs直接生成的.bin不带.ccfg段。
左边为从memory中读出来的,右边有ccs直接生成的。
请问ccs该如何配置生成可以用于升级的bin文件?
有试着擦除CCFG段之后生成的bin,app可以正常运行吗
ccs生成的.bin文件就没有带ccfg段。无法运行。
没读懂是什么意思
从这里直接将app程序下载进去,程序是可以正常跳转和运行的。
APP是自主研发的吗?
自主研发的。
您使用哪种技术? (Ti WI-SUN FAN 堆栈、TI 15.4 堆栈、专有 RF?)
对于每种技术,我们在用户指南中都有解释 OAD 的章节。我猜你的 bin 文件中缺少的部分是 oad 图像标题。我们使用 python 工具将其添加到文件中。
我们还有 SimpleLink Academy 实验室,可完成执行 OAD 的所有步骤,包括如何准备好图像:
This is intentional.
CCFG 作为引导加载程序示例的一部分包含在内。因此,应用程序映像不应包含 CCFG。
您需要在设备上运行引导加载程序(bim 或 MCUBoot)才能运行支持 oad 的应用程序映像。
您使用哪种技术? (Ti WI-SUN FAN 堆栈、TI 15.4 堆栈、专有 RF?)
用的是专有RF。
对于每种技术,我们在用户指南中都有解释 OAD 的章节。我猜你的 bin 文件中缺少的部分是 oad 图像标题。我们使用 python 工具将其添加到文件中。
我的bootloader是自己制作的,并没有没有去处理image header,应该不需要添加这些头。
是的,CCS 中有一个设置不包括 CCFG,但我还没有测试过。 (因此我们生成 .bin 的构建后步骤只是删除了 CCFG。)
如果您不从启用 OAD 的示例项目开始,我将从以下步骤开始:
- 删除系统配置中的设备配置
- 从链接器命令文件中删除 CCFG 提及
这可能会给你带来一堆构建错误,我还没有测试过。
相反,我会尝试调试为什么您的设备没有按您的预期运行:
- 您的引导加载程序运行正常吗?
- Advanced OAD SimpleLink Academy 中给出了调试引导加载程序和应用程序映像之间跳转的说明:
- 读出设备的内存并检查是否有CCFG(由引导加载程序项目拥有)
- 您的引导加载程序运行正常吗?
可以确认,bootloader运行是正常的,使用从芯片flash中读出来的bin文件是可以正常升级并且升级完成后能够正常跳转运行的。
- 读出设备的内存并检查是否有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处