安卓驱动开发要干的那些事

建议:如果是从未接触过驱动开发的人想入这行,建议买本宋宝华的书先看上2个月,弄懂什么是驱动,大致要做哪些工作。安卓驱动开发入门建议先做传感器的驱动开发,因为传感器驱动开发架构清晰,相对简单易于上手。

下面大致讲一下一个项目开发过程中驱动工程师要做的事情:

一:驱动移植

驱动移植要做两件事:一是代码的移植,二是代码的调试。对于一个已经成熟的平台且公司之前开发过该平台,那么这个阶段就相对简单了,这种情况下比较适合公司培养新人入手,了解驱动移植的过程。但是如果是一个新开发的平台,那么工作就比较大了,期间遇到的问题会比较多。这个阶段的目的就是使得外设能够跑起来,手机系统能够操作该外设。

下面以光距离传感器ltr559在高通MSM8916平台为例进行具体的说明。

1:找到ltr559光距离传感器代码,这里把握一个原则,最省事的是能够直接找到该平台(这里是MSM8916)已经调试成功的代码,如果没有则找LTR559厂商要源代码,和LTR559规格书。

2:根据分类,将该代码放到平台底版本合适的文件夹下。这里是/kernel/drivers/sensor/alsps/     ----qualcomm

  /kernel/drivers/misc/mediatek/alsps/   -----mediatek

根据平台在上面对应的目录下新建一个ltr559文件夹,然后把ltr559.c放到该文件夹中

3:配置编译文件config 和makefile文件

4:配置该外设:ltr559的设备树(一般是.dtsi文件),mtk项目还需要配置dws.

文件大致路径:/kernel/arch/arm(arm64)/boot/dts/项目名/平台名.dtsi文件

设备树:通俗的讲就是该设备的一些相关的属性,最重要的是要配置设备树是

属性名compatible ---用于设备与驱动的匹配

slave设备的 i2c 地址----用于cpu与外设通过I2C通信

gpio,中断脚的配置等等

5:上面这些都做好后就可以开始编译代码了

根目录下source build/envset    ---导入环境

lunch  任何选择需要编译的项目

make bootimage -j32  ---开始编译内核(-j后面数字代表CPU核数)

6:接下来就是调试代码了,实现该外设基本功能。调试过程中容易遇到的问题之后再讲。

7:最后就是解bug阶段了。

猜你喜欢

转载自blog.csdn.net/sdkdlwk/article/details/82936509