打印
[ZLG-ARM]

LPC2200引导代码,将ROM搬运到RAM??红色紧急

[复制链接]
4357|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
有意思|  楼主 | 2007-2-8 21:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
平常人| | 2007-2-8 22:14 | 只看该作者

果然有意思。。。。。。

使用特权

评论回复
板凳
有意思|  楼主 | 2007-2-8 22:48 | 只看该作者

yun si

使用特权

评论回复
地板
wl80382000| | 2007-2-9 09:35 | 只看该作者

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

不过lpc系列不用搬运的   在rom中运行也很快   据说是用了某种神奇的技术。。。反正我没看明白    反正就是很快了

使用特权

评论回复
5
zlgARM| | 2007-2-9 09:43 | 只看该作者

RE

为什么非要在上电时从FLASH拷贝到RAM里运行?不明白您的意思。

技术上当然是可以实现的。

使用特权

评论回复
6
有意思|  楼主 | 2007-2-9 10:02 | 只看该作者

片外flash不够快

第一:RAM中够快,通讯数据较多,要求实时性,
第2:中途会向flash中写入数据,目前只是把编程函数copy到ram中跑,如果能 在ram中跑,是不是更好
第3:在片外flash中的运行速度远没有内部RAM快,

使用特权

评论回复
7
wl80382000| | 2007-2-9 10:13 | 只看该作者

44b0里面搬运代码

可以看到明显效果      lpc中我试过了    效果不明显

使用特权

评论回复
8
有意思|  楼主 | 2007-2-9 13:59 | 只看该作者

LPC效果也非常明显

#include <stdio.h>
#include <string.h>
#define fucmax    0x100//flash处理函数编译后的尺寸,可以利用编译器得出
typedef void(*FUC)(void);
void flash_fuc(void)//可以自己定义函数参数
{
//处理flash
    printf("handle flash ");
}
int main(void)
{
    FUC handle_flash;
    char  dest[fucmax];
    char *sour=(char *)flash_fuc;
//    dest=malloc(fucmax);//利用动态分配内存
    memcpy(dest,sour,fucmax);
    handle_flash = (FUC)dest;
    //禁用所有中断
    handle_flash();//运行ram中的flash处理函数
    printf("over ");
    //使能中断
//    free(dest);//释放
    return 0;
}
用上面这种方式将LED闪烁测试代码copy到ram中运行,发现ram中的运行速度至少是片外flash的10倍以上

使用特权

评论回复
9
有意思|  楼主 | 2007-2-9 16:33 | 只看该作者

楼上有何保留,直言无防


一提熊猫泪千行,咋知何日不烧香。
天涯何处无熊猫,何必单恋三枝香。
熊猫未死香不尽,杀毒正扫泪怎干?
路逢熊猫须当避,不是高手莫修机。
只因世上多熊猫,才有人间百毒生。
熊猫一个能毁机,杀毒一堆也关闭。

使用特权

评论回复
10
videohome| | 2007-2-9 16:34 | 只看该作者

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

使用特权

评论回复
11
有意思|  楼主 | 2007-2-9 16:43 | 只看该作者

楼上V君

LPC内部flash有存储器加速模块,MAM,它的速度和RAM差不多,好像也只是针对内部Flash,对片外flash也只能望尘莫及

使用特权

评论回复
12
libo198212| | 2007-2-9 18:33 | 只看该作者

这个问题是可以实现的.

你编写一个下载程序就可以了.
我也在做这个项目,我的是片外FLASH,有SPI扩展的.

使用特权

评论回复
13
有意思|  楼主 | 2007-2-9 21:29 | 只看该作者

不用改启动代码吗

使用特权

评论回复
14
smallfish6| | 2007-2-9 21:44 | 只看该作者

回复

首先要将中断矢量从ROM中拷贝到RAM中,然后重映射到RAM则就能使中断处理到RAM中去读矢量

如果你想把你的程序全部放到RAM中话,那就要把FLASH里的程序全部拷贝到RAM然后重影射

使用特权

评论回复
15
有意思|  楼主 | 2007-2-9 22:43 | 只看该作者

唉哈

如果你想把你的程序全部放到RAM中话,那就要把FLASH里的程序全部拷贝到RAM然后重影射


就是不会这个啊,噢,
就是不晓得把falsh里的程序全部拷贝到RAM,是咋子个搞法啊,
赐教?

使用特权

评论回复
16
rainmans| | 2007-2-26 17:21 | 只看该作者

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

俺只看过这个,对lpc系列的不了解
bbs.edw.com.cn上面有讨论这个loader的

使用特权

评论回复
17
wl80382000| | 2007-2-27 08:38 | 只看该作者

可能是我的ram速度慢?

〉或者你的flash速度慢?或者是总线速度设置问题  
我也是用闪灯作的实验   一秒的延时   肉眼没分辨出来差别

使用特权

评论回复
18
zzg| | 2007-2-27 09:44 | 只看该作者

晕哦

flash的访问速度一般是70ns,ram可以到10ns,速度不是差一点

使用特权

评论回复
19
yjtks| | 2007-3-3 20:19 | 只看该作者

回复

用keil很简单的 

使用特权

评论回复
20
youngerger| | 2007-4-12 09:57 | 只看该作者

分散加载文件

我也有同样的问题。
就是修改分散加载文件可以将绝大部分的RO代码搬运到RAM,
但是就是不能把所有的都搬运到RAM, 
因为至少搬运代码自己不能把自己搬运到RAM。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

331

帖子

0

粉丝