基于 TI 15.4 Stack 和 OAD 代码、我正在尝试在 OAD 应用中消除对 BIM 的需求(具体而言、我使用了其中一个传感器示例作为起点)。 我尝试进行无线更新、其中一个 FW 映像是用于 FW 更新过程本身的永久 FW 映像、另一个 FW 映像是通过无线更新可替换的 FW 映像。
我尝试从 我的持久性固件映像中使用 BIM 中的 jumpToPrgEntry()函数跳转至我加载到 MCU 闪存中的另一个 FW 映像 如果我从 任务/线程中调用 jumpToPrgEntry()在持久性固件中启动 RTOS 内核后,我立即进入故障处理 程序 Main_assertHandler()。 如果我在 RTOS 内核通过 BIOS_start()调用启动之前从持久性 FW 映像中的主函数调用 jumpToPrgEntry(),则我的 OAD FW 映像会正常执行。
jumpToPrgEntry() 的外观如下所示,供您参考:
prgEntry +=4;
uint32_t *项=(uint32_t *)&prgEntry;
_asm volatile (“LDR R2,[%0]\n\t”:“R”(条目));
asm (" LDR.W R2、[R2]");
//重置堆栈指针,
asm (" LDR SP、[R0、#0x0]");
asm (" BX R2 ");
通常可以在 RTOS 内核运行后调用此函数吗? 还是最好在调用永久性固件映像中的 BIOS_start()以跳转到 OAD 固件映像之前调用它?