700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 宋宝华——Linux设备驱动开发详解:基于最新的Linux 4.0内核(第一章)

宋宝华——Linux设备驱动开发详解:基于最新的Linux 4.0内核(第一章)

时间:2021-09-05 13:23:33

相关推荐

宋宝华——Linux设备驱动开发详解:基于最新的Linux 4.0内核(第一章)

首先声明,这并不是原创,内容均来自与题目中的书本,但是文章分类并无笔记或者读书手札的选项。

为什么要读书?

答:非科班出身,看韦东山教程快速入门,但是自身了解的知识面实在是太少了,看书可能会从文字中体会到更多作者想表达的思想——并不是说韦东山教程不好,但是教程毕竟不能面面俱到,而且即使这样,看和听的过程中仍会有疏漏,自己的注意力不可能一直保持很集中。

为什么要读这本书?

答:这本书多么好吗?不确定;只不过宋宝华还是挺有名气的,而且也是比较新的面向4.0的书,所以就它了。

华丽的分割线

—————————————————————————————————————————————————————————

第一章 linux设备驱动程序概述及环境搭建

1.1设备驱动的作用:

驱使硬件工作。建立软件和硬件的联系。

1.2无操作系统时的设备驱动

应用软件-->设备驱动-->硬件

错误的示例:应用直接访问硬件、或者驱动中包含应用的处理逻辑。

即应体现“高内聚,低耦合”的思想。

1.3有操作系统时的设备驱动

仍应包含操作硬件的部分,但是同时应融入内核。为了实现这种融合,必须在说有的设备驱动中设计面向操作系统内核的接口,这样的接口由操作系统规定,对一类设备而言结构一致,但又使得其具体的设备间互相独立。

相对于无操作系统,之前是给应用提供接口,现在则是与系统进行交互,为系统提供接口。

这样,应用程序可以使用统一的系统调用接口来访问各种硬件设备。如可以使用read(),write()等函数读写文件就可以访问各种字符设备和块设备。

1.4linux设备驱动

1.4.1设备的分类及特点

字符设备:必须以串行顺序依次进行访问。如触摸屏、磁带驱动器、鼠标等。

块设备:可以按任意顺序进行访问,以块为单位进行操作。如硬盘、eMMC等。

网络设备:面向数据包的发送和接收而设计,并不倾向与对应文件系统的节点。

字符设备和块设备,都使用文件系统的操作接口open(),read(),close(),write()等进行访问。

网络设备则主要使用套接字接口。

1.4.2linux设备驱动与整个软硬件系统的关系

应用程序可以直接调用linux系统调用的接口,也可以通过c库来调用。而c库再调用系统调用。

C 库函数本身也通过系统调用接口而实现,如C 库函数 fopen()、fwrite()、fread()、fclose() 分别会调用操作系统的API open()、write()、read()、close()

1.4.3linux设备驱动的重点、难点

Linux 设备驱动的学习是一项浩繁的工程,包含如下重点、难点。

● 编写Linux 设备驱动要求工程师有非常好的硬件基础,懂得SRAM、Flash、SDRAM、磁盘的读写方式,UART、I2C、USB等设备的接口以及轮询、中断、DMA 的原理,PCI 总线的工作方式以及CPU 的内存管理单元(MMU)等。

● 编写Linux 设备驱动要求工程师有非常好的C 语言基础,能灵活地运用C 语言的结构体、指针、函数指针及内存动态申请和释放等。

● 编写Linux 设备驱动要求工程师有一定的Linux 内核基础,虽然并不要求工程师对内核各个部分有深入的研究,但至少要明白驱动与内核的接口。尤其是对于块设备、网络设备、Flash 设备、串口设备等复杂设备,内核定义的驱动体系结构本身就非常复杂。

● 编写Linux 设备驱动要求工程师有非常好的多任务并发控制和同步的基础,因为在驱动中会大量使用自旋锁、互斥、信号量、等待队列等并发与同步机制。

1.5配套开发环境的搭建(略)

1.6设备驱动Hello World:LED驱动

对比了无系统的led驱动和有系统的led驱动,提供感性认识。

其中,内核中的leds-gpio.c确实自己应该看看。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。