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.

[参考译文] CC2642R-Q1:CC2642 — 从多个闪存位置运行单个二进制文件

Guru**** 2539500 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1525823/cc2642r-q1-cc2642---running-a-single-binary-from-multiple-flash-locations

器件型号:CC2642R-Q1

工具/软件:

我目前正在处理一个基于 CC2642 的工程、目的是实现一种固件更新机制、在该机制中、可以将单个二进制映像刷写到任何有效的闪存地址(例如 0x00000 或 0x30000)并从该位置正确执行、而无需重新构建固件或使用不同的链接器脚本。

在这方面,我有几个具体的目标:
•避免在每次部署时维护多个编译或修改链接器配置
•确保无论代码段位于哪个闪存地址、代码段都能正确执行
•将数据段保持为绝对值并保持在固定位置、因为它们是共享的且不依赖于位置

根据我的研究、我了解:
•TI ARM 编译器不支持基于 Cortex-M4 的器件(如 CC2642)的真位置无关代码 (PIC)
•GCC 可以提供与 PIC 相关的标志(例如-FPIC、-fPIE 等)、但没有针对 SimpleLink CC26xx/CC13xx 器件的官方支持或验证
•一种实用的权变措施似乎是使用参数化链接器脚本、并在运行时手动设置 SCB->VTOR 寄存器、以便在跳转到复位处理程序之前重定向到正确的向量表

鉴于此、请您就以下问题提供意见:
1. TI 是否有官方支持或推荐的方法在 CC2642 上实现这种与位置无关的执行模型?
2.手动设置 VTOR 并从备用闪存地址跳转到复位向量是否存在任何已知限制或风险?
3. PIC 工具链或 PIE 版本中是否有对 CC26xx/CC13xx 系列的真正 SDK/SDK(与位置无关的代码和数据)的支持?

非常感谢您的时间和指导。

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

    您好!

    我已经将您的问题分配给了一位专家。 由于许多人在暑假期间外出度假、因此对延误表示歉意。  

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

    您好:

    [quote userid=“567097" url="“ url="~“~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1525823/cc2642r-q1-cc2642---running-a-single-binary-from-multiple-flash-locations TI 是否有官方支持或推荐的方法在 CC2642 上实现这种与位置无关的执行模型?

    否、我们没有官方支持或建议的在 CC2642 上实施此评估的方法。

    [quote userid=“567097" url="“ url="~“~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1525823/cc2642r-q1-cc2642---running-a-single-binary-from-multiple-flash-locations 手动设置 VTOR 和从备用闪存地址跳转到复位向量是否有任何已知限制或风险?

    我们不了解任何风险;但是、它不是 无风险的。 这应该是可能的;但是、我们没有对此进行测试。

    [quote userid=“567097" url="“ url="~“~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1525823/cc2642r-q1-cc2642---running-a-single-binary-from-multiple-flash-locations 在工具链或 PIE 版本中、是否支持对 PIC CC26xx/CC13xx 系列的真正 SDK/SDK(与位置无关的代码和数据)?

    我不相信有任何支持,至少在 ticlang。 您可以在此处找到更多信息:  1.使用 C/C++编译器—TI Arm Clang 编译器工具用户指南。 我还浏览了 IAR 的编译器、但找不到对 PIC 的任何引用。

    此致、

    Nima Behmanesh