现在的位置: 首页 > 综合 > 正文

Linux 2.6.35.5内核在tq2440上移植成功

2013年08月16日 ⁄ 综合 ⁄ 共 1409字 ⁄ 字号 评论关闭

经过一段时间的摸索,今天总算将2.6.35.5内核成功移植到了tq2440上,总体来说和2.6.30.4内核移植变化不大,可以参考文章tq2440 Linux 2.6.30.4内核移植完成大部分工作,文件系统也采用该文章中制作的即可。但移植过程中也存在一些差异,在这里总结出来。

(1)  General setup  ---> 

              Choose SLAB allocator (SLAB)

这里使用SLAB,虽然采用SLUB性能更好,但如果采用SLUB,在运行时出现错误:can't run '/etc/init.d/rcS': No such file or directory,从天嵌论坛看到采取这个办法可以解决,试了,的确可以,但原因在哪里仍待查找,毕竟还是希望使用SLUB。

(2)    System Type  --->   

                   MMU-based Paged Memory Management Support

一定要选上,不然在挂载根文件系统时会出现很多错误,实践证明,而且这个项就是开启页管理,应该的。

(3)    串口驱动移植有变化,配置方面没有变化,但修改内核文件出现变化,在修改 drivers/serial/samsung.c时,参考http://blog168.chinaunix.net/space.php?uid=24189228&do=blog&id=34993

头文件添加为

#include <mach/regs-gpio.h>

#include <mach/gpio-fns.h>

#include <mach/gpio-nrs.h>

修改语句为

  if (port->line == 2) {

                     s3c2410_gpio_cfgpin(S3C2410_GPIONO(S3C2410_GPIO_BANKH, 6), S3C2410_GPH6_TXD2);

                    s3c2410_gpio_pullup(S3C2410_GPIONO(S3C2410_GPIO_BANKH, 6), 1);

                    s3c2410_gpio_cfgpin(S3C2410_GPIONO(S3C2410_GPIO_BANKH, 7), S3C2410_GPH7_RXD2);

                    s3c2410_gpio_pullup(S3C2410_GPIONO(S3C2410_GPIO_BANKH, 7), 1);

}

这里的操作发生了改变,参考2.6.30.4与2.6.35.5的内核代码,可以看到

2.6.30.4  #define S3C2410_GPH6        S3C2410_GPIONO(S3C2410_GPIO_BANKH, 6)

2.6.35.5  中没有这个定义,但有S3C2410_GPIONO和S3C2410_GPIO_BANKH的定义,因此需要自己构造S3C2410_GPH6

另外,如果深入内核去看,2.6.35.5中,定义了一个新的结构体struct s3c_gpio_chip,该结构体封装了gpio的相关的实现,里面还封装了对配置寄存器的操作方法甚至于还分配了一个自旋锁,具体有哪些内容需要参看内核源码,其中的注释也说明的很详细。因此,在该版本内核中,对ARM的gpio的处理把它真正当做了一个设备。

抱歉!评论已关闭.