OK6410、Linux2.6.36内核移植,DM9000 驱动移植

还是先来吐槽:本来我是在上一个星期的周末已经把 Linux2.6.34.11 的驱动已经成功的移植到, OK6410 的开发板上的,并且能够启动主机上的NFS 根文件系统, 可是我在周一的时候,开始学习LCD 的驱动程序,  在修改内核文件的时候,有几处错误修改,将原来自己做的2.6.34.11 的内核源码 搞的乱七八糟的,在这里还是自己在修改内核的时候没有提注重注释, 并且没有记录下来自己的操作步骤,以至于我没办法,恢复2.6.34 的内核, 所以也就只能重新先开始最基础的内核移植了。 这次我选择的是2.6.36.2 的内核, 谁知到一开始移植就出现一大堆问题。在这里我不得不说,飞凌开发人员对内核修改的代码,管理真的是太扯了,自己在注销任何一个设备是没有一点点注释,就把这个设备原有的线性地址分配给其它设备了,让我让我们这些菜鸟干看着一大堆的报错信息顶个什么用, 真的是伤不起。好了不乱扯了,现在开始记录。

我的开发环境是:

VMware Ubuntu 10.10 。OK6410 A版 256M+2G 的开发板。 主机系统:XP。Uboot:飞凌提供的Uboot。

参考内核 :飞凌提供的 Forlinx   的2.6.36.2 内核

操作步骤  以下./  均代表你的内核 根目录

1、修改./Makefile191  ARCH          ?=arm                    // 指定cpu类型, arm后面不要有空格,要不然编译是会提醒ARCH 不能为一个目录

192  CROSS_COMPILE      ?=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-             // 指定交叉编译器的路径,按照你自己的进行指定路径2、修改./arch/arm/mach-s3c64xx/mach-smdk6410.c 1)  nandflash  驱动,修改方法

加载头文件       

#include <linux/mtd/mtd.h>          

#include <linux/mtd/partitions.h>       

#include <plat/nand.h>         //这些头文件放在./arch/arm/plat-samsung/include/     下面

添加nand  结构体   

// add by acanoe first    extern void s3c64xx_reserve_bootmem(void);  //add by acanoe       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,   };   //add by acanoe first   

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://127.0.0.1/wyyjyz.html