Board logo

标题: flash操作为什么只能擦除不能写入?? [打印本页]

作者: anhei98    时间: 2006-7-1 15:22     标题: flash操作为什么只能擦除不能写入??

我用的是JL3,ROM的地址是$ec00~$fbff,因为我要擦写64字节的flash,就要设置保护区为$ec40--$fbff,程序中也就修改了FLBPR。在prm文件中将默认的"ROM = READ_ONLY  0xEC00 TO 0xFBFF";  改写为“ROM = READ_ONLY  0xEC40 TO 0xFBFF;”。


这样在程序运行过程中,擦写 flash时,发现只能对$ec00--$ec3f可以擦除,但是不能写入数据。当然在对flash操作时,是在RAM里进行的。


如果在prm文件中改回默认的值"ROM= READ_ONLY  0xEC00 TO 0xFBFF;",结果发现在程序运行中可以对flash进行擦除,和正常写入。当然$ec00--$ec3f被改写了,程序第二次上电不能正常运行。


请问:是程序的错误吗?究竟该怎么样操作,才能对那64个字节正常的擦除和写入呢?


 


 


作者: seuafu2005    时间: 2006-7-3 10:59

JL3 monitor ROM里面有写好的flash操作的程序,可以直接调用,不需要你自己去编写flash的擦写程序,可以参考应用笔记AN2874。

你说的问题,应该和prm没有关系,还是程序操作的问题。对于flash的写入,JL3应该一次最多写32个字节
作者: anhei98    时间: 2006-7-4 17:50

以前用到擦写flash,也是直接调用monitor ROM里的程序,但是这样做的话,会有个问题,就是写flash的时间过长,它是从$8c开始直到$ff共116个数据都写了进去,这样的话经过测试应该是在8,9个毫秒多了。 我只需要写4个数据到flash里去,且时间要小于5ms。所以才放弃调用monitor rom里的程序。
用汇编写程序做过测试,编译环境是mmevs08,可以正常擦写。用CW做,却只能擦,不能写。
真是奇怪
作者: guantingwei    时间: 2006-7-4 18:26

不会吧,可以指定长度的。
作者: anhei98    时间: 2006-7-10 11:48

哦,可以指定写任意长度么?那是怎么操作的呢?
作者: guantingwei    时间: 2006-7-10 13:06

对于JL3来说,调用监控程序时,不同的起始地址和结束地址不就意味着不同的长度嘛。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0