Tffs 调试过程中出现的一点现象及总结
1.配置:
s
2.Vxworks中建立Tffs,执行擦除操作出现的问题:
1) 擦除指令序列写完后不能正常结束,此后不能在flash中进行读写操作。
不能进行overdetect操作。否则则出现data abort error
将overdetect操作改成简单延时等待后问题依旧。
2)掉电后通过相关软件可以发现flash只擦除了一个sector或block。
3.推测问题的原因可能是:
1)地址映射是否准确
2)cache数据的一致性
3) 当bootrom启动程序时,此块flash中的后面
(只针对sst39vf160)
4.为此我们编写了裸机测试代码进行验证
目的:
1. 通过编写裸机测试程序对flash进行擦除,写入操作确定地址映射无误。
2. 通过配置cache相关寄存器,禁止cache功能,验证是否擦除是否可以完成,。
3. 前两个均是通过仿真进行测试的。为了验证猜测3,将仿真裸机测试代码编译成hex格式通flashpgm烧入flash。擦除代码如下:
1)仿真测试
为未关闭cache时,由于出现的数据和上次读出的数据重复,而非预期的0xFF。
关闭了cache功能,overdetect函数运行无误,成功擦除。
通过裸机仿真测试,验证了地址映射是准确无误的,同时如果禁止cache功能或设置非cache保护区域,可以保证读写数据的一致性,顺利完成
2) 烧写Flash启动测试
我们把上述的仿真测试代码编译成hex格式,烧写到flash中执行。执行擦除操作时(如擦除
5.结论
FLASH(SST39VF160)在自身运行程序(如bootRom)的同时,对自己进行擦写操作时,会出现异常。
以上只是个人总结,没有查询过官方资料进行证实,大家有什么不同的看法欢迎发表!