关于flash擦除的问题

lws   2009-8-24 19:12 楼主
1、原先用spansion的norflash s29GL032操作一切正常,先改为ST的M29W320的flash,在用jtag烧写uboot时,一直擦除不成功,我用的是片擦除,系统时钟为125M,指令如下
//16bit erase
        *(volatile UINT16 *)(AM_START_ADDR+ 0x0AAA) = 0xaaaa;   
        *(volatile UINT16 *)(AM_START_ADDR+ 0x0554) = 0x5555;   
        *(volatile UINT16 *)(AM_START_ADDR+ 0x0AAA) = 0x8080;   
        *(volatile UINT16 *)(AM_START_ADDR+ 0x0AAA) = 0xaaaa;   
        *(volatile UINT16 *)(AM_START_ADDR+ 0x0554) = 0x5555;   
        *(volatile UINT16 *)(AM_START_ADDR+ 0x0AAA) = 0x1010;   
        compare_temp = 0x0000;                        
        do  
        {   
                compare_temp = *(volatile UINT16 *)(AM_START_ADDR+0x0000);  
                UartTxChars("eraser\n");
    }
程序一直在eraser,也就是说擦除一直没有完成,请各位大侠帮忙分析一下什么原因
2、顺便问一下关于nor flash的操作要注意哪些?

回复评论 (7)

帮顶一下.
点赞  2009-8-24 19:55
不同的FLASH,操作方式可能会有所不同。还是仔细读读ST的M29W320的DATASHEET吧
点赞  2009-8-24 21:34
注意看下启动方式
点赞  2009-8-25 08:24
引用: 引用 2 楼 llkk0616 的回复:
不同的FLASH,操作方式可能会有所不同。还是仔细读读ST的M29W320的DATASHEET吧


up
不同的flash不管是写还是擦除,其指令和操作步骤基本是不同的,lz需要修改flash的基本操作函数代码才行
点赞  2009-8-25 08:28
引用: 引用 4 楼 arnold9009 的回复:
引用 2 楼 llkk0616 的回复:
不同的FLASH,操作方式可能会有所不同。还是仔细读读ST的M29W320的DATASHEET吧


up
不同的flash不管是写还是擦除,其指令和操作步骤基本是不同的,lz需要修改flash的基本操作函数代码才行

应该就是诸如时序或者命令等的差异引起的,看看datasheet吧
点赞  2009-8-25 10:10
引用: 引用 5 楼 guopeixin 的回复:
引用 4 楼 arnold9009 的回复:
引用 2 楼 llkk0616 的回复:
不同的FLASH,操作方式可能会有所不同。还是仔细读读ST的M29W320的DATASHEET吧


up
不同的flash不管是写还是擦除,其指令和操作步骤基本是不同的,lz需要修改flash的基本操作函数代码才行


应该就是诸如时序或者命令等的差异引起的,看看datasheet吧



可是我看了三款flash,(MXIC的MX29LV320,ST的M29W320,spansion的S29GL032A),他们的片擦除时序都是一样的啊
擦除时序为
   1st           2nd         3rd         4th        5th         6th
Addr Data |  Addr Data | Addr Data | Addr Data | Addr Data | Addr Data
555  AA      2AA  55    555   80    555   AA     2AA  55     555  10

点赞  2009-8-25 15:56
看看datasheet吧
点赞  2009-8-26 16:11
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复