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.

[参考译文] CC2540:在十六进制文件中为给定地址设置一个固定值

Guru**** 2539500 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/842941/cc2540-setting-a-fixed-value-to-given-address-in-hex-file

器件型号:CC2540

你好!

我已经开发了一个 OAD 映像、我正在使用 SmartRF 闪存编程器对闪存进行初始编程。 映像包含3个部分:bim 映像、映像 A 和映像 B。在 BIM 映像中、我定义了一个变量、用于选择要从中引导的映像。 图像 A 包含主要包含 OAD 功能的图像、而图像 B 包含主代码。 因此、当我想执行 OAD 时、写入一个特征时、我可以从 ImageB 切换到 ImageA。 使用 SmartRF 闪存编程器对器件进行编程后会出现此问题。 有些设备以 ImageA 开头、而另一些设备以 ImageB 开头。 在 BIM 映像中、变量定义为位于地址0x09、也定义为 _no_init。 如果这是由 BIM 映像初始化、我猜开关会失败。 因此、我想唯一的解决方案是将该位置(0x09)设置为十六进制文件中的固定值。  我该怎么做?

有什么建议吗?

此致、

1月

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

    您好、Jan、

    您可以通过在链接器文件中定义所需的存储器段来指定变量的位置(此处为2字节示例):

    -Z (代码) CRC=0x892-0x893 

    然后在您的代码中:    

    #pragma LOCATION ="crc"
    const 代码 uint16校验和= 0x1234; 

    此致、

    R.M.

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

    你好!

    感谢给出的答案、但我认为这不会解决问题。 我想这涵盖了不可修改的值 const 的情况。 但是、在我的情况下、如果需要 OAD 或 OAD 已完成、则会对其进行修改。 这将使 BIM 映像能够在两个映像(A 和 B)之间切换。 或许有一种方法可以解决这个问题。 我在此线程 https://e2e.ti.com/support/wireless-connectivity/bluetooth/f/538/t/398305?HOWTO-Adding-unique-identifier-to-CC2540-CC2541-editing-hex-after-compiling-中看到、python 用于修改闪存内容、但输出格式看起来与输入文件的格式不同。 它可能与英特尔扩展格式有关。

    此致、

    1月

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

     您好、Jan、

    如果您只想更改十六进制文件中的一个值、并且知道地址、我想最简单的方法是在测试编辑器中打开该值并手动更改它。

    有几个测试编辑器具有内置的十六进制编辑器或作为附加组件。

    此致、

    R.M.