好吧,这是我在知乎发的第一个回答!
四年前我第一次接触android,开始做底层linux的驱动的开发。
首先,接触linux操作系统,在你的笔记本上装一个linxu操作系统(建议ubuntu,比较友好),熟悉常常要用的命令,熟悉环境(建议看“鸟哥的linux私房菜”)。
其次,阅读精典书籍是不可少的,建议先看ldd前四章,大约了解linux驱动的框架,驱动是做哪些的,该怎么写驱动,那本书上有一些事例,可以在你的笔记本上编译linux应用程序,执行瞧瞧。前面的章节在结合自己的情况而定。
第三,建议阅读ulk(understandingthelinuxkernel)所有的内容,了解linux内核的一些基本知识,在心里构建一个框架,毋须完全懂linux培训,深入了解就好,之后时常翻翻,受惠无穷!之后还有其他的一些精典书籍,网上都有的,都瞧瞧吧!
第四,还别着急,这才是你真的步入linux驱动的第一步,花点钱买个开发板吧,之后了解代码的编译,下载,瞧瞧板子的datasheet,针对自己感兴趣的深入研究。建议学习流程,led灯控制---tp---i2c总线-----lcd-----camera----flash----wifi/bt等。由于这个上面涉入了颇多内核的子系统(input,v4l2,fb等
),所以可能要多话时间看代码,了解代码的框架linux驱动学习,设计的思想等,只要一步一个脚印,一定会有所成。
第五,由于现今的联通设备大多数都是android的了,所以你就要瞧瞧linuxkernel在android的作用,之后往上瞧瞧,瞧瞧hal层的代码,那些在调试中都是须要的,假如有兴趣,愈发可以瞧瞧framework的代码了,学习android一些工作机制,类似于surfaceflingerlinux驱动学习,audioflinger等等。。
这个基本上就是我学习的一个大约过程,readthefuckingsourcecode。
祝你成功!