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.

[参考译文] MSPM0L1306:有关 EEPROM 仿真和链接器命令文件的问题

Guru**** 2442090 points
Other Parts Discussed in Thread: SYSCONFIG, MSPM0L1306

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1303357/mspm0l1306-questions-about-eeprom-emulation-and-linker-command-file

器件型号:MSPM0L1306
主题中讨论的其他器件:SysConfig

我们计划使用 MSPM0 SDK v1.20.1.6中的"EEPROM 仿真 A 类设计"在我们的应用中实施 EEPROM 仿真。

请提供以下问题的帮助:

  1. SDK 中 EEPROM 示例的链接器命令文件在哪里? 针对 EEPROM 仿真类型 A 设计的 CCS 项目示例没有与它们相关的连接器命令文件、所以它们不会被构建。 请提供链接器命令文件或建议一个可使用的文件。
  2. 我们可以使用什么链接器语法来拆分围绕 EEPROM 仿真扇区的代码存储器分配? 我们希望在较低的32KB 闪存中保留与 EEPROM 仿真相关联的闪存扇区、以利用额外的写入/擦除寿命。 为此、我们修改了链接器命令文件 MEMORY 指令、将64KB 闪存分为三个单独的区域- FLASH_LOW、FLASH_EEPROM 和 FLASH_HIGH。 然后、我们尝试使用链接器">>"运算符将.text 段分配到 FLASH_LOW 和 FLASH_HIGH 中。 但是、MSPM0对闪存字上8字节对齐的要求会阻止使用该运算符。 请参阅以下 来自链接器命令文件的示例摘录、以了解我们要尝试执行的操作。  
    1. palign (8)运算符与 SPLIT 指令冲突、并且链接器会发出以下警告:"#10092-D 分拆放置(>>)已被忽略为".text": 无法使用 PALIGN 运算符拆分对象"

我们将 CCS Eclipse 12.5与 TI Clang v2.1.2.LTS 一同使用。

内存
{

...

FLASH_LOW (RX):origin = 0x00000000、length = 0x000077FF /* FLASH 的前30KB */
FLASH_EEPROM (RX):origin = 0x00007800、length = 0x0000800 /*闪存的 EEPROM 仿真区域。 必须位于底部32KB */
FLASH_HIGH (RX):origin = 0x00008000、length = 0x0000FFF8 /* Flash 上限32KB */

...}

部分
{
……
.text : palign (8){*(.text)}>> FLASH | FLASH_HIGH /*指定程序存储器可在这些存储器区域之间拆分*/

...}

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

    您好!

    我导入了工程、并且工程中有一个 cmd 文件。  

    以及如何定义.text 区域。 我尝试使用以下配置、但没有错误。  

    .text  : palign (8){}> flash_low|flash_high

    此致、

    现金豪

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

    你好、现金。 谢谢你的答复。 您能否确认您测试时使用的是哪个版本的 CCS 和 SDK? 我的设置肯定有问题。  

    关于您共享的链接器语法、这不会拆分.text 段。 使用的语法的效果是、如果.text 不适合 FLASH_LOW、那么它将链接到 FLASH_HIGH。 我们需要的是代码填充 FLASH_LOW 中的所有空间、然后当代码增长超过 FLASH_LOW 的大小时、链接器将拆分该段、然后继续在 FLASH_HIGH 中进行分配。  

    -Ruben  

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

    您好!

    我使用的是 CCS v12.3与 SDK 1.20.00.05。  

    尝试这个没有 palign (8)

     .text:{*(.text)}>> FLASH_LOW | FLASH_LOW1

    此致、

    现金豪

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

    你好、现金。 再次感谢您的帮助。 我对项目1进行了更多的测试、我确认当我从 SDK v1.20.00.05导入示例项目时、那里存在链接器命令文件、即使是使用 CCS12.5也是如此。 这似乎是最新 SDK v1.20.1.6中的项目规格存在的问题。 请将其报告给 MSPM0软件团队以提交 Jira 工单。

    关于链接器格式建议、我确认删除 palign (8)运算符会解析链接器警告并允许拆分.text 段、 但我担心省略 palign (8)运算符可能会导致问题、因为 MSPM0内部闪存总线宽度为8个字节、而 CPU 可能会在该边界上获取代码。 您能否向芯片设计或系统 同事咨询一下、是否对使用 palign (8)有任何功能要求、或者这是否为可选要求?

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

    您好!

    对于 SDK 版本 v1.20.1.6、 它会 将静态.cmd 和 startup 文件移动到 syscfg 生成的文件、

    对于导入到 CCS 中的最新示例、需要定制链接器文件:

    重新编译工程、将/generated Source/device_linker.cmd 文件复制到您工程的根文件夹中。(就像旧版本 SDK 一样)。

    然后禁用 syscfg -> Project configuration files ->连接器文件生成。

    重新构建项目、您可以自行修改链接器文件。

    我可以检查忽略 palign (8)时是否存在问题。 但它需要时间,因为它几乎是圣诞节。

    此致、

    现金豪

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

    现金、

    感谢您对此提供的持续帮助! 我仍然看不到如何继续使用 SDK v1.20.1.6 EEPROM 示例、因为当我将这些示例导入到 CCS 中时、我甚至看不到 SysConfig 文件。 也许我仍然缺少一些关于你所建议的程序。

    关于这个问题,当忽略 palign(8)时,我可以等到圣诞节/新年休息后。 与此同时、我们将尝试在没有它的情况下进行一些测试。

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

    您好!

    明白。 您没有看到 SysConfig 文件。 您可以按照 CCS 的快速入门指南检查安装过程。 它位于默认 SDK 安装路径中。 可与以下命令类似:C:\ti\mspm0_sdk_1_20_01_06\docs\english\quickstart_guides

    此致、

    现金豪

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

    您好!

    我遇到的问题与 您描述的问题相同。 在从各种 SDK 中尝试不同的 EEPROM 示例后、我决定尝试使用"mspm0_sdk_0_57_00_00_eng"版本。 在此示例中、不 需要 SysConfig 文件。 在此版本中、两个工程(A 类和 B 类及其测试)都在 MSPM0L1306芯片中运行(我使用的是 CCSTheia 1.0.0)

    希望这对 您有所帮助。

    此致、

    尼古拉

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

    您好、Nicolas、

     "mspm0_SDK_0_57_00_00_eng"版本用于早期样片 MCU。 不建议在最终的芯片 器件上使用。 请使用 v1.xx SDK 进行测试。

    此致、

    现金豪

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

    现金、您好!

    我正在使用"mspm0_SDK_1_20_01_06"版本来开发我当前的固件、但我已经返回到此版本、因为"1_20_01_06"版的两个 EEPROM 仿真示例都不起作用。

    此致、

    尼古拉

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

    您好、Nicolas。 请注意、 SDK v1.20.00.05中的 EEPROM 示例已正确导入、因此您不必一直返回到早期工程版本。 话虽如此、我认为 EEPROM 示例从一开始就没有改变、因此可能没有问题。 v1.20.01.06中的 EEPROM 示例的 CCS 项目肯定存在错误、并有望将其报告给合适的人员以在下一个版本中进行修复。  

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

    我确认、SDK v1.20.01.06中的 EEPROM 工程中缺少链接器文件的问题与 CCS12.5中过时的器件支持包有关。 将 MSPM0器件支持包更新到 v1.5.0.03后、我能够从 SDK v1.20.01.06导入 EEPROM 示例、其中包含链接器命令文件。 这将解决该线程上的原始问题之一。 谢谢