htjgdw 发表于 2011-2-23 22:33:54

如何将程序加载到RAM中执行(LPC1768)

我知道的cortex-m3基本都是将程序烧进flash然后上电就开始执行了。很想问问大家,有没有实现把程序从flash加载到ram中执行的方法呢?哪怕是加载一小段程序也行,主要是不了解方法。

shangdawei 发表于 2011-2-23 22:53:49

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

htjgdw 发表于 2011-2-24 17:39:06

非常感谢。
还想问一下,如果我想从外部存储器(比如说SD卡)加载一个程序到片内RAM,是不是和上面的情况又不同了?
是否能实现呢?

kiema 发表于 2011-5-12 18:21:47

mark

yulri 发表于 2011-6-14 10:15:34

是我正在找的东西!!

record_cheng 发表于 2011-12-1 23:04:16

回复【楼主位】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,

lwcumt 发表于 2011-12-23 16:15:10

学习了!

19001579 发表于 2011-12-26 16:14:45

mark

htjgdw 发表于 2011-12-27 09:12:09

呵呵,快1年了,真没想到我这个帖子还能被扒出来:)

yuzr 发表于 2011-12-27 10:29:54

mark

moguojing 发表于 2012-5-29 17:38:44

mark~~~~~~

wszyjsw2 发表于 2012-5-29 18:40:38

mark               

sbgavin 发表于 2012-6-26 15:20:07

学习中呵呵{:smile:}

liuxingang 发表于 2012-6-28 14:04:01

{:cry:}没看明白

zhenghe 发表于 2013-8-25 12:09:06

标记下,学习了

NEXEN1106 发表于 2014-8-27 19:15:22

先mark一下,慢慢研究学习

qdyuyan 发表于 2014-9-26 09:23:41

学习了!

abutter 发表于 2014-9-26 11:58:49

需要loader,只是程序要的链接地址要编程 ram 的或者是位置无关代码。

傻彪5213 发表于 2014-10-20 14:34:41

mark, 学习学习

wxdjack 发表于 2014-10-27 15:29:54

{:sleepy:}{:sleepy:}{:sleepy:}{:sleepy:}

yebx 发表于 2014-10-31 11:25:04

mark, 学习

lingergz 发表于 2014-11-3 17:43:06

这个我也想知道啊

wiisir 发表于 2014-11-8 20:05:15

现在还不会用啊

一杯茶2009 发表于 2016-4-22 17:37:53

学习了!感谢
页: [1]
查看完整版本: 如何将程序加载到RAM中执行(LPC1768)