您好!
为了实现 CC2652PSIP 的固件升级功能、必须从 RAM 执行某些函数。 map-file 显示该函数位于 RAM 中、但二进制文件的大小大于0x20、000、000、000、二进制文件的预期大小为0x58、000。 二进制文件中似乎包含了 RAM 中的函数。
函数由以下人员声明:
__attribute__((section (".TI.ramfunc"))) u32 crcImageCheck (void);
cmd -文件内的段看起来像:
部分
{
.intvecs:> flash_start
.text:>> FLASH | FLASH_last_page
.const:>> FLASH | FLASH_LAST_PAGE
.constdata:>> FLASH | FLASH_LAST_PAGE
.rodata:>> FLASH | FLASH_LAST_PAGE
.cinit:> flash | flash_last_page
.pinit:>> FLASH | FLASH_LAST_PAGE
init_array:> flash | flash_last_page
.emb_text:>> flash | flash_last_page
.ccfg:> flash_last_page (高电平)
组> SRAM
{
.data
#ifndef cache_as_ram
.bss
#endif /* cache_as_RAM */
.vtable
.vtable_ram
vtable_ram
.sysmem
.TI.ramfunc
.nonretenvar
/*如果不将 ll.o 放置在这里,则将 ll.o 对象保留在 GPRAM 之外
警告#10068被抑制。*/
#ifdef cache_as_ram
LL_BSS
{
-- library=*ll_*.a. (.bss)
-- library=*ll_*.a. (.bss)
}
#endif /* cache_as_RAM */
}load_end (heapStart)
.stack:> SRAM (高电平) load_start (heapEnd)
#ifdef cache_as_ram
.bss:
{
*(.bss)
}> GPRAM
#endif /* cache_as_RAM */
}
post_BUILD 步骤如下所示:
"${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin "${BuildArtifactFileName}""${BuildArtifactFileBaseName}.bin""${CG_TOOL_ROOT}/bin/tiarmofd "${CG_TOOL_ROOT}/bin/tiarmhex "${CCS_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin "
对于从 RAM 运行函数的工程、应如何处理0x58、000字节的二进制文件? 闪存映像应包含这些功能、并在调制解调器启动时将它们复制到 RAM 中。
谢谢。
Alex