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.

[参考译文] MSP432E401Y:与 ORG 类似的汇编器指令

Guru**** 656470 points
Other Parts Discussed in Thread: MSP432E401Y, TM4C1294NCPDT
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1134875/msp432e401y-assembler-directive-similar-to-org

器件型号:MSP432E401Y
主题中讨论的其他器件: TM4C1294NCPDT

您好!

我在 CCS 中编写汇编代码、我希望能够将代码放置在存储器中的特定位置。  对于之前使用的汇编器、我能够使用汇编器指令 ORG 来实现这一点、但我在文献中没有看到任何在 CCS 中为我提供相同功能的东西。

有人知道我是否可以在 CCS 中使用类似的汇编器指令?

感谢您的任何回答。

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

    汇编器不会决定代码在存储器中的位置、而是由链接器决定。 您可以将相关代码与.sect 放在单独的段中、然后告诉链接器使用项目中的.cmd 文件将该段放置在所需的位置、方法是分离存储器区域或使用">[address]"。

    这里有更多详细信息:

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1098592/msp432e401y-assembly-code-org-directive

    如果您可以解释您的总体目标、则可能有更简单的方法来实现它。

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

    我假设您使用 TI 专有的 Arm 工具链。  如果您使用不同的工具链、则概念相同、但一些较低级别的详细信息不同。

    [引用 userid="470468" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1134875/msp432e401y-assembler-directive-similar-to-org "]如果有类似的汇编器指令、我可以在 CCS 中使用?[/quot]

    否  它不是这样工作的。

    要了解其工作原理、 请在 TI ARM 汇编工具手册 中搜索标题为 "目标模块简介"的章节。  有关链接器命令文件的介绍、请参阅文章 链接器命令文件入门

    谢谢、此致、

    乔治

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

    布鲁斯:

    这是我的总体目标、我希望创建一个代码块、该代码块无法通过内存保护单元(slau723a 的第2.2.4节)或只读保护(slau723a 的第7.2.6.6节)进行读取或复制。

    我的理解是受保护的存储器块不能包含任何字面量数据、因此我的计划是创建一些没有文字数据的代码、并将其放置在存储器中的特定位置、以防止其被复制。

    顺便说一下、我仍然不清楚哪种方法更好-使用内存保护单元或使用只读保护-以创建一个无法读取或复制的代码块。 您对此提供的任何见解也会非常有帮助。

    再次感谢您的帮助。

    Brad

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

    MPU 在运行时进行配置、因此如果攻击者可以启动调试器(在复位时)、则 MPU 未配置、该块可读。 从您的描述中、您似乎并不感兴趣。

    读取保护应用于闪存块本身、因此始终有效。 只能使用一个出厂复位(包括一个批量擦除)来清除它。

    我对读保护机制没有任何经验、但我确实找到了 SPMA044A 文档、其中描述了一个示例:

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

    这些步骤或多或少与您的想法相同:

    1)将常量保留在.text 之外(生成设置->生成->编译器->高级->指定是否可以嵌入常量)

    2) 2)使用该选项重新构建运行时库

    3) 3)在链接器.cmd 文件中分割一个存储器段(在闪存块边界上)并将.text 放置在那里。

    4)调用 FlashProtectSet(),后跟 FlashProtectSave()。 这只需执行一次(加载最终代码)。

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

    Bruce、

    回复:spma044a: 这看起来正是我要实现的目标。 谢谢!  它说它适用于 Stellaris 微控制器。 我假设这些函数适用于我正在使用的 MSP432E401Y。

    我想尝试一个测试实现来了解它的工作原理、但有一个问题对我来说并不清楚。 在第32页、它显示"请注意、通过使用 LM 闪存编程器执行调试端口解锁序列、可以将闪存保护设置重置为其出厂默认配置"。

    我使用的是 CCS 11.2.0、我不清楚如何执行调试解锁序列。 LM 闪存编程器是否是一个不同的程序?

    感谢您的回答。

    Brad

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

    您好!

     请按照此应用手册的第5.3.1节解锁器件。  https://www.ti.com/lit/pdf/slaa777

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

    我使它正常工作。  感谢大家的帮助。

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

    要回答您的另一个问题:MSP432E401Y 确实是 Tiva (TM4C1294)、它是 Stellaris 系列的衍生产品、而 Stellaris 系列则是 Luminary Micro LM3S 系列的衍生产品。 我在 TM4C1294NCPDT 产品页面上找到了该文档、并阅读了其他一些有趣的内容。

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

    微控制器产品系列。