S3C2410支持64M到1GB的NAND FLASH

参考其它的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}
};

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyzgpg.html