没有合适的资源?快使用搜索试试~ 我知道了~
首页IAR 如何让程序在RAM中运行
资源详情
资源评论
资源推荐

IAR 下如何将程序拷贝在 RAM 中运行
一. 前言
有时候我们需要将一部分程序从 FLASH 拷贝到 RAM 中运行,以提高程序运行的速度。本文基于 IAR
Embedded Workbench 列出了一些方法,可以在系统启动时自动从 FLASH 中将这部分程序拷贝到
RAM 中运行。本文中所有例子都是在 IAR v7.2 下,基于 STM32F334 完成的。
二. IAR 下将程序拷贝到 RAM 中运行的方法
1. 利用关键字__ramfunc
IAR 中提供了关键字来声明将某个函数放在 RAM 中运行。该函数用关键字__ramfunc 声明后,编译器
将这段程序和其他的需要初始化的变量一起放在一个具有读/写属性的区域(SECTION),系统启动时
自动和其他的需要初始化的变量一起被从 ROM 拷贝到 RAM。使用__ramfunc 关键字的缺点就是,不
能指定具体的 RAM 位置。
__ramfunc void ramcode (void)
{
uint32_t i ;
for(i=0; i<1000; i++)
{
asm("nop");
}
}
编译后的 map 文件中,可以看到函数 ramcode 的地址在 RAM 范围:
在 map 文件的 INIT TABLE 部分可以看出,ramcode 在 flash 中是保存在 0x080012a4 开始的位置,在
系统初始化时,由__iar_copy_init3 函数从 flash 的 0x080012a4 位置拷贝到 0x20000000 的。















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0