【实验目的】
本实验通过在上个实验的基础上做Nand flash的移植,Nand flash在s3c2410的默认配置中是已经选上的,只是他的分区需要根据我们的实际情况来配置。从而进一步完善系统的结果,并掌握Nand flash的移植方法
【实验环境】
1、 Ubuntu 10.10发行版
2、 u-boot-2010.03
3、 FS2410平台
4、 交叉编译器 arm-none-linux-gnueabi-gcc-4.3.2
【实验步骤】
在linux-2.6.35.2的内核中已经包含了s3c2410的nand flash控制器的驱动,但是需要我们正确配置后才能正常工作。
1、 修改分区信息,建立分区表
在arch/arm/plat-s3c24xx/common-smdk.c中有nand flash的分区信息如下,我们需要在这个基础上进行修改。
修改后为:
static struct mtd_partition smdk_default_nand_part[ ] = {
[0] = {
.name = "bootloader u-boot-2010.03",
.offset = 0,
.size = SZ_1M,
},
[1] = {
.name = "kernel linux-2.6.35",
.offset = SZ_1M,
.size = SZ_4M,
},
[2] = {
.name = "rootfs busybox-1.17.3",
.offset = SZ_1M * 5,
.size = SZ_8M,
},
[3] = {
.name = "usrfs",
.offset = SZ_1M * 13,
.size = SZ_1M * 51,
},
};
2、 配置内核
Device Drivers --->
Memory Technology Device (MTD) support --->
NAND Device Support --->
NAND Flash support for Samsung S3C SoCs
这些选项在这个内核里已经选上了,这里列出来让大家知道添加flash驱动涉及到的内容!
3、 编译内核
$ make zImage
4、 拷贝内核镜像到tftpboot下并重新启动开发板
$ cp arch/arm/boot/zImage /tftpboot
注意:这是在线调试 也可以直接下到目标板上去执行
5、 启动系统,查看系统信息
# cat /proc/mtd
dev: size erasesize name
mtd0: 00100000 00004000 "bootloader u-boot-2010.03"
mtd1: 00400000 00004000 "kernel linux-2.5.35"
mtd2: 00800000 00004000 "rootfs buysbox-1.17.3"
mtd3: 03300000 00004000 "usrfs"