麦子学院字符设备驱动201126
麦子学院字符设备驱动201126
一,需要了解知识
(一)设备号
1,内核中通过类型dev_t,来描述设备号,其实质是unsigned int 32位整数,其中高12位为主设备号,低20位为次设备号。
int register_chadev_region(dev_t from, unsigned count, const char *name)
第一个参数:申请设备号范围起始值
第二个参数:从from开始申请多少个
第三个参数:设备号名字(为了方便管理)
2,设备号独一无二,主设备号表示同一类型设备,次设备号表示同一类型的不同设备。就像摄像头,分前置和后置。
(二)设备信息描述
1,对于设备信息的静态描述
struct cdev{struct kobject kobj; //设备管理机制,不是由我们操作的,由内核设备管理模型操作。struct module *owner; //为了加载驱动实现的。const struct file_operation *ops;struct list_head list; //一个链表dev_t dev; //设备号unsigned int count; //支持的设备
}
2,对于设备信息行为的描述
file_operation
3,相关注册函数
(1)只有登记注册,内核才能统一管理
(2)相关注册函数
a,int cdev_add(struct cdev *p, dev_t dev, unsigned count);
第一个参数:设备信息结构体
第二个参数:设备号
第三个参数:个数
目的:把字符设备注册到内核里
b,void cdev_init(struct cdev *, const struct file_operations *);
目的:建立设备信息和设备行为之间的联系
(三)驱动生存周期
1,insmod **.ko,装载驱动,生存周期开始;
2,rmmod **ko,卸载驱动,生存周期结束。
(四)代码分析
1,MKDEV(主设备号,次设备号); //宏定义,非函数。该宏定义是在Kdev_t.h中定义的,也就是内核中实现的,所以可以直接调用。
2,printk
和printf很像,都是打印错误信息,不同的是,printk是分打印级别的。
目的:只打印相关信息。
3,kzalloc与kmalloc
(1)与malloc功能相似,不过malloc是用户空间用来申请一段内存,在内核空间必须用kzalloc或kmalloc
(2)kzalloc与kmalloc区别
kzalloc会把申请到的空间全部清零。
麦子学院字符设备驱动201126相关推荐
- ()shi linux字符设备,Linux字符设备驱动基础(三)
Linux字符设备驱动基础(三) 6 创建设备节点 6.1 手动创建设备节点 查看申请的设备名及主设备号: cat /proc/devices # cat /proc/devices Characte ...
- 使用pinctrl 和 gpio 子系统的字符设备驱动
pinctrl 和 gpio 子系统的字符设备驱动 一. 修改设备树文件 二. LED 灯驱动程序编写 三.makefile 四.应用层代码 运行测试 一. 修改设备树文件 打开 imx6ull-al ...
- 设备树下字符设备驱动
设备树下字符设备驱动 一.在设备树里添加自己的节点 二.驱动代码 三.makefile 四.应用层代码 运行测试 总结 一.在设备树里添加自己的节点 alphaled { 2 #address-cel ...
- 深入浅出:Linux设备驱动之字符设备驱动
一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用驱动程序: 字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据.字符设备是面向流 ...
- linux设备模型 字符设备,Linux 字符设备驱动模型之框架解说
一.软件操作硬件设备模型 在进行嵌入式开发的过程中,在常做的事情就是驱动配置硬件设 备,然后根据功能需求使用硬件设备,实现功能的逻辑.如下图为其 相互之间的关系. 如上图所示: 驱动程序:主要作为操作 ...
- linux字符设备led驱动源码,字符设备驱动控制LED灯
开发板:龙芯1B PC:Ubuntu 13.10 本程序为字符设备驱动,提供控制led灯功能,如要实现控制需要自己写应用程序,打开驱动文件就可控制led灯,led灯通过gpio控制 #include ...
- linux设备驱动程序jd,Linux设备驱动程序学习(基于2440的GPIO字符设备驱动)
基于2440的GPIO字符设备驱动及应用程序是针对2440型号的底板的驱动及测试应用程序,详细情况请见底板的PCB图. S3C2440提供130 路复用的IO口线,分为如下端口进行管理: - Port ...
- linux字符设备文件的打开操作,Linux字符设备驱动模型之字符设备初始化
因为Linux字符设备驱动主要依赖于struct cdev结构,原型为: 所以我们需要对所使用到的结构成员进行配置,驱动开发所使用到的结构成员分别为:[unsigned int count;].[de ...
- linux生成驱动编译的头文件,嵌入式Linux字符设备驱动——5生成字符设备节点
嵌入式Linux字符设备驱动开发流程--以LED为例 前言 留空 头文件 #include 查看系统设备类 ls /sys/class 设备类结构体 文件(路径):include/linux/devi ...
- Linux驱动编程 step-by-step (八) 阻塞型字符设备驱动
阻塞型字符设备驱动 前面说到了 如何实现read write 等操作,但如果设备缓冲已满,现在想而用户此时又想写入设备,此请求就无法立即执行,那怎么办呢? 第一种情况是:驱动程序想用户返回请求失败的信 ...
最新文章
- arduino灯光装置_用Arduino实现智能控制-夜间感应灯的制作
- AI 落地,数据安全绕不开的 4 大问题
- 润乾集算报表优化应用结构之混合数据源
- python鼠标键盘操作 PyUserInput
- Java访问修饰符public,private,protected,以及不写(默认)时的区别?
- ssh公钥免密码登录
- 【jQuery插件】Twitter Search
- 谷歌技术帮助美军方无人机识别更精准
- vb不能插入png图片_VB6.0载入PNG格式图片
- 蓝桥杯2020年第十一届Python省赛第五题-排序
- 线切割常用专用编程软件下载
- Eclipse SVN 创建分支
- python gif压缩_压缩gif的正确姿势
- java 实现三角函数边长计算完整代码
- 魅蓝手机ROOT权限获取
- python新年倒计时代码
- Convex Optimization 读书笔记 (1)
- 强化学习系列(二):Multi-armed Bandits(多臂老虎机问题)
- 【TLD】改进后的TLD视频目标跟踪方法的MATLAB仿真
- 如何复制权限受限PDF文件的内容(亲测有效,Microsoft Edge打开pdf文件)