S3C2410支持64M到1GB的NAND FLASH
来源:互联网 发布:js array的方法和属性 编辑:程序博客网 时间:2024/04/29 21:37
参考其它的ARM的NAND FLASH驱动,发现别人的NAND FLASH是采用一个表格来检测不同的NAND FLASH,现在已经移植到S3C2410中了。测试也是OK滴。。。只测试过64M的NAND FLASH,我想1G也是差不多滴,只需要看看SPEC。就知道怎么去做了。
这是S3C2410下的NAND FLASH驱动表格:
#define BW_X08 0
#define BW_X16 1
#define BW_X32 2
/*****************************************************************************/
/* S2410 Internal Data Structure Definition */
/*****************************************************************************/
typedef struct
{
UINT16 nMID; /* Manufacturer ID */
UINT16 nDID; /* Device ID */
UINT16 nNumOfBlks; /* Number of Blocks */
UINT16 nPgsPerBlk; /* Number of Pages per block */
UINT16 nSctsPerPg; /* Number of Sectors per page */
UINT16 nNumOfPlanes; /* Number of Planes */
UINT16 nBlksInRsv; /* The Number of Blocks in Reservior for Bad Blocks */
UINT8 nBadPos; /* BadBlock Information Poisition*/
UINT8 nLsnPos; /* LSN Position */
UINT8 nECCPos; /* ECC Policy : HW_ECC, SW_ECC */
UINT16 nBWidth; /* Nand Organization X8 or X16 */
} S2410Spec;
static S2410Spec astNandSpec[] = {
/*************************************************************************/
/* nMID, nDID, */
/* nNumOfBlks */
/* nPgsPerBlk */
/* nSctsPerPg */
/* nNumOfPlanes */
/* nBlksInRsv */
/* nBadPos */
/* nLsnPos */
/* nECCPos */
/* nBWidth */
/*************************************************************************/
/* 8Gbit DDP NAND Flash */
{ 0xEC, 0xD3, 8192, 64, 4, 2,160, 0, 2, 8, BW_X08},
/* 4Gbit DDP NAND Flash */
{ 0xEC, 0xAC, 4096, 64, 4, 2, 80, 0, 2, 8, BW_X08},
{ 0xEC, 0xDC, 4096, 64, 4, 2, 80, 0, 2, 8, BW_X08},
//{ 0xEC, 0xBC, 4096, 64, 4, 2, 80, 0, 2, 8, BW_X16},
//{ 0xEC, 0xCC, 4096, 64, 4, 2, 80, 0, 2, 8, BW_X16},
/* 2Gbit NAND Flash */
{ 0xEC, 0xAA, 2048, 64, 4, 1, 40, 0, 2, 8, BW_X08},
{ 0xEC, 0xDA, 2048, 64, 4, 1, 40, 0, 2, 8, BW_X08},
//{ 0xEC, 0xBA, 2048, 64, 4, 1, 40, 0, 2, 8, BW_X16},
//{ 0xEC, 0xCA, 2048, 64, 4, 1, 40, 0, 2, 8, BW_X16},
/* 2Gbit DDP NAND Flash */
{ 0xEC, 0xDA, 2048, 64, 4, 2, 40, 0, 2, 8, BW_X08},
{ 0xEC, 0xAA, 2048, 64, 4, 2, 40, 0, 2, 8, BW_X08},
//{ 0xEC, 0xBA, 2048, 64, 4, 2, 40, 0, 2, 8, BW_X16},
//{ 0xEC, 0xCA, 2048, 64, 4, 2, 40, 0, 2, 8, BW_X16},
/*1Gbit NAND Flash */
{ 0xEC, 0xA1, 1024, 64, 4, 1, 20, 0, 2, 8, BW_X08},
{ 0xEC, 0xF1, 1024, 64, 4, 1, 20, 0, 2, 8, BW_X08},
//{ 0xEC, 0xB1, 1024, 64, 4, 1, 20, 0, 2, 8, BW_X16},
//{ 0xEC, 0xC1, 1024, 64, 4, 1, 20, 0, 2, 8, BW_X16},
/* 1Gbit NAND Flash */
{ 0xEC, 0x79, 8192, 32, 1, 4,120, 5, 0, 6, BW_X08},
{ 0xEC, 0x78, 8192, 32, 1, 4,120, 5, 0, 6, BW_X08},
//{ 0xEC, 0x74, 8192, 32, 1, 4,120,11, 0, 6, BW_X16},
//{ 0xEC, 0x72, 8192, 32, 1, 4,120,11, 0, 6, BW_X16},
/* 512Mbit NAND Flash */
{ 0xEC, 0x76, 4096, 32, 1, 4, 70, 5, 0, 6, BW_X08},
{ 0xEC, 0x36, 4096, 32, 1, 4, 70, 5, 0, 6, BW_X08},
//{ 0xEC, 0x56, 4096, 32, 1, 4, 70,11, 0, 6, BW_X16},
//{ 0xEC, 0x46, 4096, 32, 1, 4, 70,11, 0, 6, BW_X16},
/* 256Mbit NAND Flash */
{ 0xEC, 0x75, 2048, 32, 1, 1, 35, 5, 0, 6, BW_X08},
{ 0xEC, 0x35, 2048, 32, 1, 1, 35, 5, 0, 6, BW_X08},
//{ 0xEC, 0x55, 2048, 32, 1, 1, 35,11, 0, 6, BW_X16},
//{ 0xEC, 0x45, 2048, 32, 1, 1, 35,11, 0, 6, BW_X16},
/* 128Mbit NAND Flash */
{ 0xEC, 0x73, 1024, 32, 1, 1, 20, 5, 0, 6, BW_X08},
{ 0xEC, 0x33, 1024, 32, 1, 1, 20, 5, 0, 6, BW_X08},
//{ 0xEC, 0x53, 1024, 32, 1, 1, 20,11, 0, 6, BW_X16},
//{ 0xEC, 0x43, 1024, 32, 1, 1, 20,11, 0, 6, BW_X16},
{ 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0}
};
嘿嘿,总算是搞定NAND FLASH的编程了。可以支持64M到1GB的FLASH了。可以直接换IC即可。不需要更换驱动程序。在驱动中作了一个表格,从64M的到1GB的芯片信息全部在这个表格中,驱动采用查表得方式找到对应的IC。从而确定需要支持多大的NAND FLASH。。S3C2410的驱动和S3C2440的驱动还是有很多不一样的地方,相比较而言。。。S3C2440的驱动好写些。而S3C2410的不太好写。特别是ECC的校验。方式有点不一样。写法也不一样。前期老是出现:WARNING: OEMPlatformInit failed to initialize Boot Media。很头痛。后来仔细分析了这两颗IC发现寄存器还是有点不一样呀。汗颜啦。不动手实践,还是不知道答案滴。行动产生效率。。。。
- S3C2410支持64M到1GB的NAND FLASH
- s3c2410移植nand支持到uboot, 使用nand_legacy.c 【1】
- s3c2410的nand flash的驱动分析
- s3c2410的nand flash的驱动分析
- s3c2410的nand flash的驱动分析
- 实现NAND FLASH的扩展(64M->128M)
- S3C2410 NAND FLASH控制器
- S3C2410/S3C2440 NAND Flash
- u-boot1.1.6移植到S3C2410的详细步骤--nand flash(新代码)
- S3C2440之NAND FLASH移植到S3C2410的驱动分析[一]
- S3C2410读写Nand Flash分析
- S3C2410读写Nand Flash分析
- S3C2410读写Nand Flash分析
- S3C2410读写Nand Flash分析
- qemu-uboot-mini2440 支持 256M 大容量NAND FLASH 的解决方法
- Openwrt 15.05.1增加对MT7620a NAND flash的支持
- s3c2410移植nand支持到uboot, 使用nand.c ,linux mtd 架构 【2】
- s3c2410移植nand支持到uboot, 使用nand.c ,linux mtd 架构
- Tortoise SVN 客户端 基本用法
- asp DateDiff函数运用
- How to change software UI language
- asp 三级数据库联动下拉列表
- 利用视频文件光端机制造电子查巡系统
- S3C2410支持64M到1GB的NAND FLASH
- SQL日期时间函数大全 Sql Server中的日期与时间函数
- HTTP 状态代码
- 无奈的80人
- 寻找更快的内存拷贝方式
- 没法活了
- linux swap分区大小
- 什么是DOM (转帖)
- sqlserver常用函数/存储过程/数据库角色 收藏