字符设备知识 笔记
来源:互联网 发布:cnrds 数据产品 编辑:程序博客网 时间:2024/06/08 03:23
1:在linux系统中,驱动程序通常采用内核模块的结构来编码。因此编译、安装一个驱动程序实际上就是编译、安装一个内核模块。
2:通过字符设备文件,应用程序可以使用相应的字符设备驱动程序来控制设备。创建字符设备文件的方法一般有两种:
1:使用mknod命令
mknod /dev/文件名 c 主设备号 次设备号
c:代表是字符设备文件,char的缩写
主设备号:字符设备文件和设备驱动程序之间的联系就是通过主设备号来建立的。
次设备号:取0-255之间非0的值就可以。
注意:在创建字符设备文件的时候要根据已经安装好的驱动程序的设备号来确定使用mknod时的主设备号的值,两者要保持一致。
例:mknod /dev/memdev0 c 253 0
2:使用函数在驱动程序中创建
3:编写应用程序来使用字符设备驱动。
注意以下语句:
int fd = 0;
fd = open("/dev/memdev0",O_RDWR);
打开memdev0这个设备。
编写应用程序在开发板上运行的时候如果遇到这个问题:
/binsh: ./***: not found
这种情况一般是编译时有动态库,而开发板上没有动态库。可以使用下面这个命令来查看:
arm-linux-readelf -d ***
解决的方法有两种:
一种是把编译时使用的动态库拷贝到开发板上去。
另一种是使用静态编译:
#arm-linux-gcc -static ***.c -o ***
总结:
应用程序通过调用系统函数open write read等函数,来操作字符设备文件/dev/memdev0,然后文件memdev0通过对应的主设备号找到驱动程序,实现底层硬件的访问读写等等一系列操作。
2:通过字符设备文件,应用程序可以使用相应的字符设备驱动程序来控制设备。创建字符设备文件的方法一般有两种:
1:使用mknod命令
mknod /dev/文件名 c 主设备号 次设备号
c:代表是字符设备文件,char的缩写
主设备号:字符设备文件和设备驱动程序之间的联系就是通过主设备号来建立的。
次设备号:取0-255之间非0的值就可以。
注意:在创建字符设备文件的时候要根据已经安装好的驱动程序的设备号来确定使用mknod时的主设备号的值,两者要保持一致。
例:mknod /dev/memdev0 c 253 0
2:使用函数在驱动程序中创建
3:编写应用程序来使用字符设备驱动。
注意以下语句:
int fd = 0;
fd = open("/dev/memdev0",O_RDWR);
打开memdev0这个设备。
编写应用程序在开发板上运行的时候如果遇到这个问题:
/binsh: ./***: not found
这种情况一般是编译时有动态库,而开发板上没有动态库。可以使用下面这个命令来查看:
arm-linux-readelf -d ***
解决的方法有两种:
一种是把编译时使用的动态库拷贝到开发板上去。
另一种是使用静态编译:
#arm-linux-gcc -static ***.c -o ***
总结:
应用程序通过调用系统函数open write read等函数,来操作字符设备文件/dev/memdev0,然后文件memdev0通过对应的主设备号找到驱动程序,实现底层硬件的访问读写等等一系列操作。
0 0
- 字符设备知识 笔记
- linux 设备驱动笔记 - 字符设备驱动
- [ARM笔记]字符设备驱动
- 字符型设备学习笔记
- [ARM笔记]字符设备驱动
- 字符设备驱动学习笔记
- 高级字符设备驱动-阻塞型字符设备驱动笔记
- linux字符设备驱动之file_operations结构体知识详解
- 内核模块编程笔记 - 字符设备驱动
- 字符设备驱动学习笔记(2.6.23)
- 字符设备之笔记-中断处理
- 字符设备之笔记-Poll机制分析
- 字符设备之笔记-定时器(timer)
- 驱动笔记(2)--字符设备
- linux字符设备驱动学习笔记1
- linux字符设备驱动学习笔记2
- linux字符设备驱动学习笔记3
- LDD3笔记:第三章 字符设备驱动
- JSP
- Matlab/C++混合编程之mxArray的访问
- 安装Django环境(nginx+uwsgi + mysql)
- 三星NOTE2 重启开机后3秒死机故障解决思路
- 【C语言】接受一个整形(无符号),把他转换为字符并打印(递归)
- 字符设备知识 笔记
- Action.c(33): Error -26377: No match found for the requested parameter "loginname". Check whether th
- 如何在 Mac 上卸载 Java
- spring data custom behaviour 为Repository自定义行为 抛出异常。
- #1133 : 二分·二分查找之k小数 ( 快速排序, 分治 OR nth_element() 函数)
- 经典dp入门---滑雪---自己看的递推,课件给的递归,先整理个递推吧--
- nyoj737 石子合并 详细
- 关于OGG的stats 进程名 reset命令
- android startActivityForResult()