Other Parts Discussed in Thread: TMS320F2800157
器件型号: TMS320F2800157
您好、
我不熟悉使用链接器脚本将所有内容添加到闪存的已定义部分。 我有一个 TMS320F2800157 LaunchPad、应用需要从闪存运行。
下面是当前链接器脚本、我承认我已将其黑客攻击在一起以获取此内容。 我的愿望是在闪存中包含所有的应用程序,我觉得我不需要控制它如何存储在闪存中。 我正在编写一个从 RAM 运行的引导加载程序,可以重新刷新它,但我打算一次擦除所有的闪存。 因此、我认为我可以将所有闪存作为一个块进行处理。
使用下面的脚本、我收到以下错误:
../280015x_generic_flash_lnk.cmd“、第 28 行:警告#10097:未找到存储器范围:第 1 页上的 FLASH_BANK0_SEC_127
../280015x_generic_flash_lnk.cmd“、第 28 行:错误#10265:没有可用于放置“.const"的“的有效存储器范围
../280015x_generic_flash_lnk.cmd“、第 28 行:错误#10099-D:程序无法放入可用内存中、或者该段包含一个需要无法为该段生成的蹦床函数的调用站点。 对于段“.const"大小“大小 0x1db6 第 1 页、带有对齐/分块的放置失败
下面的链接器脚本:
MEMORY
{
BEGIN : origin = 0x00080000, length = 0x00000002
BOOT_RSVD : origin = 0x00000002, length = 0x00000126
RAMM0 : origin = 0x00000128, length = 0x000002D8
RAMM1 : origin = 0x00000400, length = 0x000003F8
RAMLS0 : origin = 0x00008000, length = 0x00002000
RAMLS1 : origin = 0x0000A000, length = 0x00001FF8
BOOTROM : origin = 0x3F8000, length = 0x7FC0 /* Boot Rom*/
RESET : origin = 0x003FFFC0, length = 0x00000002
/* Flash sectors */
FLASH_BANK0_SEC_0_127 : origin = 0x080002, length = 0x1FFEE /* on-chip Flash */
// FLASH_BANK0_SEC_127_RSVD : origin = 0x0A0FF0, length = 0x0010 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
}
SECTIONS
{
codestart : > BEGIN
.text : >> FLASH_BANK0_SEC_0_127, ALIGN(8)
.cinit : > FLASH_BANK0_SEC_0_127, ALIGN(8)
.switch : > FLASH_BANK0_SEC_0_127, ALIGN(8)
.reset : > RESET, TYPE = DSECT /* not used, */
.stack : > RAMM1
.bss : > RAMLS0
.bss:output : > RAMLS0
// .init_array : >> FLASH_BANK0_SEC_127, ALIGN(8)
.const : >> FLASH_BANK0_SEC_127 , ALIGN(8)
.data : > RAMLS0
.sysmem : > RAMLS0
.bss:cio : > RAMLS0
#if defined(__TI_EABI__)
.TI.ramfunc : LOAD = FLASH_BANK0_SEC_0_127,
RUN = RAMLS0,
LOAD_START(RamfuncsLoadStart),
LOAD_SIZE(RamfuncsLoadSize),
LOAD_END(RamfuncsLoadEnd),
RUN_START(RamfuncsRunStart),
RUN_SIZE(RamfuncsRunSize),
RUN_END(RamfuncsRunEnd),
ALIGN(8)
#else
.TI.ramfunc : LOAD = FLASH_BANK0_SEC_0_127,
RUN = RAMLS0,
LOAD_START(_RamfuncsLoadStart),
LOAD_SIZE(_RamfuncsLoadSize),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
RUN_SIZE(_RamfuncsRunSize),
RUN_END(_RamfuncsRunEnd),
ALIGN(8)
#endif
/* Allocate IQ math areas: */
IQmath : > BOOTROM, type = NOLOAD, PAGE = 0
IQmathTables : > BOOTROM, type = NOLOAD, PAGE = 0
}
我查看了映射文件、发现闪存中使用的最高地址为 00090268、闪存扩展至 0x9FFFF。 const 段需要 00001dc0。 如何告知链接器将其添加到闪存块中?
提前感谢、
John