JustaUncle
码龄23年
求更新 关注
提问 私信
  • 博客:53,116
    视频:824
    53,940
    总访问量
  • 40
    原创
  • 6
    粉丝
  • 2
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:福建省
加入CSDN时间: 2003-03-01
博客简介:

Just Linux!

博客描述:
Android | Embedded Linux | Ubuntu | Python | C/C++ & GPL mail:caicry(at)gmail.com
查看详细资料
个人成就
  • 获得1,049次点赞
  • 内容获得5次评论
  • 获得784次收藏
  • 博客总排名70,713名
  • 原力等级
    原力等级
    3
    原力分
    414
    本月获得
    0
创作历程
  • 22篇
    2026年
  • 18篇
    2025年
成就勋章
TA的专栏
  • Linux外设驱动详解
    33篇
  • 开发工具
    1篇
  • Vibe Coding
    2篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 1

创作活动更多

芯创视界・嵌入式视频创作征集大赛

嵌入式工程的价值,藏在每一次硬件调试、代码迭代与项目落地之中。 让我们因热爱相聚,用镜头与一众开发者互通心得、彼此启发,记录下探索的每一步,分享思路与经验。 让更多人看见嵌入式开发的魅力,也让每一次创作成为推动技术传播与社区成长的力量。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0d445ffce72b42f997aaf1b030a652aa.png#pic_center)

18人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

[Linux外设驱动详解]RK3588 SOC CPU 温度监控机制

RK3588 SoC通过TSADC模块实现温度监控,内置7个传感器通道监控CPU、GPU等区域温度。驱动基于Linux Thermal框架,采用查表法将ADC码值转换为温度值(-60°C至180°C)。内核驱动通过寄存器配置采样周期、中断阈值等参数,并提供温度数据读取接口。当温度超过95°C阈值时,会触发硬件关断保护机制。
原创
博文更新于 2026.01.16 ·
1365 阅读 ·
33 点赞 ·
0 评论 ·
21 收藏

[Linux外设驱动详解]15.LM75温度传感器驱动开发流程

本文深入分析了基于RK3588平台的LM75温度传感器Linux驱动实现。LM75是一款广泛使用的I2C接口数字温度传感器,支持-55°C~+125°C测量范围,典型精度±2°C。驱动采用分层架构,通过HWMON子系统向用户空间提供温度数据访问接口,底层使用I2C核心和Regmap框架与硬件通信。关键实现包括:1) I2C设备ID匹配表;2) 温度寄存器数据格式转换;3) 配置寄存器控制;4) 设备树集成。驱动支持32种兼容芯片,涵盖National、TI、Maxim等厂商产品,具有完善的电源管理和调试功能
原创
博文更新于 2026.01.16 ·
1139 阅读 ·
17 点赞 ·
0 评论 ·
16 收藏

[Linux外设驱动详解]14.触摸屏驱动开发流程

本文分析了基于RK3588平台的Goodix GT9xx触摸屏驱动开发流程。主要内容包括:1)驱动概述,介绍触摸屏驱动的作用和核心数据结构;2)驱动架构,展示从硬件到用户空间的整体框架和注册机制;3)驱动初始化流程,详细描述从probe入口到面板初始化的完整过程。该驱动通过I2C总线与触摸芯片通信,实现了中断处理、数据上报和电源管理等功能,为系统提供触摸输入支持。
原创
博文更新于 2026.01.12 ·
1328 阅读 ·
17 点赞 ·
0 评论 ·
14 收藏

[Linux外设驱动详解]第10章 输入子系统(Input Subsystem)

输入子系统(Input Subsystem)摘要 Linux输入子系统是内核管理各类输入设备(键盘、鼠标、触摸屏等)的统一框架,采用分层架构: 架构层次: 用户空间:应用程序通过/dev/input/eventX接口访问 输入核心层:负责设备注册和事件分发 驱动层:硬件驱动实现具体设备操作 硬件层:物理设备连接 核心结构: input_dev结构体包含设备标识、事件位图、状态信息和回调函数 通过位图机制管理不同事件类型(按键、坐标、LED等) 关键功能: 提供标准API实现设备注册/注销 支持事件上报机制
原创
博文更新于 2026.01.12 ·
967 阅读 ·
34 点赞 ·
0 评论 ·
26 收藏

[Linux外设驱动详解]13. 驱动调试技巧

本文介绍了Linux内核驱动开发中的关键调试技术。重点讲解了动态调试(dynamic_debug)机制,它允许运行时灵活控制调试输出而无需重新编译内核,支持按模块、文件、函数和行号进行细粒度控制,并通过jump_label优化降低性能开销。文章详细说明了动态调试的实现原理、数据结构、使用方法及实际应用示例,包括通过debugfs控制输出的具体命令语法。此外还简要提及了ftrace函数跟踪框架的功能,为内核开发者提供了实用的调试工具和方法。
原创
博文更新于 2026.01.11 ·
861 阅读 ·
27 点赞 ·
0 评论 ·
11 收藏

[Linux外设驱动详解]12. 时钟与电源管理

本文摘要: RK3588 SoC的时钟与电源管理系统是保证芯片高效运行和低功耗的关键。文章详细介绍了Linux内核中的三个核心子系统:1) Common Clock Framework(CCF)通用时钟框架,包括其两层架构设计、核心数据结构、时钟操作流程以及RK3588的时钟树结构;2) Runtime PM与Suspend/Resume运行时电源管理;3) Regulator子系统电压调节器管理。重点分析了CCF中的基础时钟类型如固定频率时钟、门控时钟、分频器等,以及Rockchip PLL时钟的具体实现
原创
博文更新于 2026.01.11 ·
642 阅读 ·
15 点赞 ·
0 评论 ·
27 收藏

[Linux外设驱动详解]11. 平台设备驱动(Platform Driver)

本文介绍了Linux内核中的平台设备驱动(Platform Driver)框架,主要内容包括: 平台设备驱动概述:用于管理片上外设(SoC内置外设),提供统一的注册和匹配机制。 平台总线(platform_bus):虚拟总线,负责平台设备和驱动的匹配,包含核心数据结构platform_bus_type。 平台设备(platform_device):描述硬件设备的结构体,包含资源定义(内存、中断等)。 平台驱动(platform_driver):设备驱动结构体,包含probe/remove等操作函数。 设备与
原创
博文更新于 2026.01.11 ·
1085 阅读 ·
26 点赞 ·
0 评论 ·
29 收藏

[Linux外设驱动详解]9. I2C/SPI总线驱动模型

本文分析了Linux内核中I2C和SPI总线驱动模型的核心架构与实现。主要内容包括:I2C的分层架构(adapter-client-driver模型)和关键数据结构(i2c_adapter、i2c_algorithm、i2c_client);SPI的master-device-driver模型;设备与驱动的匹配机制;以及通过TMP102温度传感器驱动的实战案例。文章深入解析了内核源码中的关键数据结构和接口函数,为开发I2C/SPI设备驱动提供了系统性的指导。
原创
博文更新于 2026.01.11 ·
891 阅读 ·
24 点赞 ·
0 评论 ·
19 收藏

[Linux外设驱动详解]5.设备树(Device Tree)详解

设备树(Device Tree)是ARM平台硬件描述的核心机制,它实现了硬件配置与内核代码的分离。本文详细解析了设备树的工作原理和实现方式,包括:1)设备树解决了传统硬编码硬件信息导致的维护困难问题;2)设备树核心数据结构device_node和property的组织形式;3)DTS/DTSI文件的基本语法和结构;4)驱动如何解析设备树节点获取硬件资源;5)GPIO、中断和时钟等关键资源的描述与获取方法。通过实例分析展示了设备树在实际开发中的应用,为ARM平台驱动开发提供了重要参考。
原创
博文更新于 2026.01.10 ·
891 阅读 ·
24 点赞 ·
0 评论 ·
29 收藏

[Linux外设驱动详解]4.Linux 设备模型与 sysfs 机制深度分析

本文深入分析了Linux设备模型与sysfs机制,重点阐述了kobject、kset和ktype三大核心组件的工作原理及其相互关系。kobject作为基础数据结构,通过kref管理引用计数,kset实现kobject集合管理,ktype定义对象行为规范。文章详细解析了kobject的生命周期管理流程,包括初始化(kobject_init)、添加(kobject_add)和释放(kobject_put)等关键操作,并揭示了这些组件如何通过sysfs文件系统(/sys)向用户空间暴露设备属性和层次结构。通过源码
原创
博文更新于 2026.01.10 ·
2015 阅读 ·
36 点赞 ·
0 评论 ·
15 收藏

[Linux外设驱动详解]8. GPIO子系统

GPIO子系统摘要 Linux内核的GPIO子系统为驱动开发者提供了统一的API接口,用于控制通用输入输出引脚。该子系统采用分层架构: 用户层:驱动开发者调用gpiod_get()、gpiod_set_value()等统一API 核心层:管理GPIO描述符、权限检查、统一编号空间,与设备树/ACPI交互 驱动层:各SoC厂商实现具体的GPIO控制器驱动(如gpio-rockchip.c) 核心数据结构包括: gpio_desc:描述单个GPIO引脚状态 gpio_chip:抽象GPIO控制器操作 gpio_
原创
博文更新于 2026.01.10 ·
941 阅读 ·
28 点赞 ·
0 评论 ·
9 收藏

[Linux外设驱动详解]7. 内存管理与 I/O 访问

在 Linux 驱动开发中,硬件设备的寄存器通常位于物理地址空间。内核代码使用的是虚拟地址,因此需要一种机制将物理地址映射到内核虚拟地址空间。ioremap就是为此而设计的接口。在驱动开发中,访问硬件寄存器需要使用专门的访问宏,而不是直接指针解引用。字节序处理:硬件通常使用小端序内存屏障:确保访问顺序正确编译器优化控制:防止访问被优化掉DMA(Direct Memory Access)允许硬件设备直接访问系统内存,无需 CPU 参与。在驱动开发中,需要分配符合 DMA 要求的内存缓冲区。
原创
博文更新于 2026.01.10 ·
888 阅读 ·
40 点赞 ·
0 评论 ·
21 收藏

[Linux外设驱动详解]6. 中断处理

Linux内核中断处理采用分阶段策略:上半部在硬件中断上下文中快速响应,禁止抢占;下半部处理耗时操作,允许睡眠。下半部机制包括软中断(静态定义、高效)、Tasklet(基于软中断、不可并发)和工作队列(最灵活、可睡眠)。软中断是基础机制,Tasklet适合简单任务,工作队列适用于复杂操作。内核通过这种分层设计平衡了响应速度与处理能力。
原创
博文更新于 2026.01.10 ·
1328 阅读 ·
30 点赞 ·
0 评论 ·
27 收藏

[Linux外设驱动详解]第一部分:基础篇 —— 驱动开发入门

本文介绍了Linux设备驱动开发的基础知识,重点围绕RK3588平台展开。主要内容包括: Linux设备驱动的本质与分类(字符设备/块设备/网络设备) 内核模块机制(动态加载、生命周期) 字符设备驱动开发流程(注册/操作接口) 源码分析方法和设备节点创建 文章通过代码示例和架构图展示了驱动如何在内核空间工作,并连接用户程序与硬件设备。适合嵌入式开发者入门Linux驱动开发,掌握RK3588等ARM平台的驱动开发基础。
原创
博文更新于 2026.01.05 ·
1320 阅读 ·
30 点赞 ·
0 评论 ·
13 收藏

[Linux外设驱动详解]U-Boot DFU (Device Firmware Upgrade) 技术分析

本文分析了U-Boot中的DFU(Device Firmware Upgrade)功能实现,重点针对瑞芯微RK3588平台。文章从DFU协议概述开始,对比了传统升级方式与DFU方式的优势,包括无需拆装SD卡、支持高速USB传输等。随后详细解析了U-Boot中DFU功能的源码结构、分层架构设计,包括USB Gadget驱动层、DFU核心层和设备后端层。文章还介绍了DFU实体的概念、Alternate Setting机制以及不同数据布局类型。最后阐述了核心数据结构dfu_entity的定义,包含设备类型、布局类
原创
博文更新于 2026.01.04 ·
1312 阅读 ·
21 点赞 ·
0 评论 ·
12 收藏

[Linux外设驱动详解]U-Boot mkimage 工具分析

U-Boot mkimage工具分析摘要 mkimage是U-Boot提供的镜像打包工具,主要作用是为裸机二进制文件添加标准化的头部信息。该工具支持Legacy和FIT两种格式,其中Legacy格式采用64字节固定头部结构,包含镜像魔数、CRC校验、加载地址、入口点等关键信息。在RK3588平台上,mkimage还实现了Rockchip V2格式的特殊启动头,适配芯片特定的启动流程。通过添加这些头部信息,mkimage确保了镜像能被Boot ROM正确识别和加载,同时提供完整性校验和多镜像支持能力。
原创
博文更新于 2026.01.04 ·
1128 阅读 ·
19 点赞 ·
0 评论 ·
20 收藏

[Linux外设驱动详解]RK3588 平台 U-Boot 环境变量加载机制分析

本文分析了RK3588平台上U-Boot环境变量的加载机制。主要内容包括: 环境变量基础概念:介绍了环境变量的存储格式(CRC32校验+键值对数据)和生命周期(从存储设备加载到运行时修改保存)。 核心数据结构:详细解析了env_t结构体(包含CRC校验和环境数据)和env_driver驱动模型(支持多种存储介质)。 RK3588平台特性:默认使用MMC存储环境变量,可通过设备树动态配置存储位置和分区信息。 冗余环境机制:采用双副本存储提高可靠性,通过CRC校验选择有效副本。 加载流程分析:从设备树获取配置参
原创
博文更新于 2026.01.03 ·
1099 阅读 ·
31 点赞 ·
0 评论 ·
22 收藏

[Linux外设驱动详解]RK3588 启动地址与链接脚本详解

RK3588启动地址与链接脚本摘要 RK3588启动过程分为SPL、U-Boot和Linux内核三个阶段,每个阶段都有特定的启动地址和内存布局: 启动地址: SPL阶段从0x00000000(内部SRAM)开始 U-Boot主程序加载到DDR内存0x00200000位置 Linux内核加载到DDR物理基址+0x80000偏移处 链接脚本特点: SPL链接脚本将代码段放在SRAM中,BSS段放在SDRAM U-Boot链接脚本定义0x00000000虚拟地址,实际运行时会重定位 Linux内核链接脚本从虚拟地
原创
博文更新于 2026.01.03 ·
1338 阅读 ·
34 点赞 ·
0 评论 ·
13 收藏

[Linux外设驱动详解]RK3588 Linux 启动流程与 MMU/Cache/TLB 初始化详解

本文档详细分析了RK3588平台Linux系统从启动到内核运行的完整流程,重点探讨了MMU、Cache和TLB的初始化机制。主要内容包括:1) ARMv8架构基础知识;2) 系统启动时序图展示ROM、ATF、U-Boot和内核各阶段;3) U-Boot启动流程详解,特别是SPL阶段的DDR初始化和start.S中的底层初始化代码;4) Linux内核启动过程中MMU/Cache/TLB的关键初始化步骤。文档通过流程图和代码片段直观呈现了RK3588的启动过程,适合嵌入式Linux开发者参考。
原创
博文更新于 2026.01.02 ·
1365 阅读 ·
17 点赞 ·
2 评论 ·
9 收藏

[Linux外设驱动详解]RK3588 Uboot Fastboot 实现分析

本文分析了RK3588平台上U-Boot Fastboot的实现机制。主要内容包括:1) Fastboot模式进入的三种方式:通过BCB控制块、启动模式寄存器或环境变量;2) USB协议实现细节,包括设备描述符、端点配置及初始化流程;3) Fastboot功能实现,支持镜像刷写、设备信息查询等操作。文章通过流程图和代码片段详细说明了RK3588 Fastboot的工作原理,为开发者提供了底层实现参考。
原创
博文更新于 2026.01.02 ·
1326 阅读 ·
13 点赞 ·
0 评论 ·
28 收藏
加载更多