Linux驱动开发
文章平均质量分 83
Kaic.hfut
早上八点的太阳。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
mmap 机制详解(用户态 & 驱动视角)
mmap(memory map)是一种将文件或设备的物理内存映射到进程虚拟地址空间的机制。mmap = 建立“用户虚拟地址 ↔ 内核/设备内存”的映射关系用户程序可以像访问普通内存一样访问设备或文件不需要 read/write 系统调用反复拷贝数据用户空间: buf (用户虚拟地址)↓页表映射↓内核空间: 物理页帧 / 设备内存用户程序永远只看到虚拟地址。原创 2025-12-19 11:14:53 · 799 阅读 · 0 评论 -
SPI总线设备驱动
是一种外设通信协议,由 Motorola 提出,常用于 MCU 与外设(如 Flash、LCD、传感器、无线模块)的高速数据传输。原创 2025-11-27 15:49:35 · 1118 阅读 · 0 评论 -
设备树详解
设备树(Device Tree)是描述嵌入式硬件的数据结构,用于在内核启动时传递硬件信息(CPU、内存、外设等),实现内核与硬件的解耦。其基本语法包含节点(如内存、串口)和关键属性(如compatible、reg)。设备树文件由.dts(板级)和.dtsi(SoC级)组成,通过Bootloader加载到内存。驱动通过compatible属性与节点匹配,调用probe()初始化。常见外设(I2C、SPI、GPIO等)有标准写法,调试可用dmesg、/proc/device-tree等工具。常见问题包括属性错误原创 2025-06-12 17:32:27 · 1614 阅读 · 0 评论 -
Linux 虚拟 UART 驱动框架
本文介绍了Linux虚拟UART驱动的开发过程,主要包含以下内容: 驱动整体结构:基于uart_driver、uart_port、uart_ops三大核心模块构建,通过platform_driver和设备树匹配实现。 关键实现细节: 使用环形缓冲区(txbuf/rxbuf)处理数据传输 通过中断模拟机制实现接收功能 提供console支持以接入内核打印输出 创建proc接口用于调试和测试 测试验证方法: 通过proc接口模拟数据收发 支持/dev/ttyVIRT0设备节点 可接收内核printk输出 该驱动原创 2025-06-05 17:24:42 · 1934 阅读 · 0 评论 -
Linux Platform 驱动匹配机制
Platform 驱动通过多种匹配方式实现与设备的自动绑定,主要包括设备树匹配、非设备树匹配和名称匹配。设备树匹配通过 compatible 字段与驱动中的 of_match_table 进行匹配,非设备树匹配则通过 platform_device.name 与驱动的 id_table 匹配,若前两者无效,则使用 platform_device.name 与 driver.name 进行最终匹配。匹配优先级依次为设备树匹配、非设备树匹配和名称匹配。在实际应用中,使用设备树时必须提供 .of_match_ta原创 2025-05-22 14:01:44 · 834 阅读 · 0 评论 -
Linux驱动开发:PWM子系统详解(以SG90舵机为例)
本文介绍了PWM(脉宽调制)子系统在嵌入式系统中的应用,特别是如何通过设备树配置和驱动程序实现对SG90舵机的控制。首先,文章概述了PWM的基本原理及其在电机控制、LED调光等场景中的应用。接着,详细描述了设备树中PWM控制器的配置,包括引脚复用、启用PWM控制器节点以及定义SG90伺服节点的步骤。随后,文章提供了驱动程序的实现,包括驱动结构概述、源码解析以及应用层测试程序。最后,文章解析了PWM控制SG90舵机的原理,包括占空比的计算公式。通过本文,读者可以了解如何从硬件配置到软件驱动实现对PWM设备的控原创 2025-05-16 15:03:25 · 728 阅读 · 0 评论 -
Linux I²C 驱动 & 模拟 I²C 总线开发
本文系统性地介绍了Linux I²C驱动模型及其开发方法,涵盖了硬件I²C、GPIO模拟I²C和软件虚拟I²C三种实现方式。首先,文章详细解释了Linux I²C驱动模型中的三大核心结构:i2c_adapter、i2c_client和i2c_driver,并介绍了设备树匹配和手动注册i2c_client的两种设备匹配机制。接着,文章探讨了GPIO模拟I²C的原理、优缺点及实现框架,并介绍了如何利用Linux的i2c-gpio框架进行配置。最后,文章深入讲解了软件模拟I²C总线的实现方法,包括注册自定义的i2原创 2025-05-15 10:28:01 · 778 阅读 · 0 评论 -
LCD驱动编写流程
本文详细介绍了嵌入式 Linux 系统中 LCD 与 Framebuffer 驱动的开发流程。首先,文章阐述了 LCD 显示的基础知识,包括分辨率、像素格式、接口类型、显存和时序参数等。接着,文章深入探讨了 LCD 驱动原理与设备树配置,特别是 i.MX6ULL 的 eLCDIF 控制器和设备树节点的配置方法。随后,文章介绍了 Framebuffer 子系统及其驱动框架,包括 fb_info 结构体和 fb_ops 操作函数集。此外,文章还提供了自定义 Framebuffer 驱动的开发流程,从分配 fb_原创 2025-05-14 09:58:53 · 2410 阅读 · 0 评论
分享