下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽轮机和水轮机检修工创新方法测试考核试卷含答案
- 前厅服务员安全技能测试竞赛考核试卷含答案
- 2024年天津医科大学临床医学院辅导员考试笔试真题汇编附答案
- 涂装工安全实操考核试卷含答案
- 石膏装饰板加工工安全演练模拟考核试卷含答案
- 印花辊筒激光雕刻工发展趋势能力考核试卷含答案
- 缝纫品整型工操作安全考核试卷含答案
- 铜管乐器制作工风险评估与管理知识考核试卷含答案
- 铸造模型工班组安全能力考核试卷含答案
- 2025年上海师范大学辅导员考试笔试真题汇编附答案
- 云南师大附中2026届高三1月高考适应性月考卷英语(六)含答案
- 2026湖北随州农商银行科技研发中心第二批人员招聘9人笔试备考试题及答案解析
- 骑行美食活动方案策划(3篇)
- 2026年上海市松江区初三语文一模试卷(暂无答案)
- 石化企业环保培训课件
- 2026年吕梁职业技术学院单招职业技能考试备考试题带答案解析
- 清华大学教师教学档案袋制度
- 2025年新疆师范大学辅导员招聘考试真题及答案
- 人教版九年级物理上学期期末复习(知识速记+考点突破+考点练习题)含答案
- GB/T 3098.5-2025紧固件机械性能第5部分:自攻螺钉
- 2026年安徽国防科技职业学院单招职业适应性考试题库及完整答案详解1套
评论
0/150
提交评论