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.

[参考译文] 编译器/TMS320F28027:如何将两个区域合并为一个?

Guru**** 2563960 points
Other Parts Discussed in Thread: SFRA

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/701450/compiler-tms320f28027-how-to-merge-two-areas-into-one

器件型号:TMS320F28027
主题中讨论的其他器件:SFRA

工具/软件:TI C/C++编译器

你(们)好

我想将 RAM 中的两个存储器区域合并为一个。  我如何告知链接器执行此操作?  例如以下 cmd 文件的代码片段。

第1页:

/*数据存储器*/
/*内存(RAM/FLASK/OTP)块可被移动至 PAGE0以进行程序分配*/
/*寄存器保留在第1页中*/

RAMM0:origin = 0x000050、length = 0x0003B0
RAMM1:origin = 0x000400,length = 0x000400
DataRAM:origin = 0x008800,length = 0x000800
FLASHB:origin = 0x3F4000,length = 0x002000

我想将 DataRAM 与 RAMM1合并并将其称为 DataRAM、RAMM1将会减少。 这是一个不同的起点。 我该怎么做?

我希望这个新领域将用于:

/*分配未初始化的数据段:*/
.stack:>RAMM0,page = 1.
.ebss:> DataRAM,page = 1.
.esysmem:> DataRAM,page = 1.
SFRA_IQ_Data:> DataRAM,ALIGN = 64,PAGE = 1

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

    您好!

    查看此 wiki 文章:

    此致、

    Gautam

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

    我能够将这些区域在地址空间中彼此相邻时合并在一起。 但是、如果存储器区域位于不同的位置、我无法获得正确的结果。 我接下来尝试了:
    ebss :> DataRAM | RAMM1, PAGE = 1.

    ebss :>> DataRAM | RAMM1, PAGE = 1.

    两种变体都不会产生错误。 但是、当存储器中的数据超过其中一个区域的大小时、链接器会给出错误、并且不希望将数据拆分为下一个区域。
    我不知道如何解决这个问题。