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  结构体   

  1. // add by acanoe first   
  2. extern void s3c64xx_reserve_bootmem(void);  //add by acanoe   
  3.   
  4. struct mtd_partition ok6410_nand_part[] = {  
  5.     {  
  6.         .name       = "Bootloader",  
  7.         .offset     = 0,  
  8.         .size       = (1 * SZ_1M),  
  9.         .mask_flags = MTD_CAP_NANDFLASH,  
  10.     },  
  11.     {  
  12.         .name       = "Kernel",  
  13.         .offset     = (1 * SZ_1M),  
  14.         .size       = (5*SZ_1M) ,  
  15.         .mask_flags = MTD_CAP_NANDFLASH,  
  16.     },  
  17.     {  
  18.         .name       = "User",  
  19.         .offset     = (6 * SZ_1M),  
  20.         .size       = (120*SZ_1M) ,  
  21.     },  
  22.     {  
  23.         .name       = "File System",  
  24.         .offset     = MTDPART_OFS_APPEND,  
  25.         .size       = MTDPART_SIZ_FULL,  
  26.     }  
  27. };  
  28.   
  29. static struct s3c2410_nand_set ok6410_nand_sets[] = {  
  30.     [0] = {  
  31.         .name       = "nand",  
  32.         .nr_chips   = 1,  
  33.         .nr_partitions  = ARRAY_SIZE(ok6410_nand_part),  
  34.         .partitions = ok6410_nand_part,  
  35.     },  
  36. };  
  37.   
  38. static struct s3c2410_platform_nand ok6410_nand_info = {  
  39.     .tacls      = 25,  
  40.     .twrph0     = 55,  
  41.     .twrph1     = 40,  
  42.     .nr_sets    = ARRAY_SIZE(ok6410_nand_sets),  
  43.     .sets       = ok6410_nand_sets,  
  44. };  
  45. //add by acanoe first   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 下一页

相关内容