Linux字符设备驱动开发框架介绍_第1页
Linux字符设备驱动开发框架介绍_第2页
Linux字符设备驱动开发框架介绍_第3页
Linux字符设备驱动开发框架介绍_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WordLinux字符设备驱动开发框架介绍

1.字符设备驱动简介

字符设备是(Linux)驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如常见的点灯、按键、IIC、S(PI)、LCD等等都是字符设备,这些设备的驱动就叫做字符设备驱动。

Linux驱动基本原理:Linux中一切皆为文件,驱动加载成功后会在/dev目录下生成一个相应的文件,应用程序通过对这个名为/dev/xxx的文件进行相应的操作即可实现对(硬件)的操作。

比如(LED驱动),会有/dev/led驱动文件,应用程序使用open函数来打开该文件;若要点亮或关闭led,就使用wri(te)函数写入开关值;若要获取led灯的状态,就用re(ad)函数从驱动文件中读取相应的状态;使用完成后使用close函数关闭该驱动文件。

Linux软件从上到下可分为4层结构,如下图左示。以控制LED为例,具体过程如下图右示:

#defineMINORBITS20#defineMINORMASK((1U/*驱动入口函数*/staticint__initxxx_init(void){/*入口函数具体内容*/return0;}/*驱动出口函数*/staticvoid__exitxxx_exit(void){/*出口函数具体内容*/}/*将上面两个函数指定为驱动的入口和出口函数*/module_init(xxx_init);module_exit(xxx_exit);staticinlineintregister_chrdev(unsignedintmajor,constchar*name,conststructfile_operations*fops)//major:主设备号//name:设备名字,指向一串字符串//fops:结构体file_operations类型指针,指向设备的操作函数集合变量staticinlinevoidunregister_chrdev(unsignedintmajor,constchar*name)//major:要注销的设备对应的主设备号//name:要注销的设备对应的设备名

输入lsmod命令即可查看当前系统中存在的模块,输入cat/proc/devices命令,查看当前系统中有没有chrdevbase这个设备

创建设备节点文件:驱动加载成功后,需要在/dev目录下创建一个与之对应的设备节点文件,应用程序通过操作这个设备节点文件来完成对具体设备的操作

使用mknod命令创建/dev/chrdevbase设备节点文件

mknod/dev/chrdevbasec2000#/dev/chrdevbase是要创建的节点文件#c表示这是个字符设备#200是设备的主设备号#0是设备的次设备号创建完后可使用ls/dev/chrdevbase-l命令查看是否存在

操作设备测试:使用应用程序读写设备,对/dev/chrdevbase文件进行读写操作

#读操作命令./chrdevbaseApp/dev/chrdevbase1#输出“kernelsenddataok!”是驱动程序中chrdevbase_read函数输出的信息#“readdata:kerneldata!”就是chrdevbaseAPP打印出来的接收到的数据#写操作命令./chrdevbaseApp/dev/chrdevbase2#“kernelrecevdata:usrdata!”,是驱动程序中的chrdevbase_write函数输出的

卸载驱动模块:若不再使用某个设备的话可以将其驱动卸载掉。输入rmmod命令卸载驱动后,使用lsmod命令查看chrdevbase这个模块还存不存在

至此,Linux字符设备

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论