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.

[参考译文] MSP430FR5994:IP 封装手动放置?

Guru**** 2777545 points

Other Parts Discussed in Thread: MSP430F5529

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1612712/msp430fr5994-ip-encapsulation-manual-placement

器件型号: MSP430FR5994
主题: MSP430F5529 中讨论的其他器件

您好:

您能否介绍一下将 IPE 部分手动放入指定地址的步骤?

我一直使用“let compiler handle memory partitioning“选项。 现在、我已切换到“Manually Specify memory segment“(手动指定存储器段)选项并在 GUI 中配置了地址。 我需要采取哪些进一步的步骤?

此致、


image.png

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

    您好 Kenan、

    这似乎是 IAR 编译器的一个函数。 我建议您直接联系 IAR、以便加快联系速度。 您可以尝试通过以下电子邮件联系: support.cn@iar.com

    这是他们的技术支持。

    BR、

    Janz Bai

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

    您好 Janz、

    屏幕截图取自 CCS v12.8.1 ;这不是一个特定于 IAR 的功能。 此外、如果您查看下面的文档、您会发现对此功能的详细说明、但其中并未涵盖手动地址放置。

    https://www.ti.com/lit/an/slaa685/slaa685.pdf

    我在几个不同的文档中看到了部分信息、但我相信这应该可以在 CCS 中实现。

    此致、

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

    您好 Kenan、

    很抱歉、我误解了您的意思。 让我把这篇文章发送给负责 IDE 和编译器的 SDTO 团队,请他们发表意见。

    BR、

    Janz Bai

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

    Kenan — 我假设您希望在链接器命令文件中手动执行此操作。 这是器件专家可以提供帮助的地方。 我将提请他们注意这一问题。

    谢谢

    Ki

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

    您好 Kenan、

    我认为本应用手册可能会对您有所帮助、您可以了解以下内容:

    MSP 代码保护功能

    此致、  

    Janz Bai

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

    这是我在上一次答复中分享的文件。  SLA-685 不提供完整的、可复制粘贴的链接器命令文件或端到端的分步过程、该过程说明如何将 IPE 重定位到特定的绝对地址。

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

    您好 Kenan、

    很抱歉、我们现在确实有了这些材料。 我认为“让编译器处理内存分区“更简单、让我们无需花时间手动处理它。 为什么需要手动指定存储器?  

    我认为你和我分享的图中的操作是可以的,但也许你需要做一些测试,并尝试在你的身边。

    此致、  

    Janz Bai

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

    尊敬的 Janz:

    我同意、“让编译器处理存储器分区“非常方便、避免了手动内存管理。 我担心的不是手动定义 IPE 存储器布局、而是关于手动定义 IPE 存储器布局的问题
    使用 OTA 更新时解决跨编译的稳定性问题

    在我的系统中、OTA 更新仅替换现场的应用程序代码。 FRAM 中的 IPE 区域在器件上保持不变。 应用程序直接调用 IPE 函数(普通 C 函数调用)。

    我的担心是:
    如果编译器/链接器将 IPE 函数放在跨编译版本的不同地址处、则可以对照不同于器件上实际存在的 IPE 函数地址来链接新的应用程序映像(稍后构建)。 在这种情况下、在 OTA 之后、新应用程序可能会跳转到 FRAM 内的错误地址、从而导致未定义的行为。

    因此、这并不是我们真正喜欢的架构、而是产品的硬性要求:在现场、OTA 更新只能更新应用程序、而 IPE 区域必须保持不变。

    我认为对于许多使用 IPE 的产品来说、这是一个非常常见的实际场景、 许多用户可能会遇到这种情况。  在如何安全处理方面获得 TI 的明确指导或官方推荐的方法非常重要。

    此致、

    Kenan Onat Kaplan

     

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

    您好 Kenan、

    我明白了您的意思、因此关键点是如何修复这些函数的地址。 您能否尝试查看下面的链接、看看它是否能为您提供帮助:

    2.7.2.函数属性—TI Arm Clang 编译器工具用户指南

    BR、

    Janz Bai

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

    您好 Janz、

    我需要进行更正:

    关键不是如何修复单个函数或一组函数的地址。 即使 I 引脚特定功能转换到固定地址、如果 IPE 基地址发生变化、这些函数最终也会超出 IPE 区域、并且无法再正确执行。 因此、需要固定的是 IPE 区域本身(底座和大小) 而不是放置在其中的单个元素。

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

    您好 Kenan、

    感谢您的耐心解释。 我可以理解您的目标。  很抱歉、我们只提供了您分享的材料: 适用于 MSP430 MCU 的 Code Composer Studio IDE v10.x(修订版 AS)。 我在线搜索了以下步骤、也许您可以尝试一下。 希望这能对您有所帮助。 我很抱歉,我没有更多的方法来做到这一点。 因为“手动设置“通常不使用、所以我们没有更多的材料。

    2.标记 IPE 代码部分

    与 IAR 类似、您需要告诉编译器应封装哪些函数:

     
    

    3.手动指定 IPE 部分的放置

    此步骤涉及编辑  链接器命令文件 (.cmd)

    步骤 1:打开.cmd 文件

    1. 在 Project Explorer 中、展开  调试   提供  文件夹。
    2. 找到带有 .cmd 扩展名的文件(例如)、 MSP430F5529.cmd然后双击以将其打开。

    第 2 步:定义存储器区域

     MEMORY  .cmd 文件中找到此块并为 IPE 代码添加一个新的存储器块:

     
    

    步骤 3:映射 IPE 部分

    找到 SECTIONS 块并将 .myipe 部分映射到 IPE_FLASH 您刚刚定义的区域:

     
    

    步骤 4:保存并重建模型

    1. 保存 .cmd 文件。
    2. 性能 ‍“工程→清理“ ‍然后是 ‍“Project→Build“ ‍以确保新的链接器脚本生效。

    4.验证 IPE 的放置

    构建后、检查生成的 .map 文件:

    •  Debug 文件夹中、找到 .map 扩展名为的文件。
    • 打开它并搜索 .myipe。 验证其  载入地址  与您设置的地址匹配(例如) 0x010000

    BR、

    Janz Bai