nor flash使用gpmc xip mux1模式, 驱动使用的是cfi,可以成功地识别并初始化flash,所以应该读取是没问题,
既然可以读取那说明硬件设计上没有问题,那么就可能是gpmc时序的问题,时序我用的是“Technical Reference Manual
中的26.1.7.2 GPMC XIP Timings” ,我把驱动中的调试打印打开,擦写的执行过程中没有出现任何错误,但确实没有写到flash中,
所以我就搞不清楚到底是哪的问题了,有哪位高手能指点一下,非常感谢!
Eason Wang:
Move to Sitara forum
Jian Zhou:
回复 Eason Wang:
从SDK06开始,就支持Nor Flash的U-boot启动和烧写了,你参考过下面的文档么:
http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/30869.aspx
huozhen:
回复 Jian Zhou:
我用的是pinmux mode0,SN74HC574NSR的锁存器,S29GL128N的nor flash(64M、16bit),
设计方面和http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/30869.aspx是一致的。
只是软件方面如果按SDK06 u-boot中的GPMC_CONFIG,flash甚至都识别不到,后来我调试发现是gpmc的读取
周期不够,所以我增加了其周期就好了,但是写入还是不行。
我也老老实实地按TRM的26.1.7.2.1的 GPMC XIP Timings改了GPMC_CONFIG,
但结果仍是可以成功读取,写入过程没有报任何错误就是无法成功写入。
之后我尝试了很多种GPMC_CONFIG,结果仍一样,有的时序执行过程可能会报
flash_is_busy: 1flash_is_busy: 1flash_is_busy: 1
Flash buffer write timeout at address 8000000 data 86c686c6Timeout writing to Flash的错误,即使没报任何错误也是无法成功写入的,
所以我就没任何头绪了,希望您能帮忙分析一下,问题可能出在什么地方,谢谢!
的错误。
通过调整gpmc的时序,flash_is_busy: 1可能会更早出现或更晚出现,不过最终还是不行。
那么是否gpmc时序的问题,导致的这一系列情况。
huozhen:
回复 huozhen:
之前uboot无法成功擦写nor flash的问题,最后发现是芯片本身坏了,
但是,也发现了若nor flash中有数据存在,则已uart引导启动时就无法识别到nor flash。
这个问题已经在多块板子上做了多次试验,结果都是如此,只要把flash中的数据擦除掉就马上可以识别到了。
不知有人是否遇到过这个问题。
huozhen:
回复 huozhen:
我现在在内核中调试nor flash,使用的是physmap、cfi_cmdset_0002的驱动,可以成功识别芯片,可以成功读取数据,但是擦除和写入都有问题,
后来我自己编写了驱动,读取擦写有时却能成功。
不知为何我在am335x上使用nor flash会遇到如此多的非常规问题,不知哪位高手能指点一下,非常感谢。
leo chen:
回复 huozhen:
你是说在uboot中把相关的扇区保护了吗?
然后就不能在linux中进行擦写?
huozhen:
回复 leo chen:
是的,我进行了很多测试,可以确定是这个原因。