[0] = {
.name = "nand",
.nr_chips = 1,
.nr_partitions = ARRAY_SIZE(real6410_nand_part),
.partitions = real6410_nand_part,
},
};
static struct s3c2410_platform_nand real6410_nand_info = {//读写nand的时钟信息,在S3C6410手册中查找数据
.tacls = 25,
.twrph0 = 55,
.twrph1 = 40,
.nr_sets = ARRAY_SIZE(real6410_nand_sets),
.sets = real6410_nand_sets,
};
3、在real6410_machine_init函数中加入:
//---------------------------------nand驱动初始化注册-----------------------------------------
s3c_nand_set_platdata(&real6410_nand_info);
4、配置内核
$ make menuconfig
device driver->MTD support中选中
MTD partitioning support 、Command line partition table parsing、Caching block device access to MTD devices、NAND Device Support、enable ubi
在nand device suppot中选中 NAND Flash support for Samsung S3C SoCs 、 Samsung S3C NAND driver debug、Samsung S3C NAND Hardware ECC 。
此处需要注意:对上面几个选项”shift+/”,发现其是对2410进行配置的,所以需要nand驱动文件夹中的Kconfig,将/drivers/mtd/nand/Konfig修改,把对应选项的2410改成3add_mtd_partitionsSC,原因查看Makefile中的对应选项的config要求。
在file systems->misc filesystem-> 中加入cramfs、UBI的支持,可以参照real28内核的配置
5、将real6410 28内核中的/drivers/mtd/nand/s3c_nand.c拷贝之39内核的相应文件夹,并修改probe函数#if defined(CONFIG_MTD_NAND_S3C_HWECC)之前的部分,可以将友善38内核的相应部分复制过来。
6、编译cramfs文件系统
$sudo apt-get install cramfsprogs
拷贝REAL6410的cramfs系统源码,
$mkcramfs root_mkfs rootfs.cramfs
下载文件系统到开发板
7、修改内核启动参数
setenv bootargs noinitrd root=/dev/mtdblock0 console=ttySAC0 init=/linuxrc video=fb:AT070TN83
8、最后当然要检查一下内核选项,配置好之后编译下载;
9、至此,REAL6410已经能从CRAMFS文件系统启动了!