日期:2014-05-16  浏览次数:20762 次

linux-2.6.32在mini2440开发板上移植(1)之移植Nand驱动并修改分区信息

编者:linux中的nand的移植由于使用了MTD技术,所以就没有想象的那么复杂了。

1 Linux-2.6.32.2 内核所支持的Nand Flash 类型
       Linux2.6.32.2 已经自带了大部分Nand Flash 驱动, 在linux-2.6.32.2/drivers/mtd/nand/nand_ids.c 文件中,定义了所支持的各种Nand Flash 类型。

2 修改Nand Flash 分区表
但是系统默认的分区不是我们所需的,所以要自已修改,除此之外,还有Nand Flash的结构信息需要增加填写,以便能够适合系统自带的Nand Flash 驱动接口,这可以参考SMDK2440 中关于Nand Flash 设备注册的一些信息。
打开/arch/arm/plat-24xx/common-smdk.c,可以看到这样一个结构体:
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,
         &nbs