1.嵌入式Linux驱动程序开发
嵌入式Linux驱动程序开发包罗万象,基本上每个点都要大概了解一下。
1.1 软件工具
Makefile必须要掌握一些,至于Kconfig太简单了只是个配置文件算不上程序技能。shell也必须会一点,因为makefile经常调用shell指令。
1.2 内核API
作为驱动程序的原料,大概了解有什么内核API函数可以用来组合驱动非常重要。
1.3 操作系统基本概念和代码实现
内核的操作系统直接相关的并发、阻塞非阻塞、异步通知、中断和时钟、内存管理等基本概念以及它们的代码实现。这一块内容其实都涉及操作系统基本原理,以及它们在linux内核中是如何实现的,如果懂操作系统基本原理很容易理解。不过有基本概念和了解如何C代码实现是两回事,有人很懂原理叫他用C代码实现出来就卡壳了,这也是C语言基础不过关的提现。
1.4 驱动分离分层概念和实现
设备(设备树编写修改)、总线、驱动概念和实现,特别是刚开机解析设备树、建立设备链表的理解。还有主机侧和设备测驱动的分离概念和实现。
1.5 低级驱动框架
proc、sysfs(udev)、I2C、SPI等一对一的低级驱动框架,已经它们如何在驱动代码中体现的。
1.6 高级驱动框架
USB wifi、UVC、SPI ADC、V4L2、framebuffer、spi flash等一个驱动包括多个低级框架的高级驱动框架。字符设备、块设备、 络设备这种泛泛的概念最好无视,从具体的对应的驱动去学习。一般在具体驱动会看到core、client、master三个部分还有非常多的源文件,基本上看不到单个源文件的驱动程序。
1.7应用层接口
设备 ,sysfs(udev)、proc的实现和在应用层的表现。
1.8调试方法
printk方法最常用。proc、GDB、打桩等方法因为比较复杂一般比较少用。内核模块调试方法也经常用,把驱动做成一个.ko文件可以放在应用层单独加载运行,可以随时替换更改调试比较方便。
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux25019 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!