![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux驱动开发
文章平均质量分 86
杨小菜菜
记录自己工作以来的学习笔记,虽然工作中没有用到这些东西~~
展开
-
I.MX6U嵌入式Linux驱动开发(13)异步通知实验
Linux 提供了异步通知这个机制来完成:驱动程序能主动向应用程序发出通知,报告自己可以访问,然后应用程序在从驱动程序中读取或写入数据。阻塞非阻塞与异步通知的区别:阻塞/非阻塞:需要应用程序主动的去查询设备的使用情况。通过阻塞方式访问的话应用程序会处于休眠态,等待驱动设备可以使用,非阻塞方式的话会通过 poll 函数来不断的轮询,查看驱动设备文件是否可以使用。异步通知:通过主动向应用程序发送信号的方式来报告自己可以访问了,应用程序获取到信号以后就可以从驱动设备中读取或者写入数据了。原创 2024-07-24 22:30:22 · 255 阅读 · 0 评论 -
I.MX6U嵌入式Linux驱动开发(12)阻塞与非阻塞IO
阻塞:当资源不可用的时候,应用程序就会挂起。当资源可用的时候,唤醒任务。应用程序使用open打开驱动文件,默认是阻塞方式打开。非阻塞:当资源不可用的时候,应用程序轮询查看,或放弃。会有超时处理机制。应用程序在使用open打开驱动文件的时候,使用O_NONBLOCK。在Ubuntu中输入:man 2 open 可以查询open的用法。原创 2024-07-24 22:29:01 · 590 阅读 · 0 评论 -
I.MX6U嵌入式Linux驱动开发(11)Linux中断实验
(1)先知道你要使用的中断对应的中断号。(2)再申请request_irq,此函数会激活中断。(3)如果不用中断了,那就释放掉,使用free_irq。(4)中断处理函数irqreturn_t (*irq_handler_t) (int, void *)。(5)使能和禁止中断。原创 2024-07-24 22:28:28 · 270 阅读 · 0 评论 -
I.MX6U嵌入式Linux驱动开发(10)内核定时器
HZ表示系统节拍率。采用 100Hz 的节拍率,时间精度就是 10ms,采用1000Hz 的话时间精度就是 1ms,精度提高了 10 倍。高节拍率会导致中断的产生更加频繁,频繁的中断会加剧系统的负担,1000Hz 和 100Hz的系统节拍率相比,系统要花费 10 倍的“精力”去处理中断。Linux 内核使用全局变量 jiffies 来记录系统从启动以来的系统节拍数。原创 2024-07-24 22:26:57 · 320 阅读 · 0 评论 -
I.MX6U嵌入式Linux驱动开发(5)pintcl和gpio子系统实验
打开芯片参考手册,找到iomux,Linux内核源码,打开imxull.dtsi,搜索iomux有3个寄存器地址:IOMUXC SNVS寄存器、IOMUXC控制器、gpr控制器。打开板子对应的设备树文件,imx6ull-alientek-emmc.dts,搜索iomux。原创 2024-07-24 22:20:39 · 438 阅读 · 0 评论 -
I.MX6U嵌入式Linux驱动开发(4)设备树下led驱动实验
属性#address-cells 和#size-cells 都为 1,表示 reg 属性中起始地址占用一个字长(cell),地址长度也占用一个字长(cell)。获取设备树属性内容,使用函数of_find_node_by_path(),返回值保存到nd中。打开灯、关灯,这两种操作在dtsled字符设备操作集合中实现,在open、release中设置一下私有数据,重点是write函数中,实现对灯的控制。使用vscode打开5_dtsled,修改Makefile文件,将其修改为:dtsled.o。原创 2024-07-24 22:18:34 · 146 阅读 · 0 评论 -
I.MX6U嵌入式Linux驱动开发(9)按键输入
先找到节点,再获取GPIO(of_get_named_gpio),GPIO的属性是:key-gpios,参数里面的索引是0,这个0是指第一条,1是指第2条,2是指第3条。请求这个GPIO,请求成功的话,设置为输入。应用程序读,最终体现到内核里面就是key_read()这个函数,,读的话,得有一个按键存放它的值,按键值是全局的,我们在key_dev结构体里面添加。在调用key_read()函数的时候,肯定读取按键值,看原理图,没有按下去的时候,key0是高电平,如果读取的为0,说明读取到了,按下去了。原创 2024-07-24 22:24:41 · 117 阅读 · 0 评论 -
I.MX6U嵌入式Linux驱动开发(8)互斥
通过原子操作、自旋锁、信号量和互斥体这四个实验来学习如何在驱动中使用这四种机制。原创 2024-07-24 22:23:09 · 341 阅读 · 0 评论 -
I.MX6U嵌入式Linux驱动开发(4)设备树
在裸机驱动程序里,比如W25QXX、SPI,速度都是在.c文件中写死的,板级信息都写到.c文件中,导致linux内核臃肿。因此 将板子信息做成独立的格式,文件扩展名为.dts。一个平台或者机器对应一个.dts。一般.dts 描述板级信息(也就是开发板上有哪些 IIC 设备、SPI 设备等),.dtsi 描述 SOC 级信息(也就是 SOC 有几个 CPU、主频是多少、各个外设控制器信息等)。原创 2024-07-24 22:15:18 · 644 阅读 · 0 评论 -
I.MX6U嵌入式Linux驱动开发(3)新驱动框架
Linux驱动开发原创 2022-12-22 14:06:28 · 159 阅读 · 1 评论 -
I.MX6U嵌入式Linux驱动开发(2)led实验
Linux下字符设备驱动开发原创 2022-12-20 17:17:16 · 271 阅读 · 0 评论 -
I.MX6U嵌入式Linux驱动开发(1)chrdevbase 字符设备驱动开发实验
字符设备驱动开发原创 2022-12-12 15:15:06 · 550 阅读 · 0 评论 -
I.MX6U嵌入式Linux驱动——系统移植之根文件系统构建
根文件系统的构建原创 2022-12-08 09:25:40 · 205 阅读 · 0 评论 -
I.MX6U嵌入式Linux驱动——系统移植之Linux 内核
Linux内核移植原创 2022-12-07 16:40:20 · 824 阅读 · 0 评论 -
I.MX6U嵌入式Linux驱动——系统移植之uboot
U-Boot移植原创 2022-12-07 14:47:27 · 826 阅读 · 0 评论 -
ubuntu安装软件
ubuntu安装vscode软件原创 2022-12-06 14:16:50 · 1629 阅读 · 0 评论 -
I.MX6U嵌入式Linux驱动——Ubuntu 系统入门篇
Linux驱动下的开发常用的命令原创 2022-12-06 13:39:09 · 292 阅读 · 0 评论