05-S3C2440学习之内核(移植)linux3.4.2移植(4)支持LED驱动、按键驱动

一、前面的工作:

(1)从头移植3.4.2内核,修改分区,制作jffs2文件系统

http://blog.csdn.net/fengyuwuzu0519/article/details/69802922

(2)修改内核支持yffs2、制作yffs2文件系统、内核裁剪、制作补丁

http://blog.csdn.net/fengyuwuzu0519/article/details/70162666

(3)移植内核支持DM9000C网卡驱动(可以使用mount nfs)、支持三路串口

http://blog.csdn.net/fengyuwuzu0519/article/details/72846205

到此我们移植的内核,已经基本完整,并且包含了网卡驱动,但是驱动还是太少,现在我们把之前写好的2.6.22的驱动,移植到linux3.4.2之中来,扩大系统的驱动。

接下来的工作:

内核升级很多,有很多头文件会被删除,或者某些宏改名或不在使用,导致驱动中的一些头文件不再有效,一些函数无法按以前那样使用,所以我们修改驱动程序的时候,主要是解决内核升级带来的函数变化。因为驱动的编译,依赖于内核。

二、移植linux2.26LED、按键等驱动到3.4.2内核

1、驱动在内核间的移植方法

  • 1. 编译
  • 2. 解决错误
  • 2.1 头文件不对:去掉或改名
  • 2.2 宏不对:改名使用新宏
  • 2.3 有些函数没有了:改名使用新函数
2、移植过程
(1)移植LED驱动
更新内核中的内核目录,需要提前编译此内核目录

直接make,看看有哪些错误

一些头文件不存在了,那就直接去掉看看

再次编译


class_create声明有问题,那就看看内核其他驱动怎么使用这个函数

应该是缺少头 文件,包含一下:


再次编译

发现这个函数是黑色,应该是不再使用这个函数了,那么搜索class_create看看



函数名字改成:device_create
出口函数改名为:device_destroy(firstdrv_class,  MKDEV(major, 0));


编译通过,复制到单板

加载驱动


到此LED驱动移植成果。
(2)移植按键驱动
修改makefile后直接make

加入以上头文件
引脚申明没有了
.
看看在哪个函数用了,内核搜索

如下给出解决方法




继续编译
.

这个展开后有这个变量,应该是某些头没包含。


缺少头文件,看看别人怎么使用这个函数的



继续编译



搜索request_irq怎么使用

宏的名字改变了搜索这个函数怎么用






好多驱动类似,我们可以通过对比软件来修改:



继续编译:




卸载出错:


函数的参数变了




卸载驱动前 先杀死使用它的应用程序。

ps

kill -9 pid




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值