本文用《Android深度探索(卷1):HAL与驱动开发》的随书源代码为例详细说明如何配置Android驱动开发和测试环境,并且如何使用源代码中的build.sh脚本文件在各种平台(Ubuntu Linux、Android模拟器和S3C6410开发板)上编译、安装和测试Linux驱动。建议读者使用Ubuntu Linux12.04或更高版本实验本文的方法。最好用root账号登录Linux。

**一、安装交叉编译器**

如果只是在Ubuntu Linux上测试Linux驱动就不需要安装交叉编译器了,但要在Android模拟器或S3C6410开发板上进行测试,就必须安装交叉编译器。

首先下载交叉编译器(分卷压缩)

[分卷1](http://vdisk.weibo.com/s/rH2PH)

[分卷2](http://vdisk.weibo.com/s/rHcNo)

[分卷3](http://vdisk.weibo.com/s/rHfpy)

下载后解压,会发现有两个tgz文件,可以将这两个文件放到/root/compilers目录中,在Linux终端进入该目录,执行如下命令安装交叉编译器。

~~~

# tar zxvf arm-linux-gcc-4.3.2.tgz -C /

# tar jxvf arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2 -C /

~~~

**二、编译和测试Linux内核**

这里的Linux内核有两个,一个是goldfish,也就是Android模拟器使用的Linux内核、另外一个是S3C6410开发板使用的Linux内核(Linux2.6.36)。读者首先要下载这两个Linux内核。

Android模拟器用的Linux内核源代码(分卷压缩)

[goldfish(卷1)](http://vdisk.weibo.com/s/rGgna)

[goldfish(卷2)](http://vdisk.weibo.com/s/rGtsz)

[goldfish(卷3)](http://vdisk.weibo.com/s/rGEK3)

[goldfish(卷4)](http://vdisk.weibo.com/s/rGFbP)

用于S3C6410开发板的Linux内核源代码(分卷压缩)

[分卷1](http://vdisk.weibo.com/s/rGP7W)

[分卷2](http://vdisk.weibo.com/s/rGUCi)

由于随书代码中的word_count驱动已经在goldfish和linux2.6.36中分别建立了符号链接,以便在编译linux内核时同时也会编译word_count驱动,所以linux内核与源代码目录应与作者机器上的目录相同。也就是两个linux内核目录与源代码目录如下:

linux内核目录

/root/kernel/goldfish

/root/kernel/linux_kernel_2.6.36

[源代码](http://vdisk.weibo.com/s/rCmcW/1361708452)目录

/root/drivers

注意/root/drivers目录下就直接是每一章的源代码了,例如/root/drivers/ch06、/root/drivers/ch07

现在需要将/usr/local/arm/arm-none-linux-gnueabi/bin路径加到Linux的PATH环境变量中(不会加的上网查,这是Linux的基本功)

最后进入/root/compilers/goldfish目录,执行make命令编译linux内核,如果完全编译,大概20分钟左右。编译完成后,会在/root/kernel/goldfish/arch/arm/boot目录中生成一个zImage文件,代码1.7MB,这就是用于Android模拟器的Linux内核文件。

**三、编译Linux驱动**

现在来编译随书光盘的驱动程序,这里以word_count驱动为例。在Linux终端进入/root/drivers/ch06/word_count目录。先别忙着编译。首先要设置打开/root/drivers/common.sh文件,修改第一行UBUNTU_KERNEL_PATH变量值为自己机器上安装的Ubuntu Linux内核路径,只要执行“ls /usr/src”命令即可查看当前机器可用的linux内核。如可以设置下面的路径。

UBUNTU_KERNEL_PATH=/usr/src/linux-headers-3.2.0-23-generic

剩下的两个(S3C6410_KERNEL_PATH和/root/kernel/goldfish)只要按着前面的路径解压Linux内核源代码,就不用设置了。

在word_count目录中执行“source build.sh”命令,会允许选择在哪个平台上编译驱动,直接按回车会在Ubuntu Linux上编译。如果编译成功,会发现当前目录多一个word_count.ko文件(驱动文件)。

现在来编译S3C6410上运行的word_count驱动。先别忙,在编译之前,需要Android中的adb命令。因为build.sh足够只能,在编译完后,如果有多个Android设备连接到PC,会允许用户选择上传到哪个设备装载,这里需要选择S3C6410开发板,然后会直接上传到开发板上,如图1所示。

![](https://box.kancloud.cn/2016-01-18_569cb8ab1aa95.png)

图1

可以直接使用adb shell命令进入开发板,也可以使用/root/drivers/shell.sh脚本完成同样的工作,只是后者如果有多个android设备,会允许用选择,而不是输入相应的设备ID。使操作更方便。在/root/drivers目录中提供了很多这样的脚本(shell.sh、push.sh、pull.sh等),这些脚本都会允许用户选择操作的Android设备。

我们通常使用Android SDK中的adb命令,到官方网站下载装载linux版本的Android SDK,然后将根目录> /platform-tools加到PATH环境变量中。

现在再次执行“source build.sh”命令,选择第2项(S3C6410开发板),如果系统没找到开发板,需要将USB线拔下重插一下。然后就可以进入开发板的终端,输入lsmod命令查看驱动的安装情况了。

如果在模拟器上测试,选第3项。具体测试的方法请参见书中相应的章节。

**四、测试Linux驱动**

测试word_count驱动的方法很多,通过命令行测试的方法请参见书中相应的章节,在word_count目录中有一个test_word_count程序,通过执行如下的命令可以测试word_count驱动,编译test_word_count.c程序的方法书中已详细描述。

test_word_count “abc  bb  cc”

上面的命令会输出单词数为3。

如果要编译Android HAL,需要Android源代码。购买S3C6410开发板时商家通常会带一些光盘,里面有用于开发板的Android源代码,如果商家没给光盘,别忘了要哦!

android 调试驱动程序,Android驱动程序开发和调试环境配置相关推荐

  1. Android Studio1.4.x JNI开发基础-基本环境配置

    从Eclipse时代到Android Studio普及,开发工具越来越好用.早些时候还需要安装Cygwin工具,从Android Studio1.3以后,在Android 环境开发JNI程序搭建开发环 ...

  2. vue开发移动端环境配置_如何设置移动开发环境

    vue开发移动端环境配置 The use of mobile devices has increased considerably in the past decade. It has been ov ...

  3. 使用QtCreator开发ros2的环境配置

    使用QtCreator开发ros2的环境配置 使用环境 操作系统:Ubuntu 20.04 amd64 ros2版本:foxy 选择QtCreator的版本 由于ros2的ros-qtc-plugin ...

  4. 极光推送环境区分php,JPush Android 推送如何区分开发、生产环境

    我们 Android 开发者在使用极光推送时可能会发现,在通过官方控制台进行推送时.只有 iOS 区分了开发和生产环境,而 Android 则没有.但实际开发中又确实经常需要针对开发和生产环境分别来推 ...

  5. Android + Eclipse + PhoneGap 2.9.0 安卓最新环境配置,部分资料整合网上资料,已成功安装....

    前言:最近心血来潮做了一个以品牌为中心的网站,打算推出本地服务o2o应用.快速开发手机应用,最后选择了phonegap,这里我只是讲述我安装的过程,仅供大家参考. 我开发的一个模型http://www ...

  6. python开发工具及环境配置_python_在windows下安装配置python开发环境及Ulipad开发工具...

    最近开始学习Python,在网上寻找一下比较好的IDE.因为以前用C#做开发的,用Visual Studio作为IDE,鉴于用惯了VS这么强大的IDE,所以对IDE有一定的依赖性. Python的ID ...

  7. 开发测试服务器配置信息,node服务端中台实现及开发测试生产环境配置

    本人node服务端新人一枚,网上找了不少资料,看了很多别人的配置信息,感觉都不是很合适,看的多了自己也明白配置的具体思路跟实现方式了,以下为我的实现方式.通过package.json里面的script ...

  8. JAVA开发工具包——KDK环境配置

    JDK环境配置: 到官网下载JDK 安装(根据提示就可以) 打开我的电脑–高级系统设置–系统变量 添加JAVA_HOME:根据自己的实际安装路径来添加 添加CLASSPATH: .;%JAVA_HOM ...

  9. I.MX6U-ALPHA开发板(环境配置)

    文章目录 一.文件互传 1.开启Ubuntu下的FTP服务 2.Windows下FTP客户端安装 二.Ubuntu 下 NFS 和 SSH 服务开启 1.NFS 服务开启 2.SSH 服务开启 三.U ...

  10. android 查看gpio状态_iTOP-iMX6开发板-GPIO读写配置文档_V1.0《2》

    本文档主要介绍 iMX6 板子 gpio 引脚读写配置.有关平台文件的设备注册的资料可以参 考"iTOP-iMX6-平台文件注册设备"文档.注册的设备名称是"gpio_c ...

最新文章

  1. Reverse Engineering Custom DataTypes - GUID() in SQL Server to PostgreSQL
  2. 基于linux的java学习,Java学习---Linux总结
  3. cview类 public_在MFC单文档的View类中,如何获得指向状态栏的指针
  4. SAPGUI系统登录页面配置的SAProuter有什么用 1
  5. 视音频编解码学习工程:FLV封装格式分析器
  6. 空间谱专题16:信号个数估计
  7. Verilog 补码加法溢出判断及处理
  8. iOS内存管理的知识梳理
  9. jpanel把原本内容覆盖掉_暖冬遇上倒春寒,花被大雪覆盖,小心一夜回到解放前...
  10. 工厂打工10年,现在被工厂以能力不足为由辞退,可以去仲裁吗?
  11. 语言const的生命周期_如何理解一门编程语言2——以复制构造函数为例
  12. string和System.String
  13. Junit +cucumber 运行报错 initiallizationError
  14. Stable Diffusion 2.0来了,皮卡智能AI早已“抢先”优化升级
  15. pcie台式网卡无法开热点
  16. OpenCL 学习step by step (11) 数组求和(reduction)
  17. Sentinel-1A卫星数据下载
  18. parallels恢复linux密码,Parallels安装Kali2.0遇到的问题及解决办法
  19. [C#-2] delegate和Delegate的区别
  20. Java SE基础知识详解第[13]期—不可变集合、Stream流、异常

热门文章

  1. 关于通过Date.getTime()得到1970年01月1日0点零分问题验证
  2. 2019年,中国即将发生的45个重大变化!
  3. 『前端实习笔记』前言 坎坷的找实习之路
  4. java p2p 下载_java p2p文件传输(含服务器端与jsp源码)
  5. 你知道DAU、MAU、PCU、DAU、ARPU、KPI是指什么?
  6. 从云计算六大技术趋势,看亚马逊云科技的领先优势
  7. 贯穿了易学思想的《大学》与《中庸》
  8. UE C++中获得蓝图函数返回值
  9. 22/02/17学习笔记
  10. encode decode