国家高新区网站建设,太原网站建设质量推荐,广西网站设计运营公司,全网营销型网站建设模板这里我主要移植的是增加yaffs2文件系统支持#xff0c;修改和移植nand驱动。1.不知道为什么我这yaffs2的补丁打上了就没发现过编译错误#xff0c;相当顺利啊 呵呵。附上补丁地址-----------------------------------点击打开链接修改补丁里patch‐ker.sh 文件。屏蔽下面这段…这里我主要移植的是增加yaffs2文件系统支持修改和移植nand驱动。1.不知道为什么我这yaffs2的补丁打上了就没发现过编译错误相当顺利啊 呵呵。附上补丁地址-----------------------------------点击打开链接修改补丁里patch‐ker.sh 文件。屏蔽下面这段代码。# Can we handle this version?#if [ $VERSION ‐ne 2 ‐o $PATCHLEVEL ‐lt 6 ]#then# echo Cannot patch kernel version $VERSION.$PATCHLEVEL.$SUBLEVEL, must be 2.6.xor higher# exit 1;#fi然后直接./patch-ker.sh c m -----(内核源码路径)2.修改顶层makefile 的arch 和交叉编译器cross_compile3.复制配置文件smdk6400_defconfig为smdk6410_defconfig由于配置文件太长详见这个下载这个配置文档————————点击打开链接关于配置的问题就不再提了4.nand支持部分修改/file/linuxj/arch/arm/mach-s3c64xx/mach-smdk6410.c 若没有这个文件就复制mach-smdk6400.c1)添加头文件#include #include #include 2)添加分区配置/** Configuring Nandflash on SMDK6410*/struct mtd_partition ok6410_nand_part[] {{.name Bootloader,.offset 0,.size (1 * SZ_1M),.mask_flags MTD_CAP_NANDFLASH,},{.name Kernel,.offset (1 * SZ_1M),.size (5*SZ_1M) ,.mask_flags MTD_CAP_NANDFLASH,},/*{.name User,.offset (6 * SZ_1M),.size (120*SZ_1M) ,},*/{.name File System,.offset MTDPART_OFS_APPEND,.size MTDPART_SIZ_FULL,}};static struct s3c2410_nand_set ok6410_nand_sets[] {[0] {.name nand,.nr_chips 1,.nr_partitions ARRAY_SIZE(ok6410_nand_part),.partitions ok6410_nand_part,},};static struct s3c2410_platform_nand ok6410_nand_info {.tacls 25,.twrph0 55,.twrph1 40,.nr_sets ARRAY_SIZE(ok6410_nand_sets),.sets ok6410_nand_sets,};在platform_device *smdk6410_devices[] __initdata里面添加s3c_device_nand#ifdef CONFIG_REGULATORsmdk6410_b_pwr_5v,#endifsmdk6410_lcd_powerdev,smdk6410_smsc911x,s3c_device_adc,s3c_device_nand,在smdk6410_machine_init(void)里面添加s3c_nand_set_platdata(ok6410_nand_info);3)nand驱动支持1.去网上下个开源的S3C_nand.c源码或者到这里下载----------------------点击打开链接2.当然只这样拷贝了对内核来说不起任何作用内核根本不会去编译它所以现在需要修改drivers/mtd/nand/目录下的配置文件Kconfig和Makfile告知内核来编译s3c_nand.c驱动程序文件。在Kconfig中添加如下信息这样在内核配置的menuconfig中就能看到选项了config MTD_NAND_S3Ctristate NAND support for Samsung S3Cdepends on (ARCH_S3C64XX || ARCH_S5P64XX || ARCH_S5PC1XX) MTD_NANDhelpThis enables the NAND flash controller on the S3CNo board specific support is done by this driver, each boardmust advertise a platform_device for the driver to attach.config MTD_NAND_S3C_DEBUGbool S3C NAND driver debugdepends on MTD_NAND_S3ChelpEnable debugging of the S3C NAND driverconfig MTD_NAND_S3C_HWECCbool S3C NAND Hardware ECCdepends on MTD_NAND_S3ChelpEnable the use of the S3Cs internal ECC generator whenusing NAND. Early versions of the chip have had problems withincorrect ECC generation, and if using these, the default ofsoftware ECC is preferable.If you lay down a device with the hardware ECC, then you willcurrently not be able to switch to software, as there is noimplementation for ECC method used by the S3C.3.然后在Makefile中添加如下信息obj-$(CONFIG_MTD_NAND_S3C) s3c_nand.o4.因为还没有给6410的nand flash寄存器定义但是在s3c_nand中使用了所以编译会有很多未定义错误主要是在arch/arm/plat-samsung/include/plat/regs-nand.h添加/* for s3c_nand.c */#define S3C_NFCONF S3C2410_NFREG(0x00)#define S3C_NFCONT S3C2410_NFREG(0x04)#define S3C_NFCMMD S3C2410_NFREG(0x08)#define S3C_NFADDR S3C2410_NFREG(0x0c)#define S3C_NFDATA8 S3C2410_NFREG(0x10)#define S3C_NFDATA S3C2410_NFREG(0x10)#define S3C_NFMECCDATA0 S3C2410_NFREG(0x14)#define S3C_NFMECCDATA1 S3C2410_NFREG(0x18)#define S3C_NFSECCDATA S3C2410_NFREG(0x1c)#define S3C_NFSBLK S3C2410_NFREG(0x20)#define S3C_NFEBLK S3C2410_NFREG(0x24)#define S3C_NFSTAT S3C2410_NFREG(0x28)#define S3C_NFMECCERR0 S3C2410_NFREG(0x2c)#define S3C_NFMECCERR1 S3C2410_NFREG(0x30)#define S3C_NFMECC0 S3C2410_NFREG(0x34)#define S3C_NFMECC1 S3C2410_NFREG(0x38)#define S3C_NFSECC S3C2410_NFREG(0x3c)#define S3C_NFMLCBITPT S3C2410_NFREG(0x40)#define S3C_NF8ECCERR0 S3C2410_NFREG(0x44)#define S3C_NF8ECCERR1 S3C2410_NFREG(0x48)#define S3C_NF8ECCERR2 S3C2410_NFREG(0x4c)#define S3C_NFM8ECC0 S3C2410_NFREG(0x50)#define S3C_NFM8ECC1 S3C2410_NFREG(0x54)#define S3C_NFM8ECC2 S3C2410_NFREG(0x58)#define S3C_NFM8ECC3 S3C2410_NFREG(0x5c)#define S3C_NFMLC8BITPT0 S3C2410_NFREG(0x60)#define S3C_NFMLC8BITPT1 S3C2410_NFREG(0x64)#define S3C_NFCONF_NANDBOOT (131)#define S3C_NFCONF_ECCCLKCON (130)#define S3C_NFCONF_ECC_MLC (124)#define S3C_NFCONF_ECC_1BIT (023)#define S3C_NFCONF_ECC_4BIT (223)#define S3C_NFCONF_ECC_8BIT (123)#define S3C_NFCONF_TACLS(x) ((x)12)#define S3C_NFCONF_TWRPH0(x) ((x)8)#define S3C_NFCONF_TWRPH1(x) ((x)4)#define S3C_NFCONF_ADVFLASH (13)#define S3C_NFCONF_PAGESIZE (12)#define S3C_NFCONF_ADDRCYCLE (11)#define S3C_NFCONF_BUSWIDTH (10)#define S3C_NFCONT_ECC_ENC (118)#define S3C_NFCONT_LOCKTGHT (117)#define S3C_NFCONT_LOCKSOFT (116)#define S3C_NFCONT_MECCLOCK (17)#define S3C_NFCONT_SECCLOCK (16)#define S3C_NFCONT_INITMECC (15)#define S3C_NFCONT_INITSECC (14)#define S3C_NFCONT_nFCE1 (12)#define S3C_NFCONT_nFCE0 (11)#define S3C_NFCONT_INITECC (S3C_NFCONT_INITSECC | S3C_NFCONT_INITMECC)#define S3C_NFSTAT_ECCENCDONE (17)#define S3C_NFSTAT_ECCDECDONE (16)#define S3C_NFSTAT_BUSY (10)#define S3C_NFECCERR0_ECCBUSY (131)OK移植先告一段落移植预告 后期主要添加串口驱动 usb驱动