linux驱动
文章平均质量分 82
小袁OVO
这个作者很懒,什么都没留下…
展开
-
Linux驱动之DHT11温湿度传感器
DHT11驱动开发一、DHT11基本信息1、传感器性能说明2、接口说明3、电源引脚DHT11的供电电压为3-5.5V。传感器上电后,要等待1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。4、数据格式一次完整的数据传输为40bit,高位先出。1、采集数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和小数部分用于以后扩展,现在读出为0, 也就是小数原创 2021-05-22 15:23:02 · 5174 阅读 · 1 评论 -
28BYJ-48 电机驱动(Linux)
17、28BYJ-48 电机驱动什么,学完了pinctrl子系统和GPIO子系统还只会点灯?今天就来个高级点的点灯这个电机驱动程序说白了就是 点灯1、28BYJ-48 电机是四相八拍电机,所以需要4个GPIO来控制简介:28:步进电机的有效最大外径是28毫米B:表示是步进电机Y:表示是永磁式J:表示是减速型(减速比1:64)48:表示四相八拍内部结构示意图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qYxCbNM4-1619338578619)(li原创 2021-04-25 16:29:41 · 1621 阅读 · 0 评论 -
linux驱动之 ioctrl接口
18、ioctl接口unlocked_ioctrl 接口1、什么是unlocked_ioctrl 接口? unlocked_ioctrl 在之前的名字是ioctrl, 之前的是带锁的,现在的是不带锁的, 原因是为了提高实时性虽然名字发生了改变,但是功能和对应的系统调用均没有发生变化2、unlocked_ioctl 和 read/write 有什么相同点和不同点?1、相同点 都可以往内核写数据2、不同点 read函数只能完成读的功能, write 只能完成写的功能读取大量数据的原创 2021-04-25 16:13:28 · 1448 阅读 · 0 评论 -
Linux驱动之 pinctrl和GPIO子系统
15、pinctrl 和 GPIO子系统在没有使用这两个子系统之前,我们控制GPIO是直接操作寄存器来完成的,例如 LED灯,就是直接对寄存器进行操作1、什么是pinctrl 和 gpio子系统 pinctrl 这个是linux用来控制引脚相关的 GPIO 通用输入输出 在引入设备树之后,GPIO子系统是通过pinctrl子系统来实现的,这一点要牢记。pinctrl 主要是用来进行pin脚的初始化2、Linux pinctrl 子系统提供的功能是什么 (1) 管理系统中所有原创 2021-04-25 15:58:19 · 2104 阅读 · 0 评论 -
Linux驱动之设备树
14、设备树1、什么是设备树? 设备树是一种描述硬件资源的数据结构, 它通过bootloader将硬件资源传给内核,使得内核和硬件资源描述相对独立。2、设备树的由来要想了解为什么会有设备树,设备树是怎么来的,我们就要先来回顾一下在没有设备树之前我们是怎么来写一个驱动程序的。以字符设备驱动代码框架为例,我们一起来回顾下。任何的设备驱动的编写,Linux已经为我们打好了框架,我们只要像做完形填空一样填写进去就可以了。字符设备驱动框架杂项设备驱动框架通过这些框架,我们可以很容易编写我们的驱动原创 2021-04-25 15:50:01 · 1001 阅读 · 0 评论 -
字符类设备驱动框架
12、 字符类设备驱动框架主要需要解决两个问题 1、 分配主设备号; 2、 生成设备节点1、字符设备和杂项设备1、杂项被是字符设备的一种。2、杂项设备的主设备号是固定的,固定为10,那么我们 要学习的字符类设备的主设备号就需要自己或者系统来给我们分配3、杂项设备可以自动生成设备节点,字符设备需要我们自己生成设备节点设备号, 唯一区分一个设备2、分配主设备号注册字符类设备号的两个方法第一种: 静态分配一个设备号#include<linux/fs.h>extern int r原创 2021-04-20 15:18:54 · 302 阅读 · 0 评论 -
向驱动传递参数
11、 向驱动传递参数1、什么是驱动传参 驱动传参就是传递参数给我们的驱动 举例 : insmod led.ko a = 12、驱动传参有什么作用?(1) 设置驱动的相关参数,比如缓冲区的大小(2) 设置安全校验,防止我们写的驱动被人盗用3、怎么给驱动传参数?(1) 传递普通的参数,比如char,int 类型的函数:module_parammodule_param(name, type, perm);name : 传递进去的参数的名称type : 类型 如 ch原创 2021-04-20 15:15:20 · 470 阅读 · 0 评论 -
linux物理地址到虚拟地址映射MMU
9、linux物理地址到虚拟地址映射MMU在单片机和裸机中操作硬件直接访问物理寄存器即可例如 unsigned int *p = 0x12345678;*p = 0x87654321;但是在Linux上不行,在Linux上,如果要想操作硬件,需要先把物理地址转换为虚拟地址,因为Linux使能了MMU(物理地址转换为虚拟地址),所以我们在Linux上不能直接操作物理地址。MMU的好处? (1) 让虚拟地址成了可能 (2) 可以让系统更加安全,因为有了MMU,我们上层应用看到的内存都是虚拟原创 2021-04-20 15:12:18 · 1086 阅读 · 0 评论 -
应用层与内核层进行数据交互
8 、 应用层与内核层进行数据交互还是以上节的杂项设备为例因为linux一切皆文件、所以驱动设备在linux中也是以文件的方式存在的。应用层与内核层数据交互也是以文件方式进行struct file_operations 文件操作当应用层使用open打开设备文件时,就会触发驱动设备中的open函数int (*open) (struct inode *, struct file *);当应用层使用close关闭设备文件时,就会触发驱动设备中的release函数int (*release)原创 2021-04-20 15:04:15 · 1149 阅读 · 0 评论 -
杂项设备驱动框架
7、杂项设备驱动框架Linux三大设备驱动字符设备: IO的传输过程是以字符为单位的,没有缓冲。比如I2C、SPI都是字符设备块设备: IO传输过程是以块为单位的。跟存储相关的,都属于块设备,例如tf卡、emmc网络设备: 与前两个不一样,是以socket套接字来访问的。杂项设备1、杂项设备是字符设备的一种。可以自动生成设备节点。 在系统里有很多杂项设备, 可以下面的命令来查看 cat /proc/misc2、杂项设备除了比字符设备代码简单,还有别的区别吗? 杂项设备的主设备原创 2021-04-20 15:00:13 · 297 阅读 · 0 评论 -
linux驱动学习
Linux驱动开发板 ITOP44121、什么是linux驱动 基于OS的编程方式和单片机开发(裸机开发)截然不同 应用程序的执行是依赖于操作系统的 应用程序需要调用linux操作系统的库函数来实现 驱动程序是操作系统和硬件之间的桥梁, 应用程序不能直接操作硬件2、Linux驱动的分类1、字符设备驱动2、块设备驱动(存储相关的 tf 、 flash 、 emmc)3、网络设备其中,理解和掌握字符设备驱动的概念最重要,因为工作中遇到的大部分都是字符设备(如LED、蜂鸣原创 2021-04-20 14:56:53 · 639 阅读 · 0 评论