android 驱动移植方法

        相信很多驱动初学者对于安卓平台的驱动移植有一些搞不懂。最开始我也是一头雾水。今天就来以一个初学者的角度,讲解一下android驱动移植的方法。

      步骤相对比较简单: 

1:增加源代码

2:在Kconfig中增加内容

3:在makefile中增加内容

       具体来说定义一个虚拟的字符硬件设备该设备名为freg 这个是我们本次进行移植的程序:

       首先准备好需要移植驱动的源文件 freg.c  以及freg.h文件。

       找到该驱动的归类。比如emmc驱动存放在mmc目录下。

       ~/Android/kernel/goldfish

----drivers

----freg

----freg.h

----freg.c

----Kconfig

----Makefile

freg是kernel目录下goldfish分类下的一个驱动,由四个文件组成。freg.h和freg.c是源代码文件,kconfig是编译选项配置文件,makefile是编译脚本文件。

移植工作源代码由厂商提供,这里不做介绍。

这里说明一下kconfig文件:

config FREG

tristate "Fake Register Driver"

default n

help

This is the freg driver for android system.

这个文件定义了驱动程序freg的编译选型,在编译之前可以通过makemenuconfig命令来设置这些编译选项,这个配置选项中可以看出,三种模式 y 直接编译到内核,n不编译到内核中。M 编译为模块.so文件。

接下来是makefile文件:

obj- $(CONFIG_FREG)  += freg.o

这个是驱动程序freg的编译脚本文件,其中$(CONFIG_FREG)是一个变量。这个变量的值是y直接编译到内核,变量值为M 则编译为模块。如果变量值不是y也不是n则不会进行编译。

此时我们已经为驱动程序freg编写了kconfig文件,在默认情况下执行makemenuconfig命令配置内核编译选项时,编译系统无法找到这个kconfig文件,我们需要修改内核的根Kconfig文件,这样编译系统能够找到freg 的kconfig文件,。

我们在kernel/arch/arm(非固定视当前架构情况而定)目录下的kconfig文件。实际使用中一般是以项目名后缀,找到

menu “device driver”

endmenu

   在这两行内容之间提那家,将驱动程序的freg的Kcongfig文件包含进来

sourece“drivers/freg/Kconfig”

修改内核makefile文件:

默认情况下。执行make命令编译内核时,编译系统无法找到这个makefiel。因此需要在driver目录下的makefile文件。driver/makefile 文件添加:

obj-$(CONFIG_FREG)+= freg/

至此该驱动freg已经移植完成。

检验是否移植成功:

查询当前驱动程序通过什么文件系统进行的。进入当前文件系统中。比如使用proc文件系统,

进入proc目录

android: /proc #  cat freg 查看当前freg程序的寄存器值。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值