栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

android 驱动移植方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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程序的寄存器值。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/531529.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号