Linux设备驱动开发详解 基于最新的Linux4.0内核-第1章 Linux设备驱动概述及开发环境构建

本文介绍了Linux设备驱动的作用、类型及其在操作系统中的工作原理。重点讲解了字符设备、块设备和网络设备的特点,并阐述了Linux设备驱动与内核、文件系统的关系。同时,提到了驱动开发中的难点,包括硬件理解、C语言基础、内核知识和并发控制。最后,讨论了Linux驱动开发环境的搭建,包括PC上的Linux环境和QEMU实验平台。
摘要由CSDN通过智能技术生成

第1章 Linux设备驱动概述及开发环境构建

1.1 设备驱动的作用

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

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

1.4 Linux设备驱动

1.4.1 设备驱动分类及特点

计算机系统的硬件主要由CPU、存储器和外设组成,驱动针对的对象是存储器和外设。
分类:字符设备、块设备、网络设备。
特点
字符设备:必须以串行顺序依次进行访问的设备,如触摸屏、鼠标;
块设备:可以按任意顺序访问,以块为单位进行操作,如硬盘、eMMC等;
字符设备和块设备对用户而言,都要使用文件系统的操作接口进行访问。
网络设备:面向数据包的接收和发送而设计,主要还是使用套接字接口。

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

字符设备与块设备都被映射到 Linux 文件系统的文件和目录,通过文件系统的系统调用接口即可访问字符设备和块设备。
Linux 的块设备有两种访问方法
1、类似 dd 命令对应的原始块设备,如“ /dev/sdb1”等;
2、在块设备上建立FAT、 EXT4、 BTRFS 等文件系统,然后以文件路径如“/home/barry/hello.txt”的形式进行访问。

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

1、要求工程师有非常好的硬件基础,懂得 SRAM、 Flash、 SDRAM、磁盘的读写方式, UART、 I2C、 USB 等设备的接口以及轮询、中断、 DMA 的原理,PCI 总线的工作方式以及 CPU 的内存管理单元( MMU)等。
2、要求工程师有非常好的 C 语言基础,能灵活地运用 C 语言的结构体、指针、函数指针及内存动态申请和释放等。
3、要求工程师有一定的 Linux 内核基础,虽然并不要求工程师对内核各个部分有深入的研究,但至少要明白驱动与内核的接口。尤其是对于块设备、网络设备、 Flash 设备、串口设备等复杂设备,内核定义的驱动体系结构本身就非常复杂。
4、要求工程师有非常好的多任务并发控制和同步的基础,因为在驱动中会大量使用自旋锁、互斥、信号量、等待队列等并发与同步机制。

1.5 Linux设备驱动的开发环境构建

1.5.1 PC上的Linux环境
1.5.2 QEMU实验平台
1.5.3 源代码阅读和编辑

1.6 设备驱动Hello World:LED驱动

1.6.1 无操作系统时的LED驱动
1.6.2 Linux下的LED驱动
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值