OM6626将函数放到RAM中的方法

wenbw · 136次点击 · 1个月前

我们在开发过程中,经常会遇到需要将代码放到RAM中运行的情况。

6626的SDK中提供了两个宏,可以用来修饰函数,将函数放到RAM中

image.png

说明

__attribute((used, section("RAM_CODE"), noinline)) 说明:

  • used:确保即使未使用,编译器也不会优化掉该函数或变量。

  • section("RAM_CODE"):将该函数或变量放入以 RAM_CODE开头的特定内存区域。该区域在.sct文件定义

  • section("RAM_CODE."s):将该函数或变量放入以 RAM_CODE. 开头的特定内存区域,后面跟着参数 s该区域在.sct文件定义

  • noinline:禁止编译器将该函数内联,确保调用是显式的。


示例

修改前:evt_timer_0_handler函数地址在0x004xxxxx的flash地址中

image.png


将函数放到RAM的方式有两种方法


方式一:直接使用__RAM_CODE修饰函数,不需要修改sct文件

好处:方便直接,不需要修改sct文件

修改后:evt_timer_0_handler函数地址在0x002xxxxx的flash地址中

image.png


方式二:使用__RAM_CODES修饰函数,需要修改sct文件

好处:方便批量控制函数是否放到RAM中,统一管理标签

修改后:evt_timer_0_handler函数地址在0x002xxxxx的flash地址中

代码:

image.png

.sct文件

image.png

编译后map文件

image.png

被收藏 0  ∙  0 赞  
加入收藏
点赞
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站