使内核支持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重新分区了!