- 博客(20)
- 收藏
- 关注
原创 Linux驱动(input子系统)
input 就是输入的意思,因此 input 子系统就是管理输入的子系统,和 pinctrl、 gpio 子系统一样,都是 Linux 内核针对某一类设备而创建的框架。比如按键输入、键盘、鼠标、触摸屏等等这些都属于输入设备,不同的输入设备所代表的含义不同,按键和键盘就是代表按键信息,鼠标和触摸屏代表坐标信息,因此在应用层的处理就不同,对于驱动编写者而言不需要去关心应用层的事情,我们只需要按照要求上报这些输入事件即可。
2025-07-11 17:32:24
1253
1
原创 Linux驱动( MISC 驱动)
所有的 MISC 设备驱动的主设备号都为 10,不同的设备使用不同的从设备号,随着 Linux字符设备驱动的不断增加,设备号变得越来越紧张,尤其是主设备号, MISC 设备驱动就用于解决此问题,MISC 设备会自动创建 cdev,不需要像我们以前那样手动创建,因此采用 MISC 设备驱动可以简化字符设备驱动的编写,我们需要向 Linux 注册一个 miscdevice 设备, miscdevice是一个结构体,定义在文件 include/linux/miscdevice.h 中。返回值: 负数,失败;
2025-07-11 11:46:22
363
原创 Linux驱动开发(platform 设备驱动)
前面我们讲了设备驱动的分离,并且引出了总线(bus)、驱动(driver)和设备(device)模型,比如 I2C、 SPI、 USB 等总线,在 SOC 中有些外设是没有总线这个概念的,但是又要使用总线、驱动和设备模型,为了解决此问题, Linux 提出了 platform 这个虚拟总线,相应的就有 platform_driver 和 platform_device。
2025-07-10 15:56:57
1068
原创 Linux驱动(异步通知)
中断是处理器提供的一种异步机制,我们配置好中断以后就可以让处理器去处理其他的事情了,当中断发生以后会触发我们事先设置好的中断服务函数,在中断服务函数中做具体的处理。Linux 应用程序可以通过阻塞或者非阻塞这两种方式来访问驱动设备,通过阻塞方式访问的话应用程序会处于休眠态,等待驱动设备可以使用,非阻塞方式的话会通过 poll 函数来不断的轮询,查看驱动设备文件是否可以使用,如果能提供一种类似中断的机制,当驱动程序可以访问的时候主动告诉应用程序那就最好了。
2025-07-08 16:40:07
849
原创 Linux驱动开发( 阻塞和非阻塞 IO)
这里的“IO”并不是我们学习单片机的时候所说的“GPIO” (也就是引脚)。这里的 IO 指的是 Input/Output,也就是输入/输出,是应用程序对驱动设备的输入/输出操作当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么阻塞式 IO 就会将应用程序对应的线程挂起,直到设备资源可以获取为止。对于非阻塞 IO,应用程序对应的线程不会挂起,它要么一直轮询等待,直到设备资源可以使用,要么就直接放弃。
2025-07-07 11:32:07
1075
原创 Linux驱动开发(Linux中断)
不管是单片机裸机实验还是 Linux 下的驱动实验,中断都是频繁使用的功能,在裸机中使用中断我们需要做一大堆的工作,比如配置寄存器,使能 IRQ 等等。但是 Linux 内核提供了完善的中断框架,我们只需要申请中断,然后注册中断处理函数即可,使用非常方便,不需要一系列复杂的寄存器配置。
2025-06-10 17:21:08
654
原创 Linux驱动开发(内核定时器)
Linux 内核中有大量的函数需要时间管理,比如周期性的调度程序、延时程序、对于我们驱动编写者来说最常用的定时器。硬件定时器提供时钟源,时钟源的频率可以设置, 设置好以后就周期性的产生定时中断,系统使用定时中断来计时中断周期性产生的频率就是系统频率,也叫做节拍率(tick rate)(有的资料也叫系统频率),比如 100Hz、 1000Hz 等等说的就是系统节拍率。系统节拍率是可以设置的,单位是 Hz。
2025-06-09 14:27:50
1119
原创 Linux驱动开发(Linux并发与竞争)
并发就是多个 “用户” 同时访问同一个共享资源,Linux 系统是个多任务操作系统,会存在多个任务同时访问同一片内存区域,这些任务可能会相互覆盖这段内存中的数据,造成内存数据混乱,现在的 Linux 系统并发产生的原因很复杂,总结一下有下面几个主要原因:1、多线程并发访问, Linux 是多任务(线程)的系统,所以多线程访问是最基本的原因2、抢占式并发访问,从 2.6 版本内核开始, Linux 内核支持抢占,也就是说调度程序可以在任意时刻抢占正在运行的线程,从而运行其他的线程。
2025-06-04 17:05:46
996
原创 Linux驱动开发(字符设备篇)
字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如我们最常见的点灯、按键、 IIC、 SPI,LCD 等等都是字符设备,这些设备的驱动就叫做字符设备驱动在开始学习之前额昂我们先了解一下Linux应用程序与驱动程序的关系,如下图所示。
2025-05-28 15:24:48
1208
原创 Linux驱动开发(设备树)
在学习设备树之前,我们要线了解设备树是什么,设备树 是一种描述硬件设备结构的树形数据结构,也就是开发板上的设备信息,比如CPU 数量、 内存基地址、 IIC 接口上接了哪些设备、 SPI 接口上接了哪些设备等等树的主干就是系统总线, IIC 控制器、 GPIO 控制器、 SPI 控制器等都是接到系统主线上的分支。IIC 控制器有分为 IIC1 和 IIC2 两种,其中 IIC1 上接了 FT5206 和 AT24C02这两个 IIC 设备, IIC2 上只接了 MPU6050 这个设备。
2025-05-26 14:32:39
929
原创 esp-idf(lvgl移植篇)
LVGL(轻量且多功能的图形库)是一个免费且开源的图形库,提供了创建嵌入式 GUI 所需的一切,包括易于使用的图形元素、美丽的视觉效果和低内存占用。本篇文章采用lvgl8.3.0版本,之前尝试lvgl9.2.2版本失败,因此改为8.3版本,如有大佬使用成功希望出一个详细教程。
2025-04-15 14:23:12
1384
原创 esp-idf(lcd屏幕篇)
ESP 芯片可以产生市面上常见 LCD 所需的各种时序,例如 SPI LCD、I2C LCD、并行 LCD(Intel 8080)、RGB/SRGB LCD、MIPI DSI LCD 等。esp_lcd esp_lcd 提供了一个抽象的驱动框架以统一的方式支持它们。本次以立创实战派开发板为例,屏幕为SPI接口,使用ST7789驱动LCD 通常由两个主要平面组成:控制平面 :此平面允许我们读取和写入 LCD 设备控制器的内部寄存器。主机通常使用此平面执行诸如初始化 LCD 电源和执行伽马校准等任务。
2025-04-04 16:41:11
846
原创 esp-idf(i2c篇)
本教程采用esp-idf-5.3版本,型号为esp32-s3i2c具体内容需要自行了解ESP32-S3 有 2 个 I2C 控制器(也称为端口),负责处理 I2C 总线上的通信。单个 I2C 控制器可以是主控制器,也可以是从控制器通常,I2C 从设备具有 7 位地址或 10 位地址。ESP32-S3 支持 I2C 标准模式 (Sm) 和快速模式 (Fm),最高频率分别可达 100KHz 和 400KHz。
2025-04-01 15:51:05
1384
原创 esp-idf (mcpwm篇)
MCPWM 外设是一个多功能 PWM 生成器,集成多个子模块,在电力电子应用(如电机控制、数字电源等)中至关重要。MCPWM 外设通常适用于以下场景:数字电机控制,如有刷/无刷直流电机、RC 伺服电机基于开关模式的数字电源转换功率数模转换器 (Power DAC),其中占空比等于 DAC 的模拟值计算外部脉宽,并将其转换为其他模拟值,如速度、距离为磁场定向控制 (FOC) 生成空间矢量调制 (SVPWM) 信号。
2025-03-27 15:59:08
689
2
原创 esp-idf(LED PWM篇)
LED 控制器 (LEDC) 主要用于控制 LED,也可产生 PWM 信号用于其他设备的控制。该控制器有 8 路通道,可以产生独立的波形,驱动 RGB LED 等设备。LEDC 通道共有两组,分别为 8 路高速通道和 8 路低速通道。高速通道模式在硬件中实现,可以自动且无干扰地改变 PWM 占空比。低速通道模式下,PWM 占空比需要由软件中的驱动器改变。每组通道都可以使用不同的时钟源。LED PWM 控制器可在无需 CPU 干预的情况下自动改变占空比,实现亮度和颜色渐变。
2025-03-25 16:58:01
566
原创 【k230基础教程之ADC,RTC,TIMER,WDT】
本教程皆来自立创官方教程,为博主学习使用所记录,使用开发板为立创的庐山派,如有需求可自行访问关于这些外设具体介绍不在赘述,直接讲述MicroPython操作的k230用法。
2025-01-26 23:09:52
2613
原创 【k230基础例程之PWM和UART】
本教程皆来自立创官方教程,为博主学习使用所记录,使用开发板为立创的庐山派,如有需求可自行访问关于PWM和串口介绍就不多说了,下面直接开始介绍PWM和串口的配置。
2025-01-25 21:20:41
1204
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅