linux驱动开发

susplus12 天前
arm·中断·linux驱动开发·中断子系统
【Linux驱动开发】中断、工作队列及中断子系统详解在上篇文章【Linux驱动开发】pincrtl子系统与gpio子系统中,我们学习了Linux驱动开发的三大思想,以及pincrtl子系统与gpio子系统。文章中以led为示例,在最后让大家通过pincrtl子系统和gpio子系统来实现按键驱动,若使用打印来表示按键是否按下,会发现在交互界面会一直打印文字,这就是轮询的非阻塞的按键。在这片文章中会介绍中断概念、等待队列以及中断子系统,先通过中断、等待队列来实现阻塞的按键驱动,再介绍中断子系统以及通过中断子系统来实现按键驱动。
susplus18 天前
arm·led驱动·linux驱动开发
【Linux驱动开发】字符设备介绍 | LED灯驱动基本实现(自动申请设备号+手动添加节点)在上篇文章【Linux驱动开发】驱动介绍及驱动工程搭建中,我们学习了Linux驱动的分类,还完成了对驱动工程构建的具体了解与具体实现,在这篇文章中我们将实现字符设备LED的驱动编写,从51的点灯大师到IMX6ULL裸机的点灯大师,到现在即将成为Linux驱动的点灯大师了。
G.E.M.小白20 天前
嵌入式·imx6ull·linux驱动开发·蜂鸣器驱动
【Linux嵌入式蜂鸣器驱动开发】原理图分析、寄存器寻址、完整驱动+应用+Makefile蜂鸣器驱动是嵌入式Linux字符设备驱动入门最经典、最核心的实战案例,完整串联嵌入式底层开发核心链路:硬件原理图分析 → 芯片手册寄存器查询 → 内核物理地址虚拟映射 → 标准字符设备驱动框架搭建 → 应用层程序调用控制硬件。
Zeku3 个月前
机器人·ros2·linux驱动开发·linux应用开发
10.ROS2-URDF机器人建模-从概念到开发与调试全记录在 ROS 2 中开发移动机器人、机械臂或任何有多关节结构的机器人时,都需要回答一个基础问题:“这个机器人长什么样、各部分怎么连接的?” 导航需要知道机器人的外形轮廓来做碰撞检测,MoveIt 需要知道关节的运动范围和连杆的几何关系,RViz 需要知道怎么把机器人画出来,Gazebo 需要知道每个连杆的质量、惯性和碰撞形状来做物理仿真。
Zeku7 个月前
网络·stm32·freertos·linux驱动开发·linux应用开发
虚拟机网络设置虚拟机有两块网卡:当时遇到的问题是:说明存在 DNS / 默认路由 / 网络配置异常。通过排查发现,问题不是单一的 DNS 故障,而是 双网卡路由冲突。
Zeku9 个月前
stm32·音视频·freertos·linux驱动开发·linux应用开发
RTSP音视频传输软件流程文档本系统采用客户端-服务器架构,实现执法记录仪的音视频实时传输功能:函数: int main(int argc, char* argv[])
Zeku9 个月前
stm32·freertos·linux驱动开发·linux应用开发
ICM20948 设备树完整指南将ICM20948传感器信息添加到Linux设备树(Device Tree)中,使其成为系统硬件描述的一部分。
Zeku9 个月前
stm32·freertos·linux驱动开发·linux应用开发
20260125 - Linu驱动学习笔记:SPI-OLED测试OLED的D/C引脚电平逻辑:设备树定义:D/C引脚接在了GPIO4_20,即116号引脚,在APP程序中控制即可,不需要写进驱动。
Zeku9 个月前
stm32·freertos·linux驱动开发·linux应用开发
用户通用驱动spidev.c与设备匹配问题发现了一个奇怪的现象:设备树定义:spi_driver定义:转入of_match_table的设备列表:
Zeku9 个月前
stm32·freertos·linux驱动开发·linux应用开发
Linux驱动学习笔记:SPI子系统中的内核线程初始化kthread_queue_work 明明只是把一个“任务”扔进队列,为什么它最终执行的代码偏偏会是 __spi_pump_messages 这个函数?它是怎么绑定上去的?
Zeku9 个月前
stm32·freertos·linux驱动开发·linux应用开发
Linux驱动学习笔记:spi-imx.c收发消息的核心流程关键理解:设计模式:函数指针表,实现多型号支持
Zeku9 个月前
stm32·freertos·linux驱动开发·linux应用开发
内核日志分析:__spi_pump_messages的Caller_Optimization和KWorker_Thread[ 900.082769] [SPICORE_TRACE] __spi_sync: = => Enter. [ 900.088086] [SPICORE_TRACE] __spi_sync: the master of this device is: spi0 (Bus Number: 0). [ 900.096874] [SPICORE_TRACE] __spi_sync: master->transfer == spi_queued_transfer, Queueing message (modern
Zeku9 个月前
stm32·freertos·linux驱动开发·linux应用开发
借助通用驱动spidev实现SPI全双工通信关键理解:这个ioctl调用的是spidev_message()函数:TLC5615是10位串行DAC,时序如下:
Zeku9 个月前
stm32·freertos·linux驱动开发·linux应用开发
20260120 - Linux驱动学习笔记:SPI子系统核心层到具体硬件驱动详细追踪从spi.c中的函数接口 spi_write() 到 spi-imx.c 中具体硬件操作的完整调用链。
Zeku9 个月前
stm32·freertos·linux驱动开发·linux应用开发
Linux内核中SPI 子系统的整体架构关键点:
Zeku9 个月前
stm32·freertos·linux驱动开发·linux应用开发
Linux驱动学习笔记:SPI OLED 驱动源码深度分析这份笔记是关于 Linux SPI OLED 驱动(基于 Framebuffer 架构)的深度代码分析与学习笔记。旨在梳理驱动的分层架构、核心难点(数据格式转换)、以及关键机制(内核线程与 DMA 内存管理)的设计原理。
Zeku10 个月前
stm32·freertos·linux驱动开发·linux应用开发
Linux应用与驱动开发:mmap和内存映射mmap (Memory Map) 是一种内存映射文件的方法。在嵌入式 Linux 驱动开发中,它主要用于将外设的物理地址(如 GPIO 寄存器)映射到用户进程的虚拟地址空间。
Zeku10 个月前
stm32·freertos·linux驱动开发·linux应用开发
20260112 - Linux驱动学习笔记:Linux 中断下半部Linux 为了平衡硬件响应速度和系统处理能力,将中断分为两个阶段:随着 Linux 内核向多核(SMP)和实时化演进,下半部的选型发生了重要变化。
Zeku10 个月前
stm32·freertos·linux驱动开发·linux应用开发
20260110 - Linux 驱动开发学习笔记:上下文、中断与休眠要理解为什么不能在中断处理函数中里调用休眠函数让出CPU,首先必须搞清楚代码是在什么环境(上下文)下运行的。
Zeku10 个月前
stm32·freertos·linux驱动开发·linux应用开发
20260110 - Linux驱动学习笔记:环形缓冲区与按键防丢失假设你的驱动程序只用一个全局变量 int key_val 来保存按键值。环形缓冲区(也叫 FIFO,先入先出队列)是一块内存区域,配合两个指针:写指针 ® 和 读指针 (W)。