Hallo、
任何人能否为.TI.ramfuncs 提供正确的链接器 cmd 文件、或者是否正确:
#ifdef __TI_Compiler_version__
#if __TI_Compiler_version__>=15009000
.TI.ramfunc:{}> SRAM
其他
ramfuncs :> SRAM
#endif
#endif
谢谢
此致
Steffen
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.
Hallo、
任何人能否为.TI.ramfuncs 提供正确的链接器 cmd 文件、或者是否正确:
#ifdef __TI_Compiler_version__
#if __TI_Compiler_version__>=15009000
.TI.ramfunc:{}> SRAM
其他
ramfuncs :> SRAM
#endif
#endif
谢谢
此致
Steffen
您好!
我认为您使用该指令时就好像 TM4C129是基于 RAM 的器件一样。 TM4C129是一款基于闪存的器 件、有关详细信息、请参阅 TI 汇编语言工具用户指南 www.ti.com/.../SPNU118U。 我已粘贴以下说明。
8.5.5.2.1示例:将函数放置在 RAM 中
-ramfunc 编译器选项和 ramfunc 函数属性允许编译器指定函数
放置在 RAM 中并从 RAM 中执行。 大多数较新的 TI 链接器命令文件都支持 ramfunc
选项和函数属性、方法是将此类函数放置在.TI.ramfunc 段中。 如果您看到链接器错误
与此段相关、您应将.TI.ramfunc 段添加到您的 SECTIONS 指令中、如下所示。 在中
这些示例、RAM 和闪存是 RAM 和闪存存储器的存储器区域的名称;
链接器命令文件中的名称可能不同。
对于基于 RAM 的器件:
.TI.ramfunc:{}> RAM
对于基于闪存的器件:
.TI.ramfunc:{} load=flash,run=RAM,table (BINIT)
下面的这一条也将有用。 如果您仍有疑问、我会将您的问题转发给我们的编译器/汇编器工具专家。
https://e2e.ti.com/blogs_/archives/b/toolsinsider/posts/helpful-tips-executing-code-from-ram
我的完整链接器 cmd:
/*********
*
*德州仪器 TM4C1290NCPDT 的默认链接器命令文件
*
*这是从 TivaWare 库的修订版15071衍生而来的。
*
(小部分 /
--retain=g_pfnVectors
存储器
{
闪存(RX):origin = 0x00000000,length = 0x00100000
SRAM (rwx):origin = 0x20000000,length = 0x00040000
}
/*以下命令行选项作为 CCS 项目的一部分进行设置。 *
/*如果您使用命令行构建,或者出于某种原因想要 */
/*在此处定义它们,您可以根据需要取消注释并修改这些行。 *
/*如果您使用 CCS 进行构建、最好进行任何这样的构建*/
/*对 CCS 项目进行修改并将此文件保留为单独文件。 *
/* *//
/*--heap_size=0 */
/*--stack_size=256 */
/*--library=rtsv7M4_T_le_eabi.lib */
/*内存中的段分配*/
部分
{
.intvecs :> 0x00000000
.text : > FLASH
.const : > FLASH
.cinit : >闪存
.pinit : > FLASH
binit:{}> FLASH
init_array:> FLASH
.vtable :>0x20000000
.data : > SRAM
.bss : > SRAM
.sysmem :> SRAM
.stack : > SRAM
.TI.ramfunc:{} load=flash,run=SRAM,table (BINIT)
}
__STACK_TOP =__STACK + 512;