OK6410、Linux2.6.36内核移植,DM9000 驱动移植
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
|
评论暂时关闭