烧不了flash,困惑啊
dsp是6713,flash是s29, aoe awe ce信号通过cpld转接,用示波器看波形,这些信号应该是正常的,而且我也换过cpld,但是没用。flash我也换过。
症状就是:向flash中某个单元写个数,比如0xaa,然后用view memory去看,发现整个flash都是这个数,更奇怪的是,如果上下拖动view memory,结果显示的内容就变了。
有人遇到过类似的问题吗?能不能判定flash有无问题?
这个板子调了好几天了,始终没进展,诸位烧过flash给点建议啊,尤其是烧写不正常的时候,都是什么症状。
应该检查检查你的flash的连接,可能有问题,地址线和数据线,应该不是flash芯片的问题。
先些个测试flash的程序
比如:读ID,擦处片子,写一些数据,在读出看看数据正确否
这样就能够确定你的物理连接有没有问题
如果没有问题的话,就说明硬件连接没有问题
在看看你的烧写程序了
我就是被烧写程序搞晕了好几天
程序不会有问题,在别的板子上是可以工作的。
现在读写都不正常。
我向某个地址写数,用view memory看,结果整个片子都是这个数,我觉这是不可能的,执行擦除指令后,也没有执行。
读id也不对。
我查查地址线数据线吧。
看view memory是可能有这样的问题,我遇到过;
我想可能是访问外部地址空间的问题
如果读ID不对就有可能是数据线地址线控制线的问题,
另外一点就是寄存器设置在检查一下,建立时间保持时间选通时间长一些.
*(Uint8 *)0x90000aaa=0xaa;
*(Uint8 *)0x90000554=0x55;
*(Uint8 *)0x90000aaa=0xa0;
*(Uint16 *)0x90000000=0xaa
四条指令合成一个flash写指令,第四条指令才是要向0x90000000写入0xaa。这四条写操作合在一起,才是一条写指令。现在我的flash是这样的:
执行*(Uint8 *)0x90000aaa=0xaa;之后,view memory,结果全是0xaa
执行*(Uint8 *)0x90000554=0x55;之后,view memory,结果全是0x55
我猜flash根本就没有被写入任何内容,擦除的时候,擦除指令一转眼就执行完了,而不是要花个几秒钟。
但是,问题是,如果flash根本没有被写入任何内容,那么,在view memory的时候,显示的0xaa,0x55又是什么?
不如读ID
可以判断数据线地址线控制信号对不对
读写sdram无误。查了一下地址线数据线,也没发现问题。
感觉挺邪的。
我又焊了一块板,烧进去了。
我抠这个问题,只是觉得这种现象很奇怪,解释不了。
你们焊一快班子的速度真快
我现在的感觉,0xaa,0x55这些数字,根本就没有被写进去,之所以用view memory看到,是因为在写的时候,这些数字会被放到数字线上,然后,这些数字大概由于什么原因没有消失,所以用view memory看的时候,整个空间都是这个数字。因为flash的写指令是连续几条指令的合成,单独用*(Uint8 *)0x90000aaa=0xaa;这种语句,是写不进去的。
而这种现象,我猜很可能跟数据线上连的sdram有关。
由于板子很小,又是两块板上下对叉的,没法用示波器看,我把aow,awe,ce信号引出来,可以看到低电平的脉冲,脉宽和我在 emif中设的差不多,所以,我觉得控制信号是正常的。
我没有烧cpld的时候,用view memory看flash,也是整个空间都是一个某一个数字。所以,我认为,问题还是出在flash上。