如何将程序加载到RAM中执行(LPC1768)
我知道的cortex-m3基本都是将程序烧进flash然后上电就开始执行了。很想问问大家,有没有实现把程序从flash加载到ram中执行的方法呢?哪怕是加载一小段程序也行,主要是不了解方法。 iar ewarm : EWARM_DevelopmentGuide.ENU.pdf__ramfunc void function_exec_in_ram(void)
{
static char str[] = "exec in ram";
print_msg( str );
}
keil arm :
http://www.keil.com/support/man/docs/ca/ca_le_ram.htm
#define M16(adr) (*((volatile unsigned short *) (adr)))
void my_prog_func (unsigned short val, unsigned short *adr) __ram
{
M16(base_adr + 0xAAA) = 0xAA; // enter programming mode
M16(base_adr + 0x554) = 0x55;
M16(base_adr + 0xAAA) = 0xA0;
M16(adr) = val; // program value
while (M16(adr) != val); // wait until programmed
}
gcc arm:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3909593&bbs_page_no=1&search_mode=3&search_text=cnjenkins&bbs_id=9999 非常感谢。
还想问一下,如果我想从外部存储器(比如说SD卡)加载一个程序到片内RAM,是不是和上面的情况又不同了?
是否能实现呢? mark 是我正在找的东西!! 回复【楼主位】htjgdw
我知道的cortex-m3基本都是将程序烧进flash然后上电就开始执行了。很想问问大家,有没有实现把程序从flash加载到ram中执行的方法呢?哪怕是加载一小段程序也行,主要是不了解方法。
-----------------------------------------------------------------------
想把code加载到ram运行,首先编译时,code的地址需要指定到ram中,属性依然是ro,
再将代码copy到ram中运行,这时,如果不将code copy到ram,将不能运行(ram和rom地址不一样)
1楼给的参考很好,编译器关键字 __ramfunc 指定到函数可以编译时地址制定到ram,
但是,从rom copy到ram是由编译器生成代码来拷贝的,一本在startup时就copy到ram了,
如是这部分代码一直不执行的时,白白占用ram, 学习了! mark 呵呵,快1年了,真没想到我这个帖子还能被扒出来:) mark mark~~~~~~ mark 学习中呵呵{:smile:} {:cry:}没看明白
标记下,学习了 先mark一下,慢慢研究学习 学习了! 需要loader,只是程序要的链接地址要编程 ram 的或者是位置无关代码。 mark, 学习学习 {:sleepy:}{:sleepy:}{:sleepy:}{:sleepy:} mark, 学习 这个我也想知道啊 现在还不会用啊 学习了!感谢
页:
[1]