
linux驱动
文章平均质量分 71
介绍linux驱动开发
rrring
这个作者很懒,什么都没留下…
展开
-
一、linux驱动实验-15.1-4G模块EC20通信
11原创 2021-12-29 10:01:57 · 948 阅读 · 0 评论 -
一、linux驱动实验-14.1-imx6ull驱动MT7601
一、开发环境和准备资料1.1、开发环境1.2、准备资料MT7601源码:http://链接:https://pan.baidu.com/s/1u8HJett5bmHgWzyktPQdhg 提取码:njt2二、源码移植2.1、解压将下载的源码放在虚拟机目录下解压;2.2、修改MakeFile①、增加linux内核和编译器路径ifeq ($(PLATFORM),PC)# Linux 2.6LINUX_SRC = /home/zk...原创 2021-12-22 11:20:59 · 569 阅读 · 0 评论 -
一、linux驱动开发-13.1-I2C
问题:我只有设备树匹配时,加载驱动后,probe未匹配,加上传统匹配方式后就能匹配,?原创 2021-12-13 14:47:36 · 640 阅读 · 0 评论 -
一、linux驱动开发-12.1-PWM
二、驱动编写2.1、设备树修改2.2、使能PMW驱动三、pwm测试原创 2021-12-10 14:21:46 · 581 阅读 · 0 评论 -
一、linux驱动开发-11.1-INPUT子系统
一、前言linux内核专门做了一个input子系统的框架来处理输入实践。输入设备的本质还是字符设备,只是在其基础上套上了input框架。二、子系统2.1、简介input子系统就是管理输入的子系统,和pinctrl、gpio子系统一样,都是linux内核针对某一类设备而创建的框架,如下:驱动编写只需要关注中间的驱动层、核心层、事件层,分工如下:驱动层:输入设备的具体驱动程序,比如按键驱动程序,向内核层报告输入内容。...原创 2021-12-08 22:22:05 · 1018 阅读 · 0 评论 -
一、linux驱动开发-10.1-MISC驱动
一、前言misc驱动也叫杂项驱动,就是某些外设无法进行分类的时候就可以使用MISC驱动。MISC驱动其实就是字符设备驱动,通常嵌套在platform总线驱动中。二、简介所有的MISC设备驱动的主设备号都为10,不同的设备使用不同的次设备号。MISC设备会自动创建cdev,不需要手动创建,因此可以简化字符设备驱动的编写。2.1、定义MISC设备linux中用miscdevice表示一个MISC设备,如:struct misc...原创 2021-12-06 21:32:00 · 348 阅读 · 0 评论 -
一、linux驱动开发-9.1-linux自带的led灯
一、前言之前对于led,都是自己去编写驱动,其实向led这样基础的设备,内核已经集成了,linux内核的led驱动采用了platform框架,只需要按照要求添加相应的led节点。二、内核自带led驱动配置2.1、内核配置在linux内核目录下输入make menuconfig进入配置界面:配置保存后,输入make编译。2.2、设备树添加...原创 2021-12-05 22:53:51 · 377 阅读 · 0 评论 -
一、linux驱动开发-8.2-设备树下platform驱动
11原创 2021-12-05 20:38:30 · 861 阅读 · 0 评论 -
一、linux驱动开发-8.1-platform设备驱动
一、驱动的分离与分层1.1、驱动的分隔与分离通过驱动的分隔,也就是将主机驱动和设备驱动分隔开来,通过总线就行匹配,当我们向系统注册一个驱动的时候,总线就会在右侧的设备中查找,看看有没有与之匹配的设备,如果有的话就将两者联系起来。同样的,当向系统中注册一个设备的时候,总线就会在左侧的驱动中查找看有没有与之匹配的设备,有的话也联系起来。1.2、驱动的分层驱动分层类似网络的7层模型,不同的层负责不同的内容。...原创 2021-11-30 22:53:53 · 2314 阅读 · 0 评论 -
一、linux驱动开发-7.3-异步通知实验
11原创 2021-11-29 21:16:36 · 513 阅读 · 0 评论 -
一、linux驱动开发-7.3-非阻塞IO实验
11原创 2021-11-28 21:19:43 · 304 阅读 · 0 评论 -
一、linux驱动开发-7.2-阻塞IO实验
一、前言上一节在应用程序中通过read不断读取按键状态,这样就会占用很高的CPU使用率,用top指令查看下:现在换种方法,当按键没被按下的时候休眠,当有按键事件发生的时候才运行,并打印按键值,这样就可以降低CPU利用率。...原创 2021-11-21 21:12:53 · 405 阅读 · 0 评论 -
一、linux驱动开发-7.1-阻塞和非阻塞IO
一、阻塞和非阻塞IO1.1、简介当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么阻塞式 IO 就会将应用程序对应的线程挂起,直到设备资源可以获取为止。对于非阻塞 IO,应用程序对应的线程不会挂起,它要么一直轮询等待,直到设备资源可以使用,要么就直接放弃。非阻塞访问方式,当设备不可用或者数据未准备好的时候会立即向内核返回一个错去码,表示数据读取失败。 在open函数中用O_NONBLOCK标志打开设备文件1.2、阻塞IO处理方式...原创 2021-11-21 16:33:46 · 805 阅读 · 0 评论 -
一、linux驱动开发-6.1-中断
一、中断简介内核提供了完善的中断框架,只需要申请中断,然后注册中断处理函数即可。1.1、中断API1.1.1、中断号 每个中断都有一个中断号,通过中断号即可区分不同的中断。1.1.2、request_irq用于申请中断,可能会导致睡眠,因此不能在中断上下文或者其他禁止睡眠的代码中使用,次函数会激活(使能)中断,因此不需要手动去使能中断 。/*@Decription:申请中断@irq:要申请的中断号@handler:中断处理函数@...原创 2021-11-21 15:07:05 · 429 阅读 · 0 评论 -
一、linux驱动开发-5.1-内核定时器
11原创 2021-11-21 00:14:31 · 662 阅读 · 0 评论 -
一、linux驱动开发-4.1-按键输入
1原创 2021-11-03 22:46:53 · 161 阅读 · 0 评论 -
一、linux驱动开发-3.1-pinctrl和gpio子系统
一、前言 之前做gpio驱动开发的步骤:①、修改设备树、添加相应的节点。节点里设置reg属性,包括需要操作的寄存器。②、获取reg属性中寄存器地址后,初始化寄存器,设置gpio复用及和电气属性。 这一套操作比较繁琐,而且容易出错,因此linux内核对于GPIO这种基本驱动引入了pinctrl和gpio子系统。pinctrl子系统主要工作如下:...原创 2021-10-30 12:12:27 · 815 阅读 · 0 评论 -
一、linux驱动开发-2.2-设备树下的LED驱动
一、前言 之前都是在.c文件中定义有关寄存器物理地址,然后使用io_remap函数进行内存映射,得到虚拟地址,实现操作寄存器对应的虚拟地址控制GPIO的目的。 现在学了设备树,就用设备树向linux内核传递相关的寄存器物理地址,然后用of函数从设备树中获取需要的属性值,用获取到的属性值来初始化相关的IO。具体的步骤如下: ①、在.dts文件中创建相应的设备节点; ②、利用of函数获取设备树中相关属性; ③、使用获取到的属性值初始...原创 2021-10-27 21:55:26 · 302 阅读 · 0 评论 -
一、linux驱动开发-2.1-设备树
111原创 2021-10-24 22:18:10 · 1609 阅读 · 0 评论 -
一、linux驱动开发-1.4-新字符设备
前几章我们了解了字符设备开发的基本步骤,即:①、在入口函数里使用register_chrdev注册字符设备,在出口函数里使用unregister_chrdev注销该字符设备; ②、利用modprobe加载驱动模块; ③、驱动模块加载成功后,使用mknod创建设备节点。 这一套操作下载着实有点复杂原创 2021-10-23 20:48:34 · 461 阅读 · 0 评论 -
一、linux驱动开发-1.3-LED实验
一、前言 前面用一个虚拟的chrdevbase设备做了一个字符设备的开发,现在编写一个真正的linux字符设备-led。重点即是linux下引脚控制驱动。在此先了解一下MMU(内存管理单元),MMU的主要功能:①、完成虚拟空间到物理空间的映射; ②、内存保护,设置存储器的访问权限,设置虚拟存储空间的缓冲特性; linux内核启动后会初始化MMU,设置好内存映射,设置好后CPU访问的都是虚拟地址。获取实际硬件寄存器物...原创 2021-10-23 12:49:20 · 435 阅读 · 0 评论 -
一、linux驱动开发-1.2-字符设备实验
11原创 2021-10-10 22:05:37 · 396 阅读 · 0 评论 -
一、linux驱动开发-1.1-字符设备开发步骤
一、字符设备字符设备就是一个一个字节,按照字节流进行读写的设备,读写数据分先后顺序的。常用的led、按键,i2c,spi,lcd等都是字符设备。原创 2021-10-07 21:43:05 · 147 阅读 · 0 评论