最近好长时间没有来更新博客了,是因为最近公司要做TD的上网卡,参考项目NANDFLASH为1Gb+512Mb,需要在这个基础上修改为512Mb+128Mb,本人以前是做上层开发的,是头一次调整驱动,有什么说的不对的地方,就请大家多包涵了,下面就言归正传了。
首先我们说一下1Gb的NANDFLASH跟512Mb的区别,在这个项目开始评估的时候,我认为修改一下NANDFLASH的BLOCK数就可以了,后来在实际的开发过程中才发现并不这么简单。
大家在网在搜一下关于NANDFLASH的结构就会知道,NANDFLASH是以页为单位写,以块为单位来擦除,那么它们的区别就在这个上面:
1Gb 为大页 page=2048Kb BLOCK=128K
512Mb 为小页 page=512byte BLOCK=16K
还有个区别就是ECC的验证,这个我就不说了,网上一查有很多,我只是告诉大家:
ECC是每256个字节生产一个24位的值。
NANDFLASH在写的时候会生成一个原始的ECC值保存在页的SPARE区,当要读页时也会生产一个ECC值,会跟SPARE的值进行异或比较,看结果是否为0,所有在大页换小页的时候,一定要修改这个算法,相反也是
大页需要8对ECC 小页只需要2对ECC。
下面就是代码区跟文件系统的分割了。这个因为跟实际的项目和平台有关,我就不多说了,我使用的的T3G7210平台,如果大家需要探讨什么的话,可以给我发邮件apcwowo@hotmail.com
阅读(2134) | 评论(0) | 转发(0) |