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.

[参考译文] CC2640R2F:恢复出厂映像?

Guru**** 2589300 points
Other Parts Discussed in Thread: CC2640R2F, CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/605445/cc2640r2f-factory-reset-image

器件型号:CC2640R2F
Thread 中讨论的其他器件: CC2650

您好!

  下面是有关恢复出厂设置映像的一些问题。

  1. 如何生成恢复出厂设置的映像?
  2. 如何在外部闪存地址 0x40000对出厂复位映像进行编程。
  3. 如何调用或执行恢复出厂设置映像。
  4. 如果主应用程序出现故障、例如设备挂起、我是否可以将应用程序设置为执行出厂复位映像?

-克尔

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

    我不确定你在这里到底是什么。 从4)听起来您想使用内部看门狗计时器?

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

    我已阅读片外 OAD 指南。 下面介绍了有关恢复出厂设置映像的内容。

    EFL_OAD_IMG_TYPE_BACTORY -描述了在任何 OTA 更新之前在器件上运行的永久驻留生产映像。

    这意味着在执行片外 OAD 之前、我应该将出厂复位镜像闪存至外部闪存。 但是、在片外 OAD 指南中、没有提到如何生成出厂复位映像或 EFL_OAD_IMG_TYPE_factory。 这就是我询问如何生成出厂复位映像的原因。 我是否需要修改下面的编译后脚本才能将映像恢复为出厂复位映像?

    ${CG_TOOL_HEX}-order MS --memwidth=8 --romwidth=8 --Intel -o ${ProjName}.hex ${ProjName}.out
    ${TOOLS_BLE_DIR}/oad/oad_image_tool ${ProjName}.hex -t offchip -i 应用--imgVer 0 -ob ${ProjName}.bin -m 0x0000 --r 0x0000

    我之所以提出这一问题、是因为我需要定义将固件刷写到 CC2640R2F 产品的过程、该产品将支持片外 OAD。 刷写 BIM、App 和 Stack 后、似乎还需要在外部闪存上刷写出厂复位映像。 是否使用 SmartRF Flash Programmer 2或通过 OAD 在外部闪存上刷写复位映像。 在片外 OAD 指南中没有提到这一点。

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

    您好!

      我已经回答了自己的问题1和2、并回顾了片外 OAD 示例程序。

      对于我的问题3 "如何调用或执行恢复出厂设置映像? 我似乎可以使用 CC2650 SensorTag 项目中的 C 函数 SensorTagFactoryReset_applyFactoryImage()。 但是、我不理解"加载和启动工厂映像"代码是如何工作的。 有人能向我解释一下吗?

    void SensorTagFactoryReset_applyFactoryImage (void)
    {
    SensorTagDisplay_Suspend ();
    
    if (SensorTagFactoryReset_hasImage())
    {
    //指示出厂映像已启动
    #ifdef IOID_GREEN _LED
    PIN_setOutputValue (hGpioPin、IOID_GREEN LED、Board_LED_ON);
    #endif
    //加载并启动出厂映像;必须省略第0页和第31页
    ((void (*)(uint32_t、uint32_t、uint32_t)) bl_offset)
    (EFL_ADDR_RECOVERY + APP_START、//位于外部闪存中
    EFL_SIZE _RECOVERY - 0x2000、//长度
    APP_START); //内部闪存中的位置
    }
    其他
    {
    //指示出厂映像启动失败
    PIN_setOutputValue (hGpioPin、IOID_RED_LED、Board_LED_ON);
    }
    
    SensorTagDisplay_resume();
    } 

    -克尔