如何将程序烧写在FLASH,然后在RAM里运行

[复制链接]
 楼主| biao.l 发表于 2008-4-26 00:10 | 显示全部楼层 |阅读模式
最近写一个更新程序,因为写FLASH的时候不可以同时读,所以想着在RAM里面运行,具体该如何做,现在的难点在于,程序按FLASH的地址为编译,COPY到RAM中就产生的地址偏移量,如果是一条一条执行下就没问题,PC+1就行了,但遇到跳转,就不能跳到正确的位置了,应该如何,高手指点一下,或有更好的方法给小弟说说.谢谢!
阿南 发表于 2008-4-26 09:27 | 显示全部楼层

楼主找一个S3C2440的启动代码分析一下吧

  
wishcom 发表于 2008-4-26 17:23 | 显示全部楼层

这是一个与BootLoader相关的问题

楼主可以看看Scatter Loading和Loader程序相关的资料,书籍
后学 发表于 2008-4-26 19:51 | 显示全部楼层

re

大部分embedded都是采用ROM-base的,<br />程序从Flash启动,将系统copy到RAM,在RAM上运行,<br />可以在线升级Flash中程序,和存取Flash数据。。。
rainmans 发表于 2008-4-27 03:18 | 显示全部楼层

主要是要在boot里面处理好中断向量表

  
luhuaren 发表于 2008-4-27 09:24 | 显示全部楼层

re

以44B0为例:<br />一上电,PC的值为0,这由硬件决定,编译器和连接器无能为力。<br />在0地址处,放一条相对跳转指令,跳过中断向量区,进行一些初始化,注意这个时候程序还是在FLASH里执行。<br />执行完一些初始化后,就要进行由FLASH到RAM的代码拷贝过程了,代码拷贝是先把&nbsp;拷贝子程序&nbsp;拷贝到RAM中去,然后跳转到RAM中,运行拷贝子程序,将剩余的代码拷贝过去。<br /><br />
walnutcy 发表于 2008-4-27 23:53 | 显示全部楼层

万变不离其宗,要把写flash的那段编译到RAM,

固化到flash,升级的时候copy到对应的RAM中去,
lessfame 发表于 2008-4-28 12:47 | 显示全部楼层

ARM中可以采用分散加载方法实现

你可以到ARM公司网站或到<a href="http://www.smartever.com" target=_blank>www.smartever.com</a>网站下载ADS开发手册,里面讲的很清楚.
lessfame 发表于 2008-4-28 14:40 | 显示全部楼层

为什么我回的贴见不到内容?

为什么我回的贴见不到内容?<a href="http://www.smartever.com" target=_blank>www.smartever.com</a>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

286

帖子

0

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

17

主题

286

帖子

0

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