博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux 设备驱动初学(一)
阅读量:4102 次
发布时间:2019-05-25

本文共 1149 字,大约阅读时间需要 3 分钟。

系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口.设备驱动程序为应用程序屏蔽了硬件的细节,这样在 应用程序看来,硬件设备只是一个设备文件, 应用程序可以象操作普通文件一样对硬件设备进行操作.比如read(),就像读文件一样操作设备。设备驱动程序是内核的一部分,它完成以下的功能:

  1.对设备初始化和释放.

  2.把数据从内核传送到硬件和从硬件读取数据.

  3.读取应用程序传送给设备文件的数据和回送应用程序请求的数据.   数据在用户空间  系统空间  硬件之间流动。

  4.检测和处理设备出现的错误.

linux操作系统设备分3种:字符设备 块设备 网络设备。其中字符设备与块设备的区别是,访问数据的方式不同,字符设备是连续访问,不可跳跃访问,是一种流方式,不访问前面的就得不到后面的。而块设备是可以按地址访问的。网络设备就很不同了,暂时没研究过。

每个设备都有其主设备号和从设备号,每个设备驱动都有一个主设备号,设备与对应的设备驱动的主设备号必须相同。而从设备号是用来区分使用同一种驱动的不同设备。用户访问的时候也是先通过具体设备获得主设备号,再通过主设备号找到对应的设备驱动。然后使用设备驱动对设备进行操作。其中:设备驱动的主设备号是其在加载的时候申请的,可以是系统配置,也可以是自己配置,但申请成功都会在内核中记载,那么为了让使用这个驱动的设备与其保持相同的主设备号,就要给该设备指定主设备号(mknod /dev/test c major minor)从设备号可以使用系统自动分配。

关于设备节点/dev  设备节点对应于操作系统分配的资源,但设备节点并不一定对应于物理设备,这时候叫做僞设备,比如说用mknod /dev/test test就是僞设备节点。先有驱动,才有设备节点。设备文件之所以叫设备文件是因为用户操作的是它,且把它当做文件操作,如myflie=open("/dev/global",O_RDWR);而设备节点,是因为实际的操作并不在此,这只是中间的的一个过程,一个节点而已,实际的操作还在驱动中实现。

关于次设备号:驱动程序,每发现一个它能驱动的设备,就创建一个设备对象,并为其分配一个次设备号以区分不同的设备,这样当应用程序访问设备节点时驱动就可以根据次设备号知道它访问的设备了。其实创建设备节点可以是手动的,也可以由系统分配,就是udev创建的设备文件。

myflie=open("/dev/global",O_RDWR);这是应用程序中的代码,其中的/dev/global就是设备节点,或叫做设备文件,设备文件中有主从设备号,通过主设备号找到驱动程序,同时把从设备号传送给驱动程序,驱动程序通过从设备号找到所要操作的设备

转载地址:http://fkbsi.baihongyu.com/

你可能感兴趣的文章
基于电子商务的供应链管理的探讨
查看>>
阅读优秀代码是提高开发人员修为的一种捷径
查看>>
修炼一名程序员的职业水准(林庆忠__署名原创)
查看>>
给想当程序员的大二学生的建议
查看>>
论电子商务中的个性化信息服务
查看>>
网络营销之新手必知的5种店铺推广方法
查看>>
李泽:要想网站运营好 得靠赞助营销炒
查看>>
B2C网络营销应注重的细节
查看>>
B2C客户体验的两大关键阶段
查看>>
10款PHP开源的外贸网店电子商务管理系统
查看>>
芝加哥订餐网站GrubHub:做大懒人生意 两年内上市
查看>>
简析京东、当当、红孩子平台B2C的品牌策略
查看>>
中小企业电子商务六大发展技巧
查看>>
程序员,应该掌握的英语词汇
查看>>
程序员的十大烦恼
查看>>
让工作变得高效而简单的10种方法
查看>>
国际:什么是程序员的优秀品质?
查看>>
林锐-我的大学十年
查看>>
李开复:21世纪最需要的7种人才
查看>>
网络营销的十五大形式(上)
查看>>