[ZLG-ARM] LPC2200引导代码,将ROM搬运到RAM??红色紧急

[复制链接]
5615|21
 楼主| 有意思 发表于 2007-2-8 21:36 | 显示全部楼层 |阅读模式
怎样修改LPC2200工程模板,实现在上电后,将rom中的程序代码全部Copy到RAM中运行,应该修改引导代码中的哪些???
平常人 发表于 2007-2-8 22:14 | 显示全部楼层

果然有意思。。。。。。

  
 楼主| 有意思 发表于 2007-2-8 22:48 | 显示全部楼层

yun si

  
wl80382000 发表于 2007-2-9 09:35 | 显示全部楼层

周立功引导代码中好像没有搬运功能

不过lpc系列不用搬运的   在rom中运行也很快   据说是用了某种神奇的技术。。。反正我没看明白    反正就是很快了
zlgARM 发表于 2007-2-9 09:43 | 显示全部楼层

RE

为什么非要在上电时从FLASH拷贝到RAM里运行?不明白您的意思。<br /><br />技术上当然是可以实现的。
 楼主| 有意思 发表于 2007-2-9 10:02 | 显示全部楼层

片外flash不够快

第一:RAM中够快,通讯数据较多,要求实时性,<br />第2:中途会向flash中写入数据,目前只是把编程函数copy到ram中跑,如果能&nbsp;在ram中跑,是不是更好<br />第3:在片外flash中的运行速度远没有内部RAM快,
wl80382000 发表于 2007-2-9 10:13 | 显示全部楼层

44b0里面搬运代码

可以看到明显效果&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpc中我试过了&nbsp;&nbsp;&nbsp;&nbsp;效果不明显
 楼主| 有意思 发表于 2007-2-9 13:59 | 显示全部楼层

LPC效果也非常明显

#include&nbsp;&ltstdio.h&gt<br />#include&nbsp;&ltstring.h&gt<br />#define&nbsp;fucmax&nbsp;&nbsp;&nbsp;&nbsp;0x100//flash处理函数编译后的尺寸,可以利用编译器得出<br />typedef&nbsp;void(*FUC)(void);<br />void&nbsp;flash_fuc(void)//可以自己定义函数参数<br />{<br />//处理flash<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;handle&nbsp;flash
&quot;);<br />}<br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;FUC&nbsp;handle_flash;<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;dest[fucmax];<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*sour=(char&nbsp;*)flash_fuc;<br />//&nbsp;&nbsp;&nbsp;&nbsp;dest=malloc(fucmax);//利用动态分配内存<br />&nbsp;&nbsp;&nbsp;&nbsp;memcpy(dest,sour,fucmax);<br />&nbsp;&nbsp;&nbsp;&nbsp;handle_flash&nbsp;=&nbsp;(FUC)dest;<br />&nbsp;&nbsp;&nbsp;&nbsp;//禁用所有中断<br />&nbsp;&nbsp;&nbsp;&nbsp;handle_flash();//运行ram中的flash处理函数<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;over
&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;//使能中断<br />//&nbsp;&nbsp;&nbsp;&nbsp;free(dest);//释放<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br />用上面这种方式将LED闪烁测试代码copy到ram中运行,发现ram中的运行速度至少是片外flash的10倍以上
 楼主| 有意思 发表于 2007-2-9 16:33 | 显示全部楼层

楼上有何保留,直言无防

<br />一提熊猫泪千行,咋知何日不烧香。<br />天涯何处无熊猫,何必单恋三枝香。<br />熊猫未死香不尽,杀毒正扫泪怎干?<br />路逢熊猫须当避,不是高手莫修机。<br />只因世上多熊猫,才有人间百毒生。<br />熊猫一个能毁机,杀毒一堆也关闭。
videohome 发表于 2007-2-9 16:34 | 显示全部楼层

如果采用LPC2xxx有内部ROM不用,还不如不用LPC

  
 楼主| 有意思 发表于 2007-2-9 16:43 | 显示全部楼层

楼上V君

LPC内部flash有存储器加速模块,MAM,它的速度和RAM差不多,好像也只是针对内部Flash,对片外flash也只能望尘莫及
libo198212 发表于 2007-2-9 18:33 | 显示全部楼层

这个问题是可以实现的.

你编写一个下载程序就可以了.<br />我也在做这个项目,我的是片外FLASH,有SPI扩展的.<br />
 楼主| 有意思 发表于 2007-2-9 21:29 | 显示全部楼层

不用改启动代码吗

smallfish6 发表于 2007-2-9 21:44 | 显示全部楼层

回复

首先要将中断矢量从ROM中拷贝到RAM中,然后重映射到RAM则就能使中断处理到RAM中去读矢量<br /><br />如果你想把你的程序全部放到RAM中话,那就要把FLASH里的程序全部拷贝到RAM然后重影射
 楼主| 有意思 发表于 2007-2-9 22:43 | 显示全部楼层

唉哈

如果你想把你的程序全部放到RAM中话,那就要把FLASH里的程序全部拷贝到RAM然后重影射<br /><br /><br />就是不会这个啊,噢,<br />就是不晓得把falsh里的程序全部拷贝到RAM,是咋子个搞法啊,<br />赐教?
rainmans 发表于 2007-2-26 17:21 | 显示全部楼层

44b0有bootloader代码,网上google一下就有

俺只看过这个,对lpc系列的不了解<br />bbs.edw.com.cn上面有讨论这个loader的
wl80382000 发表于 2007-2-27 08:38 | 显示全部楼层

可能是我的ram速度慢?

〉或者你的flash速度慢?或者是总线速度设置问题&nbsp;&nbsp;<br />我也是用闪灯作的实验&nbsp;&nbsp;&nbsp;一秒的延时&nbsp;&nbsp;&nbsp;肉眼没分辨出来差别<br />
zzg 发表于 2007-2-27 09:44 | 显示全部楼层

晕哦

flash的访问速度一般是70ns,ram可以到10ns,速度不是差一点
yjtks 发表于 2007-3-3 20:19 | 显示全部楼层

回复

用keil很简单的&nbsp;
youngerger 发表于 2007-4-12 09:57 | 显示全部楼层

分散加载文件

我也有同样的问题。<br />就是修改分散加载文件可以将绝大部分的RO代码搬运到RAM,<br />但是就是不能把所有的都搬运到RAM,&nbsp;<br />因为至少搬运代码自己不能把自己搬运到RAM。<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

331

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部