LPC1768 Flash 存储器加速模块

ARM中的Flash和Ram

程序下载到flash和ram中有什么区别?各用在什么场合?是否只有调试程序的初期才将程序下载到ram中?

Flash的速度较慢,比如-50的Flash,读取只能达20M的速度,而ARM核可以工作在几百M,甚至更高。那么ARM芯片的CPU执行完一条指令就要等下一条指令读取出来,而不能马上执行下一条。这样因Flash慢而CPU快就造成资源的浪费和系统速度下降。为了解决该矛盾,有厂家采用Flash 中只存储程序(相当于电脑的硬盘),将程序读取到RAM中去执行(类似电脑的内存),那么CPU的速度就能发挥出来。

      518位机,更重要的是51的主频不高,8位的ROMFlash足够匹配51的主频,不用插入等待指令,所以程序直接在ROMFlash中跑影响不到系统的速度。而ARM就不同了,ARM32位机,但是Flash一般是8位或16位,32位的也有吧,好像价格很高。而且ARM的制品很高,动辄上百M,所以Flash的工艺达不到这个速度。如果程序跑在Flash中就要插入过多的等待指令,所以会影响ARM的性能。而RAM一般存取速度比较快,很容易构成32位,可以与高速的ARM匹配

   而lpc1768没有外部总线,不能接外部程序存储器。所以只能使用片内的Flash存储程序。也不能接外部RAM来运行程序。于是采用了一个比较特殊的方法来解决这个速度矛盾。就是在内部Flash和内部总线之间加了存储加速模块,有128位数据宽度,一次可以从Flash中读取4条指令(注意是4条而不是1条),另外再加上预测分支等功能,使得CPU全速运行时,从Flash 中读取的程序能源源不断地输送进CPU,无需等待。只是在有分支(如调用,跳转)时需要清空流水线造成临时性速度稍微下降。我们知道,程序中绝大部分是顺序执行的指令。
所以nxp的LPC1768系列不需要调到RAM中运行。


arm的话在分散装载配置文件里会有配置,关于code的地址,有两个设置,一个是存储地址(这个地址配置的是烧写器把代码段写到flashrom的何处),一个是装载运行地址,也就是你程序在什么地方运行,装载地址当然可以是flashrom(nor型的),所以你的程序是可以在flashrom里执行的。
当然如果系统时钟非常高,flashrom的读取速度不能满足,又或者你需要更新固件程序的话,那么你的程序就要在ram里运行.


 LPC1768 增加了一个专用的Flash 存储器加速模块,使得在Flash 中运行代码能够达到较理想的性能


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值