设备驱动开发详解(1)——概念篇

很多人,在文章中有相关内容的详解,因此我也想把自己学习的心得总结下来,主要目的,通过自己的总结分析,能够对这一部分有一个更加清晰的认识!如果有错误,还望指正!由于本文属于个人的分析心得,因此很多地方并未详细说明!

====================================================================================================================================

另:本文部分内容,有对参考书的摘抄。

一、驱动的概念和分类

1、驱动的概念

用于将应用程序与底层硬件进行隔离的程序——机制和策略的分化(驱动中只有机制不能有策略)。

2、驱动的分类

驱动分为有操作系统情况下的驱动和无操作系统下的驱动。(本文主要是有操作系统下的驱动)

二、linux设备驱动

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

图1(转载)

2、linux设备及设备分类

(1)linux驱动针对的对象是存储器和外设,而linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,称为设备文件。通过对设备文件的open、read、write会最终定位到驱动程序中对应的实现函数中。

(2)linux将设备分为3个基础类别:字符设备、块设备、网络设备

三、linux内核模块

1、linux内核模块的概念

具有独立功能的程序,可以单独编译,但是不能独立运行运行时被链接到内核作为内核的一部分在内核空间运行,可以动态插入(insmod)和删除(rmmod)。

2、linux内核模块的优缺点

优点:把内核保持在最小,具有最大灵活性;便于修改,不需要重新编译内核重新引导。

缺点:影响系统的性能和内存利用;由于内核模块有和内核有一样的权限,较差的内核模块不够安全;内核模块之间可能相互依赖,内核需要维护其依赖性;内核版本与内核模块版本兼容性问题可能导致系统崩溃;

3、linux模块的程序结构

模块加载函数(必须)
模块卸载函数(必须)
模块许可证声明(必须)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值