_IS_AND | NAND_NO_AUTOINCR |NAND_NO_READRDY | NAND_4PAGE_ARRAY |
BBT_AUTO_REFRESH
},
{NULL,}
};
/*
* Manufacturer ID list
*/
struct nand_manufacturers nand_manuf_ids[] = {
{NAND_MFR_TOSHIBA, "Toshiba"},
{NAND_MFR_SAMSUNG, "Samsung"},
{NAND_MFR_FUJITSU, "Fujitsu"},
{NAND_MFR_NATIONAL, "National"},
{NAND_MFR_RENESAS, "Renesas"},
{NAND_MFR_STMICRO, "ST Micro"},
{NAND_MFR_HYNIX, "Hynix"},
{NAND_MFR_MICRON, "Micron"},
{NAND_MFR_AMD, "AMD"},
{0x0, "Unknown"}
};
既然对于ARM920T的核,Linux内核已经对大部分的NANDFLASH完美支持了,那还需修改什么呢 分区系统虽然对NANDFLASH进行了默认的分区,但这可能不是我们想要的,我们的分区得和UBOOT中对NANDFLASH的分区保持一致
g.2修改Nand Flash 分区表:那我怎么知道如何分啊?参考系统默认的,那系统默认的分区又在那里定义了?
对于S3C24XX这个CPU ,对于NANDFLASH这样的平台设备打开arch/arm/plat-s3c24xx/comm-smdk.c
/* NAND parititon from 2.4.18-swl5 */
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "Boot Agent",
.size = SZ_16K,
.offset = 0,
},
[1] = {
.name = "S3C2410 flash partition 1",
.offset = 0,
.size = SZ_2M,
},
[2] = {
.name = "S3C2410 flash partition 2",
.offset = SZ_4M,
.size = SZ_4M,
},
[3] = {
.name = "S3C2410 flash partition 3",
.offset = SZ_8M,
.size = SZ_2M,
},
[4] = {
.name = "S3C2410 flash partition 4",
.offset = SZ_1M * 10,
.size = SZ_4M,
},
[5] = {
.name = "S3C2410 flash partition 5",
.offset = SZ_1M * 14,
.size = SZ_1M * 10,
},
[6] = {
.name = "S3C2410 flash partition 6",
.offset = SZ_1M * 24,
.size = SZ_1M * 24,
},
[7] = {
.name = "S3C2410 flash partition 7",
.offset = SZ_1M * 48,
.size = MTDPART_SIZ_FULL,
}
};
static struct s3c2410_nand_set smdk_nand_sets[] = {
[0] = {
.name = "NAND",
.nr_chips = 1,
.nr_partitions = ARRAY_SIZE(smdk_default_nand_part),
.partitions = smdk_default_nand_part,
},
};
/* choose a set of timings which should suit most 512Mbit
* chips and beyond.
*/
static struct s3c2410_platform_nand smdk_nand_info = {
.tacls = 20,
.twrph0 = 60,
.twrph1 = 20,
.nr_sets = ARRAY_SIZE(smdk_nand_sets),
.sets = smdk_nand_sets,
};
好了不多想了直接参考这个依葫芦画瓢的修改回到自己的板层文件
root@bootloader:/home/eilian/development/Linux/linux-2.6.39/arch/arm/mach-s3c2440#
打开mach-eilian240.c根据自己移植的UBOOT在里面添加对NANDFLASH分区的代码,代码如下
/* NAND Flash on eilian240 board */
static struct mtd_partition eilian240_nand_part[] __initdata = {
[0] = {
.name = "bootloader",
.size = SZ_1M, //UBOOT大小1M
.offset = 0,
},
[1] = {
.name = "params", //存放参数
.size = SZ_128K,
.offset = SZ_1M,
},
[2] = {
.name = "kernel",
.size = 0x00500000,
.offset = SZ_1M + SZ_128K, //内核
},
[3] = {
.name = "root",
.offset = SZ_1M + SZ_128K + 0x00500000,//根文件系统
.size = 1024 * 1024 * 1024,
},
[4] = {
.name = "nand",
.offset = 0,
.size = SZ_256M, //整个NANDFLASH 可有可无
},
};
static struct s3c2410_nand_set eilian240_nand_sets[] __initdata = {
[0] = {
.name = "nand",
.nr_chips = 1,
.nr_partitions = ARRAY_SIZE(ei