使内核支持NOR FLASH分区

使内核支持NOR FLASH分区
由于华恒的NOR FLASH的默认分区是
0x00000000 – 0x00040000 “ppcboot”
0x00040000 – 0x00140000 “kernel”
0x00140000 – 0x00540000 “ramdisk”
0x00540000 – 0x00740000 “cramfs”
0x00740000 – 0x00800000 “jffs2”
按照这样的分区,给内核的空间只有1M大小,若编译出的内核大于1M,就不能完整烧写进FLASH,系统是绝对启动不了的,所以,在下载内核前,我们要先让内核支持对NOR FLASH分区;步骤如下:
1. 根据网上资料,知道cfi_flagadm.c文件的驱动结构与NOR FLASH的相似,所以,我们可以修改cfi_flagadm.c驱动来实现内核对NOR FLASH分区的支持;
在2.6.14内核目录下,执行命令:
# cd drivers/mtd/maps
# cp cfi_flagadm.c  HH_s3c2410.c
# vim HH_s3c2410.c
找到宏定义
 #define FLASH_PHYS_ADDR 0X40000000
 #define FLASH_SIZE 0X400000
根据16M NOR FLASH,将其修改如下:
 #define FLASH_PHYS_ADDR 0X00000000 //FLASH起始地址
 #define FALSH_SIZE 0x1000000   //FLASH大小 16M
同时,将FLASH_PARTITION0_ADDR等分区信息修改如下:
 #define FLASH_PARTITION0_ADDR 0x00000000 //bootloader分区起始地址
 #define FLASH_PARTITION0_SIZE  0x00040000 //bootloader分区大小256k
 
 #define FLASH_PARTITION1_ADDR 0x00040000 //kernel分区起始地址
 #define FLASH_PARTITION1_SIZE  0x00200000 //kernel分区大小 2MB
 #define FLASH_PARTITION2_ADDR 0x00240000 //ramdisk分区起始地址
 #define FLASH_PARTITION2_SIZE  0x00400000 //ramdisk分区大小 4MB
 #define FLASH_PARTITION3_ADDR 0x00640000 //jffs分区起始地址
 #define FLASH_PARTITION3_SIZE  0x00700000 //jffs分区大小 7MB
根据自己习惯,更改结构体实例struct mtd_partition flagadm_parts[]内的分区名称,或不修改也行;
保存退出!
2.在内核编译选项中添加HH_s3c2410的编译选项;
# cd drivers/mtd/maps
# vim Konfig
 在 menu “Mapping drivers for chip access”
   depends on MTD!=n
   下添加
    config HH_NOR_FLASH_SUPPORT
     tristate “HH_NOR_FLASH_SUPPORT”
     help
      help
   保存退出!
  # vim Makefile
   在 # Chip mappings下添加
   obj-$(CONFIG_HH_NOR_FLASH_SUPPORT) += HH_s3c2410.o
  保存退出!
 这样,就可以在内核根目录下通过make menuconfig选择编译NOR FLASH分区驱动了;
 # make menuconfig
 Device Drivers->
  Memory Technology Devices(MTD)->
   [*] Memort Technology Device(MTD) support
   [*] MTD partitioning support     //MTD设备分区支持
   [*] Caching block device assess to MTD devices   //未测试是否必须
   Mapping drivers for chip access->
    [*] HH_NOR_FLASH_SUPPORT

 这样就可以使2.6.14内核支持NOR FLASH重新分区了!


你可能感兴趣的:(Flash,kernel)