我就是完全按照那上面说的啊,
1. 从Tiny6410配套内核中复制Nand相关驱动
将友善之臂提供的内核中的它们复制到刚才解压的内核的对应文件夹下
drivers/mtd/nand/s3c_nand.c
arch/arm/plat-samsung/include/plat/regs-nand.h
drivers/mtd/nand/s3c_nand_mlc.fo
drivers/mtd/nand/nand_base.c
drivers/mtd/nand/s3c_nand.c
如图所示:
中大概79行左右包含了MLC的分区信息:
#ifdef CONFIG_MACH_MINI6410
static struct mtd_partition mini6410_nand_part_mlc[] = {
{
.name = "Bootloader",
.offset = 0,
.size = (4 * SZ_1M), //0x0-0x400000
.mask_flags = MTD_CAP_NANDFLASH,
},
{
.name = "Kernel",
.offset = (4 * SZ_1M),
.size = (8 * SZ_1M) , //0x400000-0x800000
.mask_flags = MTD_CAP_NANDFLASH,
},
{
.name = "File System",
.offset = MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL,
}
};
#endif
arch/arm/mach-s3c64xx/mach-mini6410.c中包含的是SLC Flash的分区
cp arch/arm/configs/s3c6400_defconfig .config
2. 同时复制配置文件
drivers/mtd/nand/Kconfig
上面文件也可以通过自己修改实现,难度不大。
3. 修改Nand相关的Makefile
在drivers/mtd/nand/Makefile中20行增加
obj-$(CONFIG_MTD_NAND_S3C) += s3c_nand.o
另外,在末尾再增加
S3C_NAND_MLC_SRC = $(shell ls drivers/mtd/nand/s3c_nand_mlc.c 2>/dev/null)
ifeq ($(S3C_NAND_MLC_SRC),)
obj-$(CONFIG_MTD_NAND_S3C) += s3c_nand_mlc.fo
else
obj-$(CONFIG_MTD_NAND_S3C) += s3c_nand_mlc.o
endif
这步要是不愿意改的话,直接从配套内核拷贝覆盖即可
4. 再次配置Nand 驱动
#make menuconfig
内核配置菜单中做如下选择:
Device Drivers--->
<*> Memory Technology Device (MTD) support --->
[*] MTD partitioning support
[*] Command line partition table parsing
<*> Direct char device access to MTD devices
<*> Caching block device access to MTD devices
<*> NAND Device Support --->
<> NAND Flash support for Samsung S3C SoCs
<*> NAND Flash support for S3C SoC
[*] S3C NAND Hardware ECC
5. 执行初次编译
#make
Make成功