1.NAND FLASH写入只能由1写为0,所以写入前必须先擦除,擦除后所有数据为1.
2.2K大页面的64字节冗余数据按照飞凌的定义为:第0位为坏块标记,第1-4位为2K页面的ECC校验,其他为0xff。
3.K9F1G08U0B的地址线有28根,对应空间应该是256MB,而实际空间为128MB,我的理解为A11是选择是数据区域还是扩展数据区域。高的16位正好是页面的地址。
4.bootloader中nand flash验证误区,用AXD写入的与.axf文件和.bin文件的flash分布不同,故造成读取验证的错误,其实读取是正确的。。。。
5.在写驱动时,我写的文件没有printf的定义,但是调用了printf,编译器将其当成标准库函数来编译,故没有报错,但是bootloader却无法正常启动,而且程序大小突然增大了4K。
两篇linux下nand flash很好的文章:
http://www.cnitblog.com/luofuchong/archive/2007/08/31/32682.html
http://www.cnitblog.com/luofuchong/archive/2007/09/04/32939.html