加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使内核支持NOR FLASH分区

发布时间:2020-12-15 07:01:02 所属栏目:百科 来源:网络整理
导读:使内核支持NOR FLASH 分区 由于华恒的NOR FLASH 的默认分区是 0x00000000 – 0x00040000 “ppcboot” 0x00040000 – 0x00140000 “kernel” 0x00140000 – 0x00540000 “ramdisk” 0x00540000 – 0x00740000 “cramfs” 0x00740000 – 0x00800000 “jffs2”
使内核支持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重新分区了!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读