1. 参考SMDK2440加入自己的开发版平台MINI2440
2. 修改时钟源频率12000000(晶振)
3. 移植NAND FLASH驱动
Linux2.6.32已经自带了大部分NAND驱动
但是系统默认的分区不是我们所需的,所以要自已修改,除此之外,还有 Nand Flash
的结构信息(bootload, parm,kernel, root文件系统的offset 和size)需要增加填写,以便能够适合系统自带的Nand Flash 驱动接口
static struct mtd_partition friendly_arm_default_nand_part[] = {
[0] = {
.name = "supervivi",
.size = 0x00040000,
.offset = 0,
},
[1] = {
.name = "param",
.offset = 0x00040000,
.size = 0x00020000,
},
[2] = {
.name = "Kernel",
.offset = 0x00060000,
.size = 0x00500000,
},
[3] = {
.name = "root",
.offset = 0x00560000,
.size = 1024 * 1024 * 1024, //
},
[4] = {
.name = "nand",
.offset = 0x00000000,
.size = 1024 * 1024 * 1024, //
}
};
Bootload /dev/mtdblock0
Parameter /dev/mtdblock1
;这里是开发板的nand flash 设置表,因为板子上只有一片,因此也就只有一个表
static struct s3c2410_nand_set mini2440_nand_sets[] = {
[0] = {
.name = "NAND",
.nr_chips = 1,
.nr_partitions = ARRAY_SIZE(mini2440_default_nand_part),
.partitions = mini2440_default_nand_part,
},
};
;这里是nand flash 本身的一些特性,一般需要对照datasheet 填写,大部分情况下按照以下参数填写即可
NFCONF 0x4E000000 R/W NAND flash configuration register 0x0000100X
TACLS:表示CLT/ALE的建立时间(setup time)。
TWRPH0:表示nWE/nRE持续的时间。
TWRPH1:表示写进去的数据起作用的时间(hold time)。
static struct s3c2410_platform_nand mini2440_nand_info = {
.tacls = 20, // 配置时序图HCLK周期
.twrph0 = 60,
.twrph1 = 20,
.nr_sets = ARRAY_SIZE(mini2440_nand_sets),
.sets = mini2440_nand_sets,
.ignore_unset_ecc = 1,
};
添加到平台设备中,注册为平台设备驱动。
对NAND flash驱动的移植可以参考
可以参考:
http://blog.163.com/starjj_embeded/blog/static/20450005120122170425898/
http://blog.csdn.net/it_114/article/details/6259649
3.移植yaffs2,使用git工具下载并为内核打上yaffs2补丁。配置内核配置选项,添加yaffs2的支持。烧些到开发版并测试。