Linux-2.6.22.6内核移植-- NandFlash驱动的添加
【实验目的】
本实验通过在上个实验结果的linux2.6.22.6内核上移植NAND Flash驱动,使其可以设别到NAND Flash分区,并可以管理相应的Flash设备。从而进一步完善系统结构,并通过移植的过程来了解nandflash的移植方法。
【实验环境】
1、Ubuntu10.10发行版
2、FS2410平台以及开发板中移植好的u-boot-1.3.1
3、交叉编译器 arm-linux-gnu-gcc (ver:3.4.5)
【实验步骤】
在linux2.6.22.6内核中已经包含了s3c2410的nand flash控制器驱动,但需要做一些配置工作才能正常使用。
(1)指明分区信息,建立分区表
在arch/arm/plat-s3c24xx/common-smdk.c文件中,修改分区信息(自己可以根据情况修改分区大小):
#vim arch/arm/plat-s3c24xx/common-smdk.c
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "uboot",
.size = 0x40000,
.offset = 0,
},
[1] = {
.name = "kernel",
.offset = 0x40000,
.size = 0x200000,
},
[2] = {
.name = "rootfs(read only)",
.offset = 0x240000,
.size = 0x800000,
},
[3] = {
.name = "user fs",
.offset = 0xa40000,
.size = 0x600000,
}
};
(5)配置MTD,具体操作如下
root@farsight:/source/kernel/linux-2.6.22.6#make menuconfig
Device Drivers --->
Memory Technology Devices (MTD) --->
NAND Flash Device Drivers --->
<*> NAND Device Support
<*> NAND Flash support for S3C2410/S3C2440 SoC
这些选项代表对NANDFLASH的操作。
(6)编译内核,并将arch/arm/boot/zImge拷贝到/tftpboot目录中
在linux源码的顶层目录执行
#make uImage
[注意: 事先要把u-boot/tools/mkimage拷贝到/usr/bin目录下,并把/usr/bin/mkimage通过sudo 改变权限为777]
#cp arch/arm/boot/zImage /tftpboot
(7)启动系统(登陆用户名:root, 密码:123456)
温馨提示: 如果启动过程中出现类似下面的提示:
|
在目标板串口终端输入:
# cat /proc/mtd
dev: size erasesize name
mtd0: 00040000 00004000 "uboot"
mtd1: 00200000 00004000 "kernel"
mtd2: 00800000 00004000 "rootfs(read only)"
mtd3: 00600000 00004000 "user fs"
可以看到系统已经可以支持nand flash了。