《Android深度探索(卷1)》李宁/HAL与驱动开发

    第一章、通过对第一章android系统移植与驱动开发的学习,我学到了很多的知识,移植就是指为特定的设备定制android开发程序的过程,使得android可以识别这些硬件设备,linux驱动程序支持各种硬件设备,而android又是基于linux内核的,android的系统构架分为四层:第一层为linux内核,第二层为c/c++代码库,第三层为android SDK API直接面向应用程序的java APK,第四层为应用程序,直接面向最终用户的java应用程序(APK程序);android的移植分为两个部分:应用移植和系统移植,android操作系统的移植包括linux驱动和HAL程序库的移植,而一个操作系统想要在特定的硬件平台上运行的首要条件是该操作系统支持硬件平台的cpu架构,除此之外还的让android可以识别平台上的各种硬件,系统移植除了cpu构架外,最重要的是移植linux驱动,并不像其他linux系统一样由应用程序直接访问驱动,而中间隔了一层HAL层,android移植很大程度上是linux内核的移植,linux内核的移植主要就是移植驱动程序,在移植linux驱动时主要考虑linux的内核版本,就算android版本不同,只要linux内核版本相同,linux驱动就可以相互替换(有时也得考虑HAL是否和linux驱动兼容),任何一台计算机系统的运行都是软硬件共同作用的结果,有时不同型号的设备可以通过接口对类进行抽象,来降低对象与对象之间的耦合度,使得其应用程序都能正常的运行,linux将存储器和外设分为三大类:字符设备、块设备、网络设备,linux内核与网络设备的通信和linux与字符设备、块设备的通信方式完全不同,linux驱动都有一个装载函数和卸载函数,通过module_init和module_exit宏指定。

第二章、通过对本章节的学习,我学会了如何搭建android底层开发环境,android底层开发环境不仅需要交叉编译环境,还需要开发android应用程序的环境,android应用程序以及android NDK程序就是用来测试linux驱动的,android的底层开发用到了很多的开发工具,并通过安装JDK对环境变量进行配置,搭建android应用程序开发环境包括以下几个步骤:安装android SDK、安装Eclipse、安装ADT、配置ADT、建立AVD;安装android NDK的开发环境的步骤:下载android NDK、安装CDT、命令行方式编译android NDK程序、导入android NDK的例子、配置android NDK的集成开发环境;最后就是安装交叉编译环境,由于不同构架的CPU的指令集不同,因此需要配置交叉编译环境,通过配置交叉编译环境可以生成在一个平台上编译在另一个平台上执行的代码,因此为android的驱动开发提供了重要支持。

第三章、通过对本章Git使用入门的学习,我看到了Git的强大之处,Git是对源代码进行管理的管理器,Git具有非凡的性能和最为优化的存储能力,在学习linux内核、驱动开发的过程中会涉及大量的源代码,要想获得开源项目的源代码,就必须使用Git,因为linux内核完全是使用Git管理的,不掌握Git,就无法对linux的驱动开发有更深层次的认识,只要掌握了Git就能很轻松的获取我们所需要的东西。Git的使用包括Git的安装、查看Git文档、源代码的提交和获取的步骤方法:创建版本库:git init、将文件提交到本地版本库:git commit、创建本地分支:git branch、切换本地分支:git checkout、在GitHub上创建开源项目、上传代码到GitHub:git push、从GitHub下载源代码:git clone;通过学习,基本掌握了如何使用git从源代码托管服务器获取自己想要的源代码,也可以很容易理解从网上搜索到的通过git下载源代码的命令的含义,学习新技术的最好方式不是阅读技术书籍、也不是在网上查看别人写的文章而是直接阅读自己感兴趣的代码,因为源代码是最能体现软件作者的真正思路的,只有学会了他们的设计思路和内核核心的设计理念,我们才能真正对内核的驱动开发有更加深刻的认识和理解,为以后做linux内核驱动开发提供帮助。

第四章、通过对这个章节的学习,我学会了对android源代码和linux源代码的下载和编译,一套linux的源代码比起android源代码来说可谓是小巫见大巫,一套android的源代码有几GB之多,而完全下载的linux内核源代码只有几百MB,android源代码中包含了很多的东西,如内嵌载android中的应用程序的源代码和android SDK带的各种工具的源代码和HAL的源代码,配置android源代码下载环境的步骤为:创建一个用于存放脚本文件(repo)的目录、下载repo脚本文件(用于下载android源代码)、创建用于存放的android源代码的目录、初始化、开始下载android源代码;若要下载android源代码中的一部分有两种方法:1、使用 repo sync 命令:# repo sync platform/bootable/recovery 就是将源代码中的/bootable/recovery这个项目单独下载下来;2、使用 git clone 命令,如还是下载recovey工程的命令如下:git clone http://android.googlesource.com/platform/bootable/recovery.编译android源代码的步骤:初始化编译环境、选择目标、编译android源代码;为了缩短编译时间,可以在拥有多CPU、多核、超线程的PC上使用—jn命令行参数,这样make命令就会利用多个CPU进行编译,这将大大提高android源代码的编译效率。linuxde 源代码下载比较简单,不像android源代码得从Google提供的网址下载,对于liunux的内核成功编译后会在(linux内核源代码根目录)/arch/arm/boot目录生成一个zImage文件,该文件就是linux内核的二进制版本,可以直接使用zImage安装到开发板上。

下载地址

桩白墨无任何广告与收费,输入暗号后可查看(微信扫描右侧二维码,进入“墨友圈”小程序即可看到暗号)
暗号:
使用“墨友圈”小程序,点外卖、看电影、充话费享折扣,买书、买 kindle 都可领取优惠券。如果小程序访问不了,也可以在站长公众号回复“暗号”。在微信里搜索“桩白墨”或者“baimoz”或者微信扫描下方二维码都可以关注本站微信公众号。

站长的话:

桩白墨

你好,我是桩白墨,985毕业,8年程序员,探索人生十几年。很高兴与爱读书的你结缘。我正在日更公众号,输出自己的人生见解和所见所闻,已有 200+ 篇原创文章,可能会对你有帮助。欢迎关注,一起读书成长、交流人生经验。

另外,在公众号上回复特定关键字,可领取站桩教程、chatgpt 教程、美团外卖红包群等粉丝福利。

如果你想认识一群志同道合的朋友,或者近距离跟我探讨问题,欢迎加入我的社群,在那里我会尽我所能帮助你。入口在公众号“桩白墨”上,可直接微信扫码关注。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容