通过应用程序使用字符设备驱动
2015-08-28 21:41
253 查看
当驱动程序已经编写好时,应用程序怎么利用该驱动程序去访问设备呢?
当驱动程序已经编写好,则需要对其进行编译以及安装。在Linux系统中,驱动程序通常采用内核模块的程序结构来进行编码。因此,编译/安装一个驱动程序,其实质就是编译/安装一个内核模块。
当编译安装好驱动程序后,下一步就是创建字符设备文件。字符设备文件是应用程序与字符设备的桥梁,通过字符设备文件,应用程序可以使用相应的字符设备驱动程序来控制字符设备。应用程序通过文件名找到字符设备文件,字符设备文件通过主设备号与设备驱动程序建立起连接。
创建字符设备文件的方法有两种:
①使用mknod命令
文件名可以任意取;
c表示字符设备文件;
主设备号:通过命令cat /proc/devices 可以查看设备驱动的主设备号,当字符设备文件的主设备号与设备驱动的主设备号一致时,该设备文件与设备驱动建立起连接。此时访问设备文件就相当于访问设备驱动。
次设备号可以取0~255中任意一个整数。
例:mknod /dev/memdev0 c 253 0
则创建了文件/dev/memdev0,该文件是一个字符设备文件,并且与主设备号为253的驱动程序建立了连接。
②使用函数在驱动程序中创建
编译安装好设备驱动程序并且创建了设备文件后,此时可以编写应用程序来访问设备了。应用程序中可以利用open(),read(),write()等操作文件的函数来访问设备文件,从而间接访问设备。
在开发板运行某个程序时,操作系统可能会提示找不到该程序。问题可能是由于该程序是动态编译的,因此运行时需要动态库的支持,而开发板中却没有安装动态库,因此提示找不到程序。解决方法:可以给开发板安装动态库,也可以采用动态编译程序。
当驱动程序已经编写好,则需要对其进行编译以及安装。在Linux系统中,驱动程序通常采用内核模块的程序结构来进行编码。因此,编译/安装一个驱动程序,其实质就是编译/安装一个内核模块。
当编译安装好驱动程序后,下一步就是创建字符设备文件。字符设备文件是应用程序与字符设备的桥梁,通过字符设备文件,应用程序可以使用相应的字符设备驱动程序来控制字符设备。应用程序通过文件名找到字符设备文件,字符设备文件通过主设备号与设备驱动程序建立起连接。
创建字符设备文件的方法有两种:
①使用mknod命令
mknod /dev/文件名 c 主设备号 次设备号
文件名可以任意取;
c表示字符设备文件;
主设备号:通过命令cat /proc/devices 可以查看设备驱动的主设备号,当字符设备文件的主设备号与设备驱动的主设备号一致时,该设备文件与设备驱动建立起连接。此时访问设备文件就相当于访问设备驱动。
次设备号可以取0~255中任意一个整数。
例:mknod /dev/memdev0 c 253 0
则创建了文件/dev/memdev0,该文件是一个字符设备文件,并且与主设备号为253的驱动程序建立了连接。
②使用函数在驱动程序中创建
编译安装好设备驱动程序并且创建了设备文件后,此时可以编写应用程序来访问设备了。应用程序中可以利用open(),read(),write()等操作文件的函数来访问设备文件,从而间接访问设备。
在开发板运行某个程序时,操作系统可能会提示找不到该程序。问题可能是由于该程序是动态编译的,因此运行时需要动态库的支持,而开发板中却没有安装动态库,因此提示找不到程序。解决方法:可以给开发板安装动态库,也可以采用动态编译程序。
相关文章推荐
- 控件学习-TextView
- 0828Android基础自定义Dialog+DatePickerDialog+TimePickerDialog+PopupWindow+Notification
- 22 Generate Parentheses
- Android应用程序用户界面(四)
- 衡量企业网络广告效果的九个指标
- poj1269Intersecting Lines【直线相交平行共线的判断+求交点】
- 新手笔记之一维数组2
- Linux内核同步机制之(二):Per-CPU变量
- c# AE 闪烁和定位
- 蓄水池算法 知乎实习笔试
- 8成企业不满网络广告评估方法
- PHP匹配中文
- Linux设备驱动简介
- Deep learning ( 1 )
- 初识Java,基本名字的了解(摘自网络)
- android中focusable和focusableInTouchMode
- Linux进程管理
- 完美解决图片居中问题
- Linux内核同步机制之(一):原子操作
- matlab 数组 乱序