4、 修改NANDFlash驱动:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
a) 修改arch/arm/plat-s<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />3c24xx/common-smdk.c(这是SMDK2410H和SMDK2440的共用代码) NANDFlash分区信息,约在109行处smdk_default_nand_part[]结构体中,如果Bootloader是UBOOT则比较好办,因为UBOOT作为Bootloader,NAND分区表是由Linux内核载入的,内核中分成什么样就是什么样。若是VIVI的话,则VIVI的分区必须和内核中这里的分区一致。
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "Boot Agent", //分区名字
.offset = 0, //分区起始地址
.size = SZ_64K*3, //分区大小,这里第一个分区的大小我是
//根据uboot中start.S中重定向代码段 //拷贝的大小确定为192KB,0x30000
}, // 对于SZ_64K这些定义大小的宏定义在arch/arm/include/asm/Sizes.h
[1] = {
.name = "BootLoader Param Agent",
.offset = SZ_64K*3,
//由uboot中/include/configs/hgateway.h中
//#define CONFIG_ENV_OFFSET 0x30000得到
.size = SZ_64K,
//由uboot中/include/configs/hgateway.h中
//#define CONFIG_ENV_SIZE 0x10000得到
},
[2] = {
.name = "Kernel Agent",
.offset = SZ_256K,
.size = SZ_1M*3,
},
[3] = { //剩下的划为一个区
.name = "File System Agent",
.offset = SZ_256K+ SZ_1M*3, //0x340000
.size = 0x03cc0000, //60MB+744KB
}
};
b) 修改arch/arm/plat-s3c24xx/common-smdk.c中NANDFlash的读写匹配时间,约在140行处,结构体smdk_nand_info
static struct s3c2410_platform_nand smdk_nand_info = {
.tacls = 20,
.twrph0 = 60,
.twrph1 = 20,
.nr_sets = ARRAY_SIZE(smdk_nand_sets),
.sets = smdk_nand_sets,
};
//此三个参数根据芯片手册知晓,看了老半天了没有看明白这三个值到底怎么确认
c) 在配置菜单中添加对NANDFlash的支持, #make menuconfig然后在配置菜单中选“Device Drivers——Memory Techonlogy Device(MTC)support——MTD partitioning support——NAND Device Support——NAND Flash support for S3C2410/S3C2440 SoC”然后保存配置菜单。
文章评论(0条评论)
登录后参与讨论