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

本文用《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源代码,如果商家没给光盘,别忘了要哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值