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.

[参考译文] CC2745R10-Q1:通过 OAD 在闪存存储器中的自定义位置下载映像

Guru**** 2487425 points
Other Parts Discussed in Thread: UNIFLASH, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1552994/cc2745r10-q1-downloading-an-image-over-oad-at-a-custom-location-in-the-flash-memory

器件型号:CC2745R10-Q1
Thread 中讨论的其他器件:UNIFLASHSYSCONFIG

工具/软件:

我正在尝试使用 CC2745R10 中的 SSB 实现双映像 OAD。 我已经使用 Uniflash 刷写了 SSB (.bin) 和主应用程序 (.hex)。 我希望将 SSB 和辅助应用程序的组合映像存储在主映像之后的闪存中。 因此、布局如下所示:

SSB0

应用 0

SSB1

App1

在 OAD 之后、SSB1 和 App1 应该是活动分区。

我可以构建两个映像:一个用于新 SSB(起始地址为 0x0、但我希望将此映像存储在 App0 之后)、一个用于辅助应用(考虑上述布局时采用寻址方式)。 我组合了相应的.bin 文件以创建单个二进制文件。 但是、当我尝试从移动应用执行 OAD、然后尝试读取 主映像之后的存储器位置时、它全部为 0xFF。   按照建议、我使用了适用于 APP 和 SSB 的 SDK 示例中提供的 test_keys、还为我要在其中存储 SSB1 和 App1 的整个闪存部分创建了一个 NVS 区域。

这是否遗漏了一些东西或采用了不同的方法?

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

    您好:

    只能有一个 SSB 插槽。 因此、闪存布局必须如下所示:

    SSB

    APP0

    App1

    在您的情况下、由于安全启动只能有一个 SSB、因此它很可能不会考虑另一个 SSB 是否有效并将其删除。

    以下是我的建议:

    1.删除第二个 SSB,并匹配上面的闪存布局。  

    2.不要使用 SSB、而是将自己的引导加载程序集成到应用程序映像中。 为此、请从 SysConfig 中删除 SSB 插槽、并将该 SSB 代码集成到主应用程序代码中。 它们现在应包含在一个.hex 文件中:

    Bootloader0App0.hex -->由安全启动签名

    Bootloader1App1.hex -->由安全启动签名。

    现在、当器件启动时、它将引导至 App0(或 App1,任何版本号最高的映像)的引导加载程序。  

    如果您还有其他问题、敬请告知。

    此致、

    Nima Behmanesh

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

    您好:  

    通过集成 引导加载程序代码和应用程序代码、您是指使用 srec_cat 等工具附加各个文件 (bootloader0.hex 和 app0.hex)、然后对合并的映像签名吗?

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

    您好:

    是的、您的理解是正确的。

    此致、

    Nima Behmanesh

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

    您好:  
    我为引导加载程序代码和应用程序代码生成.bin 文件、并使用 srec_cat 合并它们。 但是、在使用 sbtool 对它们签名时、它会考虑错误的插槽大小(仅限第一个映像的插槽大小)。 是否有不同的方式来签署合并的图像?

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

    您好:

    插槽的大小应足够大、以涵盖引导加载程序和应用程序代码。 您的 SysConfig 文件中应仅配置两个插槽且未配置 SSB。

    1.组合引导加载程序和映像。 我的意思并不是拥有两个.hex 文件并将它们组合在一起、而是说它们应该在同一个工程中并编译为一个.hex 文件、而无需通过 srec_cat 将它们组合在一起。

    2.为组合映像签名、确保其包含整个引导加载程序和映像。

    有道理吗? 如果它不请让我知道,我可以尝试重新表述和阐述我的意思。

    此致、

    Nima Behmanesh