【急问】作程序存储器的Flash可否运行中对空闲扇区进行写操

[复制链接]
3364|12
 楼主| Quiza 发表于 2007-6-27 22:24 | 显示全部楼层 |阅读模式
手头上有个项目,原本Flash仅是作为程序存储器的,但后来用户要求加入一些参数保存功能,而且要得很急!目前板上没有任何ROM,只能把参数保存到Flash,但是改了程序后调试,总是在写操作时跑飞,百度一下搜索到如下结果:“不能同时在一片flash中执行,关键问题不是说他和CPU之间只有一条总线的问题,我们其实是可以在RAM的一个区域运行程序更改RAM的另外区域的。之所以Flash不能这样做是因为Flash在擦除和写入过程中有一段时间读出的数据并不是对应单元的数据,而是状态数据。而且通常是很长的一片(64K),甚至整个芯片地址范围都是。因此当CPU执行擦除或者写入后,读取Flash中的下一条指令时,读出的是Flash状态,而不是正确的指令,当然就飞了!”<br />请问高手,这段话对不对啊,现在的我应当怎么做才能既能执行指令又能写入参数呢?项目7月初就要交货,目前非常焦急,肯请大家帮忙!!!
平常人 发表于 2007-6-27 22:33 | 显示全部楼层

那段话正确。你需要把擦除和写入Flash的子程序放到RAM中执行

先把擦除和写入的子程序拷贝到RAM中,再调用RAM中的这段程序。
wangkj 发表于 2007-6-27 23:09 | 显示全部楼层

办法总是有的。

  
 楼主| Quiza 发表于 2007-6-28 07:28 | 显示全部楼层

请问平常人兄

先把擦除和写入的子程序拷贝到RAM中,再调用RAM中的这段程序。<br />=============<br />小弟还是个新手,刚接手项目,请问这个具体应该如何做呢,能说说吗,十分感谢!!!CPU是44B0X
wangkj 发表于 2007-6-28 07:43 | 显示全部楼层

利用44b0x中的sram,把写flash的代码定位到这里

  
平常人 发表于 2007-6-28 07:59 | 显示全部楼层

44B0X没用过,但wangj说得对

你们老板有问题,让一个新手做一个这么重要、这么急的项目,都快交货了居然功能还没有完全实现,哪有时间进行各种测试试验?如何保证产品质量?<br /><br />建议大家都不要买你们的产品。
wangkj 发表于 2007-6-28 08:05 | 显示全部楼层

估计老板也是一菜鸟,技术啥都不懂

可能是凭关系接的项目,这种项目卖出去,有问题也问题不太大。<br />这年头,这种项目多了。
 楼主| Quiza 发表于 2007-6-28 08:27 | 显示全部楼层

谢谢两位!

主要是原本做项目的突然走了,现在的确情况很急,我是个菜鸟,基础很差,但非常想做好,正在努力学习中,现有几个浅薄的问题如下,请大侠们指点一二:<br />1.44b0x中的sram和外接sram是否都可适用?<br />2.如何把Flash写操作的代码定位到RAM中的某个位置?<br />3.执行写操作时PC指针需要从Flash调转到RAM地址上去,这个过程怎么实现,是汇编吗?C能不能实现?<br />4.关于这方面的知识,看哪些书比较好?<br />望热心人不吝赐教,小弟感激不尽!
wangkj 发表于 2007-6-28 08:57 | 显示全部楼层

如果有外界sram最简单了

看看u-boot的代码,是从flash中把代码搬运到sram中执行,条件是你的sram要比flash大。这是最简单的解决问题的方法。<br />如果外部sram没那么大,那么你的写flash的代码部分必须在sram中执行。44b0/s4510有一个sram地址映射寄存器,可以利用这个寄存器。<br />这个问题比较难,需要很好的汇编技术或者编译器的了解。同时对硬件地址机制要比较清楚才好。<br /><br />作项目的突然走了,这说明你们公司有问题。
high 发表于 2007-6-29 01:29 | 显示全部楼层

还可以这么考虑

使用分散加载方法,把读写flash功能的代码加载到sram上。<br />
high 发表于 2007-6-29 01:31 | 显示全部楼层

相应的 要修改启动代码部分,把那段代码加载到sram上。

  
guang309 发表于 2010-4-7 16:59 | 显示全部楼层
高手指点下;小弟看了后有个疑惑!把ROM考到RAM里,然后那?也就是怎么样让程序在RAM里执行?需要加什么命令吗?这些命令在什么寄存器?拿51的说下!谢谢!
liuwei0908 发表于 2010-4-8 00:41 | 显示全部楼层
对于S3C44B0X,在CPU初始SDRAM后,把所有代码copy到SDRAM指定地址运行.
烧写Flash时,可以不关闭Cache, 但一定要保证PC值不能在Flash的地址范围内
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

102

帖子

1

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