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.

[参考译文] RTOS/CC2640R2F:如何在运行时更改 CCFG 参数?

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/647417/rtos-cc2640r2f-how-do-i-make-changes-to-the-ccfg-parameters-at-runtime

器件型号:CC2640R2F

工具/软件:TI-RTOS

您好!

在编译时、我通过在 ccfg.c 文件中设置适当的宏来禁用 CCFG 表中的引导加载程序访问。 但是、我希望能够在运行时更改 CCFG 表、以便能够随意访问引导加载程序和引导加载程序后门、从而允许我执行固件升级。 最后、固件升级完成后、我想再次禁用引导加载程序访问、直到执行另一个固件升级。 我有几个问题:

  1. 假设扇区31 (即 CCFG 所在的闪存区域)未锁定、是否可以在运行时更改 CCFG 表?
    1. 如何在保持其他参数不变的同时覆盖 CCFG 表的 BL_CONFIG 参数? 我假设我需要复制 CCFG 表、擦除其所在的扇区、然后使用我修改的 BL_CONFIG 参数重写该表。 是否有某种 API 可用于避免这一切? 我认为 osal_SNV_WRITE 仅适用于闪存的 SNV 区域。

谢谢、

Keron

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

    您可以使用 HalFlashWrite 编写单个闪存字、但是、您只能为字中的任何特定位将1写入0。 没有专用的 CCFG 写入 API、您需要使用平台闪存 API 来编写这些 API。

    在运行时擦除已部署器件的 CCFG 具有相当大的风险、除非您有方法从 SPI/UART 接口本地重新编程 CC26xx。 严格地说、擦除 CCFG 扇区(闪存第31页)并重新启动将使器件进入 ROM 引导加载程序模式、因为 IMAGE_VALID 将为1 (无效)。

    祝你一切顺利
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我肯定会避免更改 CCFG 运行时的值。 建议在生产编程期间锁定此闪存页面。 如果您需要动态启用引导加载程序、我将查看我们的闪存实现、您将在 SimpleLink GitHub 页面上找到该实现。

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

    谢谢 JXS。 此信息非常有用。

    Keron

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

    感谢您对锁定闪存平台以进行生产的建议。 我肯定想使用某种基于闪存的实现来动态启用引导加载程序。 我转到了 ti-simplelink/ble_examples repo 下的 SimpleLink Github 页面、但我找不到您所指的引导加载程序实现。 您所指的引导加载程序是否与 SDK 的 OAD 示例中使用的引导映像管理器(BIM)相同?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Keron、

    它似乎只在 ble_examples_2.2分支上提供: github.com/.../ble_examples-2.2

    谢谢、
    Fredrik