麦子学院字符设备驱动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相关推荐

  1. ()shi linux字符设备,Linux字符设备驱动基础(三)

    Linux字符设备驱动基础(三) 6 创建设备节点 6.1 手动创建设备节点 查看申请的设备名及主设备号: cat /proc/devices # cat /proc/devices Characte ...

  2. 使用pinctrl 和 gpio 子系统的字符设备驱动

    pinctrl 和 gpio 子系统的字符设备驱动 一. 修改设备树文件 二. LED 灯驱动程序编写 三.makefile 四.应用层代码 运行测试 一. 修改设备树文件 打开 imx6ull-al ...

  3. 设备树下字符设备驱动

    设备树下字符设备驱动 一.在设备树里添加自己的节点 二.驱动代码 三.makefile 四.应用层代码 运行测试 总结 一.在设备树里添加自己的节点 alphaled { 2 #address-cel ...

  4. 深入浅出:Linux设备驱动之字符设备驱动

    一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用驱动程序: 字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据.字符设备是面向流 ...

  5. linux设备模型 字符设备,Linux 字符设备驱动模型之框架解说

    一.软件操作硬件设备模型 在进行嵌入式开发的过程中,在常做的事情就是驱动配置硬件设 备,然后根据功能需求使用硬件设备,实现功能的逻辑.如下图为其 相互之间的关系. 如上图所示: 驱动程序:主要作为操作 ...

  6. linux字符设备led驱动源码,字符设备驱动控制LED灯

    开发板:龙芯1B PC:Ubuntu 13.10 本程序为字符设备驱动,提供控制led灯功能,如要实现控制需要自己写应用程序,打开驱动文件就可控制led灯,led灯通过gpio控制 #include ...

  7. linux设备驱动程序jd,Linux设备驱动程序学习(基于2440的GPIO字符设备驱动)

    基于2440的GPIO字符设备驱动及应用程序是针对2440型号的底板的驱动及测试应用程序,详细情况请见底板的PCB图. S3C2440提供130 路复用的IO口线,分为如下端口进行管理: - Port ...

  8. linux字符设备文件的打开操作,Linux字符设备驱动模型之字符设备初始化

    因为Linux字符设备驱动主要依赖于struct cdev结构,原型为: 所以我们需要对所使用到的结构成员进行配置,驱动开发所使用到的结构成员分别为:[unsigned int count;].[de ...

  9. linux生成驱动编译的头文件,嵌入式Linux字符设备驱动——5生成字符设备节点

    嵌入式Linux字符设备驱动开发流程--以LED为例 前言 留空 头文件 #include 查看系统设备类 ls /sys/class 设备类结构体 文件(路径):include/linux/devi ...

  10. Linux驱动编程 step-by-step (八) 阻塞型字符设备驱动

    阻塞型字符设备驱动 前面说到了 如何实现read write 等操作,但如果设备缓冲已满,现在想而用户此时又想写入设备,此请求就无法立即执行,那怎么办呢? 第一种情况是:驱动程序想用户返回请求失败的信 ...

最新文章

  1. arduino灯光装置_用Arduino实现智能控制-夜间感应灯的制作
  2. AI 落地,数据安全绕不开的 4 大问题
  3. 润乾集算报表优化应用结构之混合数据源
  4. python鼠标键盘操作 PyUserInput
  5. Java访问修饰符public,private,protected,以及不写(默认)时的区别?
  6. ssh公钥免密码登录
  7. 【jQuery插件】Twitter Search
  8. 谷歌技术帮助美军方无人机识别更精准
  9. vb不能插入png图片_VB6.0载入PNG格式图片
  10. 蓝桥杯2020年第十一届Python省赛第五题-排序
  11. 线切割常用专用编程软件下载
  12. Eclipse SVN 创建分支
  13. python gif压缩_压缩gif的正确姿势
  14. java 实现三角函数边长计算完整代码
  15. 魅蓝手机ROOT权限获取
  16. python新年倒计时代码
  17. Convex Optimization 读书笔记 (1)
  18. 强化学习系列(二):Multi-armed Bandits(多臂老虎机问题)
  19. 【TLD】改进后的TLD视频目标跟踪方法的MATLAB仿真
  20. 如何复制权限受限PDF文件的内容(亲测有效,Microsoft Edge打开pdf文件)

热门文章

  1. Linux 常用命令大全
  2. MySQL调优(二)——索引最佳实践
  3. mirserver传奇服务端各文件夹注解
  4. 黑科技智能家电新生儿“智能冰箱”
  5. APP支付(微信、支付宝)
  6. ad一张图纸绘制多图_ad原理图绘制基础
  7. 我的第一篇随笔-------吹起启程之风
  8. 【自学Flutter】3.2 图片的填充样式
  9. HashMap常见面试问题总结
  10. glibc-2.23-free