您好, 登录| 注册|
论坛导航
您好, 登录| 注册|
子站:

搞Linux设备驱动,你应该明白这几个问题!

2017-12-05 09:37 来源:电子工程网 编辑:Janet

想要深入理解linux设备驱动,你必须明确以下几个问题:

· 应用程序、库、内核、驱动程序的关系

· 设备类型

· 设备文件、主设备号与从设备号

· 驱动程序与应用程序的区别

· 用户态与内核态

· Linux驱动程序功能

搞Linux设备驱动,你应该明白这几个问题!

一、应用程序、库、内核、驱动程序的关系

1) 应用程序调用一系列函数库,通过对文件的操作完成一系列功能:      

应用程序以文件形式访问各种硬件设备(Linux特有的抽象方式,把所有的硬件访问抽象为对文件的读写、设置)

函数库:  

部分函数无需内核的支持,由库函数内部通过代码实现,直接完成功能

部分函数涉及到硬件操作或内核的支持,由内核完成对应功能,我们称其为系统调用

2) 内核处理系统调用,根据设备文件类型、主设备号、从设备号(后面会讲解),调用设备驱动程序;

3) 设备驱动直接与硬件通信;

二、设备类型

硬件是千变万化的,没有八千也有一万了,就像世界上有三种人:男人、女人、女博士一样,linux做了一个很伟大也很艰难的分类:把所有的硬件设备分为三大类:字符设备、块设备、网络设备。

1) 字符设备:字符(char)设备是个能够像字节流(类似文件)一样被访问的设备。

对字符设备发出读/写请求时,实际的硬件I/O操作一般紧接着发生;

字符设备驱动程序通常至少要实现open、close、read和write系统调用。

比如我们常见的lcd、触摸屏、键盘、led、串口等等,就像男人是用来干活的一样,他们一般对应具体的硬件都是进行出具的采集、处理、传输。

2) 块设备:一个块设备驱动程序主要通过传输固定大小的数据(一般为512或1k)来访问设备。

块设备通过buffer cache(内存缓冲区)访问,可以随机存取,即:任何块都可以读写,不必考虑它在设备的什么地方。

块设备可以通过它们的设备特殊文件访问,但是更常见的是通过文件系统进行访问。

只有一个块设备可以支持一个安装的文件系统。

比如我们常见的电脑硬盘、SD卡、U盘、光盘等,就像女人一样是用来存储信息的。

1 2 下一页 

声明:本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原网站所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱:editor@netbroad.com。

相关阅读

技术专题 更多>>
AI遇上区块链将碰撞出奇迹
智能充电桩技术要点及市场探讨
作为电动汽车的“加油站”,充电桩未来的发展前景无疑是巨大的。智能充电桩可以根据不同的电压等级为各种型号的电动汽车充电。充电桩具有非常重要的社会效益和经济效益。本期专题就让我们聊一聊充电桩的技术要点及市场应用前景吧!

头条推荐

2018年电源网工程师巡回研讨会会后报道
2018年电源网工程师巡回培训会-上海站于9月15日召开,会议共计5个议题,参会工程师300多人,陶显芳陶老师分享了关于"高效率开关电源的设计及应用“议题,将现场工程师交流推向了高潮!
2018慕尼黑上海电子展
客服热线
服务时间:周一至周五9:00-18:00
微信关注
免费技术研讨会
获取一手干货分享

互联网违法不良信息举报

Reporting Internet Illegal and Bad Information
editor@netbroad.com
022-58392381