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.

[参考译文] MSPM0G3507:警告#10092-D:对于".text":无法使用 PALIGN 运算符拆分对象、已忽略拆分放置(>>)

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1387181/mspm0g3507-warning-10092-d-split-placement-ignored-for-text-cannot-split-object-with-palign-operator

器件型号:MSPM0G3507

工具与软件:

尊敬的 Supportteam:

我们正在 MSPM0g3507上使用次级引导加载程序。 我们修改了工程的.cmd 文件、如下所示:

小程序

Flash (RX):origin = 0x00000000、length = 0x00001000
FLASH2 (RX):origin = 0x00004000、length = 0x0001C000
SRAM (rwx):origin = 0x20200000、length = 0x00008000
BCR_CONFIG (R):origin = 0x41C00000、length = 0x00000080
BSL_CONFIG (R):origin = 0x41C00100、length = 0x00000080

}

部分中)

.intvecs:> 0x00000000
.text : palign (8){}>> FLASH2.

.const : palign (8){}> FLASH | FLASH2.
.cinit : palign (8){}> FLASH2.
pinit : palign (8){}> FLASH2.
.rodata : palign (8){}> FLASH2.
.arm.exidx:palign (8){}> flash | FLASH2.
.init_array : palign (8){}> flash | FLASH2.
.binit : palign (8){}> flash | FLASH2.
.TI.ramfunc:load = flash、palign (8)、run=sram、table (BINIT)

.vtable :> SRAM
.args :> SRAM.
.data :> SRAM
. bss :> SRAM
.sysmem :> SRAM.
.stack:> SRAM (高电平)

. BCRConfig :{}> BCR_CONFIG
. BSLConfig :{}> BSL_CONFIG
}

这将导致上述警告:  

警告#10092-D:".text"的拆分位置(>>)被忽略:无法使用 PALIGN 运算符拆分对象

并且完整的目标代码始终放置在引导加载程序后面、不可能将前4KB (0x1000)用于.text、因此我们得到:
名称源长度已使用未使用属性填充
--------------- --- --- --- --- ---
闪存00000000 00001000 000003a8 00000c58 R X
FLASH2 00004000 0001c000 00003eb0 00018150 R X

这意味着闪存区域中有3160个未使用的字节。  

我的配置是否有简单的解决方案?

因为我想组合使用两个闪存区域。 尤其是我们在引导加载程序映像之后涉及到 EEPROM 仿真时。
或者、将次级引导加载程序放置在地址0x400上以减少存储器空洞的唯一解决方案是吗?

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

    在我更改后、没有错误

    根据我的理解、您需要为 eeRPOM 保留介于0x1000和0x4000之间的存储器。 并且您希望完全使用从0x0000到0x1000的存储器。

    您可以在此代码示例中引用 cmd 文件:

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

    这只是>而不是>>导致我不清楚任何警告。 保留存储器区域来自次级引导加载程序模型。 而不仅仅是 EEPROM 仿真。 您提供的解决方案可以解决我的大部分问题。 在我看来、更好的解决方案是在次级引导加载程序之前移动 EEPROM 仿真区域。 因此、从零到第一个使用的存储器区域的间隙减少到2kB、这可以用.const 和.pinit 部分填充。