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.

[参考译文] MSP430F4616:是否有办法将代码分开到闪存的两个区域中。

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1226795/msp430f4616-is-there-a-way-to-seperate-code-into-two-areas-of-the-flash-memory

器件型号:MSP430F4616

您好!

 我的应用程序代码大小很小(约6K)。 我想将大部分代码放置在闪存的较低部分、但是希望将几个 ISR 和一个 BSL 程序驻留在较高的存储器位置、例如从 0xA000开始? 是否有一种简单的方法可以做到这一点、或许可以使用链接器指令?

谢谢

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

    您好、Jerry。

    是的、您可以创建特定段来帮助将存储器分区到指定的位置。  您需要查看《 MSP430优化 C/C++编译器用户指南》、该指南有助于提供有关链接器和编译器的一些详细信息。

    具体而言、我会介绍如何创建和使用数据段和/或代码段(请参阅第4.3.8和5.11.30节)。 您可以编辑链接器文件(.cmd 文件)来帮助执行此操作。

    此致、

    Luke

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

    当然,你可以,但它可能是更困难,你认为。

    编译器能够将函数分配给链接器脚本可以将其放置在特定位置的已命名段。 但是、这些函数所使用的库代码会怎样呢? 你无法控制它。 更糟糕的是、虽然可以避免对库代码的显式引用、但编译器可以并将针对某些操作在库代码中调用。 防止这种情况的唯一方法是避免这些操作。

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

    感谢 Luke 和 David。

    我尝试了#pragma 指令、它完全符合我的要求。 我正在做的是编写一个始终驻留在上部存储器中的定制 BSL (用于现场升级)、只使用函数从 PC (通过连接到 UART 的 USB 桥接 IC)读取 TI.txt 文件并将其存储在上部未使用的存储器中。 然后,如果它被正确下载(校验和匹配),然后我可以擦除较低的内存应用程序,并移动文件数据替换它. 我知道你有具体的例子,在定制 BSL ,然而,它是为不同版本的微控制器和花了很多小时尝试和配置它4616 失败, 我发现它更容易写我自己。  

    我将检查并确认未在必须执行的例程中的较低内存中使用任何代码。

    再次感谢!