文章目录
01.准备工作
- 在读了几天《Linux设备驱动程序》后,感觉读书效率不高,两三天才读完一个章节,并且读完后能输出的东西也很少。入门时,逐字逐句读书简直太浪费时间,并且细节的东西读了就忘,毫无意义。因此,这里反思学习方法,并从头开始
- Linux内核开发其实际大部分为驱动开发
1. 推荐读物
- 《Linux内核设计与实现》
- 《Linux驱动开发详解》
- 《Linux设备驱动程序》
- 《Linux应用开发完全手册》
- 《深入理解Linux内核》
2. 学习路线
- LDD3->linux内核设计与实现->深入Linux设备驱动程序内核机制->Linux设备驱动开发详解
3. 学习方法
- 有输入就要有输出
- 先快速简要地阅读整个章节(模块)的内容,快速扫一下模块代码,然后尝试自行修改代码
- 初学者禁止逐字逐句读书,应先整体上把握章节,最后实际开发中查询细节东西
- 有开发环境和开发板配合,进行实操
- 看相关开发学习视频
- 文字总结、绘图总结很重要
4. 学习工具
- 源码阅读工具:VSCode或SourceInsight
- 函数关系绘图工具:graphviz(绘图工具)+doxygen(类似JavaDoc风格描述的文档系统)+Visio
5. 学习动力
- 坚持+3!
- 反复循环学习!
- 入门比较难,入了门之后就较为轻松
6. 开发环境
尝试过以下几个开发环境
第一种:WM+Ubuntu14.04开发环境
- Ubuntu14.04-server:内核版本
4.2.0-27-generic
- 4.2.1内核:下载链接
- 备注:内核版本的三个数字分别表示主版本号、次版本号、修订版本号,内核与系统只需要主次版本号一致即可!
- 构建准备
cd linux-4.2.1
make oldconfig
make prepare
make scripts
-
可能出现的问题:
安装模块时,可能出现no symbol version for module_layout
第二种:NanoPi NEO Air开发板环境
- NanoPi NEO Air硬件特性:全志H3四核A7处理器,官方wiki
- 内核编译见官方wiki,Building U-boot and Linux for H5/H3/H2+/zh
第三种:NanoPiT3开发板环境
- 硬件特性:八核Cortex-A53架构的S5P6818处理器
- NanoPiT3 wiki
第四种:OpenWrt开发环境
- 硬件特性:MT7688平台
- Widora开发板