首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

flash操作为什么只能擦除不能写入??

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个字节正常的擦除和写入呢?


 


 

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

你说的问题,应该和prm没有关系,还是程序操作的问题。对于flash的写入,JL3应该一次最多写32个字节
以前用到擦写flash,也是直接调用monitor ROM里的程序,但是这样做的话,会有个问题,就是写flash的时间过长,它是从$8c开始直到$ff共116个数据都写了进去,这样的话经过测试应该是在8,9个毫秒多了。 我只需要写4个数据到flash里去,且时间要小于5ms。所以才放弃调用monitor rom里的程序。
用汇编写程序做过测试,编译环境是mmevs08,可以正常擦写。用CW做,却只能擦,不能写。
真是奇怪
不会吧,可以指定长度的。

 边凿磨边用
 
 经验同分享
哦,可以指定写任意长度么?那是怎么操作的呢?
对于JL3来说,调用监控程序时,不同的起始地址和结束地址不就意味着不同的长度嘛。

 边凿磨边用
 
 经验同分享
返回列表