| |
【急问】作程序存储器的Flash可否运行中对空闲扇区进行写操作? |
|
|
| 出处:21ic 时间: 2007-06-29 |
|
Quiza 发布于 2007-6-27 22:24:00 手头上有个项目,原本Flash仅是作为程序存储器的,但后来用户要求加入一些参数保存功能,而且要得很急!目前板上没有任何ROM,只能把参数保存到Flash,但是改了程序后调试,总是在写操作时跑飞,百度一下搜索到如下结果:“不能同时在一片flash中执行,关键问题不是说他和CPU之间只有一条总线的问题,我们其实是可以在RAM的一个区域运行程序更改RAM的另外区域的。之所以Flash不能这样做是因为Flash在擦除和写入过程中有一段时间读出的数据并不是对应单元的数据,而是状态数据。而且通常是很长的一片(64K),甚至整个芯片地址范围都是。因此当CPU执行擦除或者写入后,读取Flash中的下一条指令时,读出的是Flash状态,而不是正确的指令,当然就飞了!” 请问高手,这段话对不对啊,现在的我应当怎么做才能既能执行指令又能写入参数呢?项目7月初就要交货,目前非常焦急,肯请大家帮忙!!!
平常人 发布于 2007-6-27 22:33:00 先把擦除和写入的子程序拷贝到RAM中,再调用RAM中的这段程序。
Quiza 发布于 2007-6-28 7:28:00 先把擦除和写入的子程序拷贝到RAM中,再调用RAM中的这段程序。 ============= 小弟还是个新手,刚接手项目,请问这个具体应该如何做呢,能说说吗,十分感谢!!!CPU是44B0X
平常人 发布于 2007-6-28 7:59:00 你们老板有问题,让一个新手做一个这么重要、这么急的项目,都快交货了居然功能还没有完全实现,哪有时间进行各种测试试验?如何保证产品质量?
建议大家都不要买你们的产品。
wangkj 发布于 2007-6-28 8:05:00 可能是凭关系接的项目,这种项目卖出去,有问题也问题不太大。 这年头,这种项目多了。
Quiza 发布于 2007-6-28 8:27:00 主要是原本做项目的突然走了,现在的确情况很急,我是个菜鸟,基础很差,但非常想做好,正在努力学习中,现有几个浅薄的问题如下,请大侠们指点一二: 1.44b0x中的sram和外接sram是否都可适用? 2.如何把Flash写操作的代码定位到RAM中的某个位置? 3.执行写操作时PC指针需要从Flash调转到RAM地址上去,这个过程怎么实现,是汇编吗?C能不能实现? 4.关于这方面的知识,看哪些书比较好? 望热心人不吝赐教,小弟感激不尽!
wangkj 发布于 2007-6-28 8:57:00 看看u-boot的代码,是从flash中把代码搬运到sram中执行,条件是你的sram要比flash大。这是最简单的解决问题的方法。 如果外部sram没那么大,那么你的写flash的代码部分必须在sram中执行。44b0/s4510有一个sram地址映射寄存器,可以利用这个寄存器。 这个问题比较难,需要很好的汇编技术或者编译器的了解。同时对硬件地址机制要比较清楚才好。
作项目的突然走了,这说明你们公司有问题。
high 发布于 2007-6-29 1:29:00 使用分散加载方法,把读写flash功能的代码加载到sram上。
qinxg 发布于 2007-6-29 11:56:00 44b: 就应该把程序从ROM拷贝到RAM,然后跳转到RAM里运行,CPU运行速度快很多. 这样就可以任意更改ROM了,改的时候一定要: 关闭中断,关闭cache. 否则死的很难看.
|
| 【关闭】 【打印】 |
|
|
|
|