Linux驱动程序开发知识点总结
需积分: 5 55 浏览量
更新于2024-09-11
1
收藏 159KB DOC 举报
Linux 驱动知识点总结
Linux 驱动开发是指在 Linux 操作系统下编写设备驱动程序的过程。设备驱动程序是指控制计算机硬件设备的软件模块,它们使得操作系统能够与硬件设备进行交互。Linux 驱动开发需要了解 Linux 内核架构、设备驱动模型、 DMA、中断机制等知识。
一、DMA 和中断
DMA(Direct Memory Access)是一种无需 CPU 参与就可以让外设与系统内存之间进行双向数据传输的硬件机制。使用 DMA 可以使系统 CPU 从实际的 I/O 数据传输过程中摆脱出来,从而大大提高系统的吞吐率。中断是指 CPU 在执行程序的过程中,出现了某些突发事件时 CPU 必须暂停执行当前的程序,转去处理突发事件,处理完毕后 CPU 又返回源程序被中断的位置并继续执行。因此,DMA 和中断的区别就在于 DMA 不需要 CPU 参与,而中断是需要 CPU 参与。
二、主设备号和次设备号
主设备号标识设备对应的驱动程序。次设备号由内核使用,用于正确确定设备文件所指的设备。依赖于驱动程序的编写方式,我们可以通过次设备号获得一个指向内核设备的直接指针,也可将此设备号当作设备本地数组的索引。
三、北桥和南桥
在嵌入式系统中,所谓的北桥指的是母板上 CPU 和内存等高速核心部分的控制和通讯桥接芯片,而南桥则指和扩展总线和 IO 的控制和通讯桥接芯片。所谓南北的涵义主要体现在其芯片组在母板上的位置(相对于 CPU)——上北下南。
四、内存申请函数
Linux 内核里面,内存申请有多个函数,包括 kmalloc、vmalloc、get_free_page、get_free_pages 等。kmalloc 函数申请的内存可以任意大小,但是 kmalloc 最大只能开辟 128k-16,16 个字节是被页描述符结构占用了。Vmalloc 分配的内存只是线性地址连续,物理地址不一定连续,不能直接用于 DMA。get_free_page 或 get_free_pages 是申请的内存以页的大小为基准,大小为页的整数倍。get_dma_pages, 这个函数除了以上功能外还能支持 DMA 传输。
五、IRQ 和 FIQ
IRQ 是普通中断,FIQ 是快速中断。在 ARM 体系中,对于快速中断模式,有 8 个独立的寄存器,转换模式时无需将数据保存起来,而 IRQ 则不能,这样 FIQ 的速度就大大地提高了。
六、驱动中的并发、互斥控制
在驱动程序中,需要有并发、互斥的控制,以避免多个进程同时访问同一个设备资源,导致数据不一致或其他问题。可以使用互斥锁、信号量、条件变量等机制来实现并发、互斥控制。例如,在驱动程序中可以使用 spinlock 来保护共享资源,以避免多个进程同时访问同一个设备资源。
Linux 驱动开发需要了解 Linux 内核架构、设备驱动模型、DMA、中断机制、内存申请函数、IRQ 和 FIQ 等知识,并且需要实现并发、互斥控制来避免多个进程同时访问同一个设备资源。
2009-05-08 上传
2021-10-08 上传
2021-09-25 上传
2021-08-07 上传
2009-11-26 上传
2023-06-29 上传
2024-07-23 上传
fenggui
- 粉丝: 26
- 资源: 12
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能