http://www.zhihu.com/question/21192856
学习linux驱动开发的方法?
有一些基础了,比如c,接着呢?希望有经验的人谈谈自己的学习历程。
好吧,这是我在知乎发的第一个回答!
四年前我第一次接触android,开始做底层linux的驱动的开发。
首先,接触linux操作系统,在你的电脑上装一个linxu操作系统(建议ubuntu,比较友好),熟悉经常要用的命令,熟悉环境(建议看“鸟哥的linux私房菜”)。
其次,阅读经典书籍是不可少的,建议先看ldd前四章,大概了解linux驱动的框架,驱动是做什么的,该如何写驱动,那本书上有一些例子,可以在你的电脑上编译,执行看看。后面的章节在结合自己的情况而定。
第三,建议阅读ulk(understanding the linux kernel)所有的内容,了解linux内核的一些基本知识,在心中建立一个框架,不必完全懂,深入了解就好,以后经常翻翻,受益无穷!然后还有其他的一些经典书籍,网上都有的,都看看吧!
第四,还别着急,这才是你真的进入linux驱动的第一步,花点钱买个开发板吧,然后了解代码的编译,下载,看看板子的datasheet,针对自己感兴趣的深入研究。建议学习流程,led灯控制---tp---i2c总线-----lcd-----camera----flash----wifi/bt等。因为这个里面牵涉了甚多内核的子系统(input,v4l2,fb等
),所以可能要多话时间看代码,了解代码的框架,设计的思想等,只要一步一个脚印,一定会有所成。
第五,因为现在的移动设备大多数都是android的了,所以你就要看看linux kernel在android的作用,然后往上看看,看看hal层的代码,这些在调试中都是需要的,如果有兴趣,更加可以看看framework的代码了,学习android一些工作机制,类似于surfaceflinger,audioflinger等等。。
这个基本上就是我学习的一个大概过程,read the fucking source code。
祝你成功!
四年前我第一次接触android,开始做底层linux的驱动的开发。
首先,接触linux操作系统,在你的电脑上装一个linxu操作系统(建议ubuntu,比较友好),熟悉经常要用的命令,熟悉环境(建议看“鸟哥的linux私房菜”)。
其次,阅读经典书籍是不可少的,建议先看ldd前四章,大概了解linux驱动的框架,驱动是做什么的,该如何写驱动,那本书上有一些例子,可以在你的电脑上编译,执行看看。后面的章节在结合自己的情况而定。
第三,建议阅读ulk(understanding the linux kernel)所有的内容,了解linux内核的一些基本知识,在心中建立一个框架,不必完全懂,深入了解就好,以后经常翻翻,受益无穷!然后还有其他的一些经典书籍,网上都有的,都看看吧!
第四,还别着急,这才是你真的进入linux驱动的第一步,花点钱买个开发板吧,然后了解代码的编译,下载,看看板子的datasheet,针对自己感兴趣的深入研究。建议学习流程,led灯控制---tp---i2c总线-----lcd-----camera----flash----wifi/bt等。因为这个里面牵涉了甚多内核的子系统(input,v4l2,fb等
),所以可能要多话时间看代码,了解代码的框架,设计的思想等,只要一步一个脚印,一定会有所成。
第五,因为现在的移动设备大多数都是android的了,所以你就要看看linux kernel在android的作用,然后往上看看,看看hal层的代码,这些在调试中都是需要的,如果有兴趣,更加可以看看framework的代码了,学习android一些工作机制,类似于surfaceflinger,audioflinger等等。。
这个基本上就是我学习的一个大概过程,read the fucking source code。
祝你成功!