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.

[参考译文] CC1352R:更新 FW 后、从一个 FW 映像跳转到另一个

Guru**** 2568565 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/948008/cc1352r-jumping-from-one-fw-image-to-another-after-fw-update

器件型号:CC1352R

基于 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 固件映像之前调用它?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Michael、  

    指派专家进行评论。  

    谢谢、  
    ELIN

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Michael、

    您是否看到了片上 OAD 项目? 在此配置中、有一个持久映像和一个可由 OAD 替换的映像。 在任何情况下、您都需要使用引导加载程序来处理编程部件。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Marie、

    是的、我查看了 OAD 项目、并确定它对于我所需要的来说太复杂了。

    我仍然有一个用于处理编程部分的永久固件映像。  我只需要了解为什么持久映像不能跳转到 OAD 映像而不重新启动到"裸机"代码。  在我的情况下,在调用 BIOS_start()之前,持久映像基本上是“裸机”。  调用 BIOS_start()后,由于某种原因,我将失去跳转到 OAD FW 映像的能力。  这是有原因的吗?  除了重新启动到"裸机"代码之外、是否还有针对此问题的权变措施?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Michael、

    很抱歉耽误你的回答。

    使用 jumpToPrgEntry()没有限制。 您应该能够从持久应用程序中使用它。 要进行调试、请检查以下各项:

    1) jumpToPrgEntry()之后 ,是否能够在调用断言之前到达映像的 main()?

    2) 2)仔细检查 OAD 图像标题是否有错误

    3) 3)仔细检查您要跳转到的图像。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我最终使用内置的引导加载程序构建了一个永久映像、该引导加载程序决定了要运行哪个 FW 映像(它跳转到 OAD 映像或继续运行)、 对于跳转到 OAD 映像的问题、我的权变措施是在启动持久性映像中的 RTOS 内核/调度程序之前执行的。