<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Arockdj的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Arockdj</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Arockdj]]></copyright><item><title><![CDATA[RK3399 电子相册进阶：目录遍历 + 链表存储，实现自动加载图片（附完整项目）]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/155283632</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/155283632</guid><author>Arockdj</author><pubDate>Wed, 26 Nov 2025 21:00:40 +0800</pubDate><description><![CDATA[本文介绍了一个基于RK3399开发板的电子相册项目，通过自动扫描图片目录和链表存储实现动态图片加载。主要内容包括：1.使用Linux目录操作API(opendir/readdir)自动获取指定文件夹下的图片文件；2.采用双向循环链表动态存储图片路径，解决数组固定大小的限制；3.整合JPEG显示功能实现图片循环播放，支持ESC键退出。项目亮点在于实现了&quot;一键启动、自动加载、循环播放&quot;的完整功能，代码结构清晰，包含链表实现、文件操作和图形显示等核心技术，适合嵌入式开发学习和简历项目展示。]]></description><category></category></item><item><title><![CDATA[RK3399 嵌入式开发：libjpeg 库移植与 JPEG 图片显示实战（含 BMP 转 JPEG）]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/155283512</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/155283512</guid><author>Arockdj</author><pubDate>Wed, 26 Nov 2025 20:54:28 +0800</pubDate><description><![CDATA[本文详细介绍了在RK3399嵌入式Linux平台上实现JPEG图片显示的全过程。主要内容包括：1. 准备工作：硬件平台搭建和libjpeg库移植；2. JPEG显示实现：通过LCD显存操作和libjpeg解码流程；3. 功能扩展：实现循环播放相册和BMP转JPEG功能。文章提供了完整的代码实现和详细的步骤说明，所有功能均经过实际验证，可直接应用于嵌入式项目开发。关键技术点包括：交叉编译配置、显存映射操作、JPEG编解码流程等，为嵌入式图像处理提供了实用解决方案。]]></description><category></category></item><item><title><![CDATA[Linux fb 子系统实战：从原理到 RK3399 屏幕显示（含 BMP 图片显示）]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/155203540</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/155203540</guid><author>Arockdj</author><pubDate>Mon, 24 Nov 2025 19:46:00 +0800</pubDate><description><![CDATA[本文详细介绍了Linux fb子系统在RK3399开发板上的应用实践，从原理到代码实现。主要内容包括：fb子系统核心概念（帧缓冲、色深、设备节点等）和RK3399屏幕参数解析；应用层编程流程：设备打开、参数获取、显存映射、数据写入；三个实战案例：获取屏幕信息、显示纯色、BMP图片显示（含BGR转RGB和行顺序修正）；实用技巧与常见问题解决方案。通过mmap直接操作显存实现高效显示，特别适合嵌入式Linux开发场景。文章提供了完整的示例代码和避坑指南，帮助开发者快速掌握fb子系统的使用。]]></description><category></category></item><item><title><![CDATA[Linux Platform 总线 LED 驱动实战代码包]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/155075825</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/155075825</guid><author>Arockdj</author><pubDate>Thu, 20 Nov 2025 20:53:30 +0800</pubDate><description><![CDATA[摘要：本文介绍了一个嵌入式Linux平台的LED驱动开发包，支持RK3399、树莓派等开发板。包含驱动代码、设备树片段和测试脚本，提供两种设备匹配方式：设备树匹配（推荐）和传统模块匹配。驱动代码实现LED控制功能，包括GPIO和寄存器两种操作方式，并提供了字符设备接口。详细说明了代码结构、编译方法和测试流程，同时给出常见问题解决方案。该开发包可直接编译验证，适用于嵌入式Linux系统的LED设备驱动开发。]]></description><category></category></item><item><title><![CDATA[Linux 平台总线驱动模型（platform）从入门到实战：适用于嵌入式开发]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/155074928</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/155074928</guid><author>Arockdj</author><pubDate>Thu, 20 Nov 2025 20:16:50 +0800</pubDate><description><![CDATA[本文介绍了Linux平台总线驱动开发的核心概念与实践方法。平台总线作为虚拟总线，通过解耦设备端（硬件属性）和驱动端（操作逻辑）实现代码复用，解决无专用总线外设的驱动开发问题。文章详细讲解了platform_device和platform_driver的数据结构、API接口及3种匹配方式（设备树匹配优先级最高），并以RK3399开发板的LED控制为例，给出了完整的设备端和驱动端代码实现。最后介绍了设备树适配方案和常见调试技巧，帮助开发者快速掌握平台总线驱动开发。该架构显著提升驱动代码的可移植性，是嵌入式Lin]]></description><category></category></item><item><title><![CDATA[RK3399 平台总线设备驱动开源项目（多设备扩展版）]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/155036969</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/155036969</guid><author>Arockdj</author><pubDate>Wed, 19 Nov 2025 20:28:40 +0800</pubDate><description><![CDATA[摘要： RK3399-Platform-Device-Suite项目为RK3399开发板实现了完整的平台总线驱动，包含LED、按键、ADC和PWM风扇4类核心设备的驱动解决方案。项目提供模块注册和设备树两种设备声明方式，采用平台总线模型实现设备与驱动分离。每个设备包含独立的设备模块和驱动模块，支持通过QT可视化控制端进行交互，并配套测试脚本验证功能。项目结构清晰，包含设备树配置、内核模块代码、用户空间控制程序和详细部署文档，实现了从硬件资源管理到用户控制的全流程解决方案，特别展示了中断处理（按键）、内存映射]]></description><category></category></item><item><title><![CDATA[从入门到实战：RK3399 Linux 平台总线驱动模型全解析（附开源控制项目）]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/155036606</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/155036606</guid><author>Arockdj</author><pubDate>Wed, 19 Nov 2025 20:22:51 +0800</pubDate><description><![CDATA[本文详细介绍了Linux平台总线(PlatformBus)模型在RK3399开发板上的应用。该模型通过分离设备信息(device)和驱动逻辑(driver)，实现了硬件布局变更时只需修改设备信息而无需重写驱动代码的灵活架构。文章首先解析了平台总线的三大核心实体(设备、驱动、总线)及其解耦价值，然后深入讲解了关键数据结构、匹配流程以及实战开发步骤，包括编写LED设备模块(driver.c)和驱动模块(driver.c)。最后提出了一个开源项目设计：基于QT的RK3399平台设备可视化控制中心，能够通过GUI。]]></description><category></category></item><item><title><![CDATA[Linux 中断核心模块（rk3399 平台适配）]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/155001670</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/155001670</guid><author>Arockdj</author><pubDate>Tue, 18 Nov 2025 20:57:13 +0800</pubDate><description><![CDATA[本文介绍了基于rk3399平台（ARM64架构）的Linux内核四大核心模块开发：顶半部中断、定时器、tasklet和workqueue。每个模块都提供了API汇总、适用场景说明和可直接编译运行的代码示例。重点内容包括：GPIO中断处理（含按键消抖）、定时器使用、tasklet轻量级任务处理以及三种workqueue实现方式（共享队列、私有队列和延迟任务）。文章详细说明了rk3399平台的GPIO编号规则和交叉编译方法，并提供了完整的Makefile模板。所有代码均针对rk3399平台优化，兼顾实用性。]]></description><category></category></item><item><title><![CDATA[Linux 中断控制与实现：通俗原理 + 流程 + 设计初衷]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/155000915</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/155000915</guid><author>Arockdj</author><pubDate>Tue, 18 Nov 2025 20:43:58 +0800</pubDate><description><![CDATA[Linux中断机制通过&quot;顶半部+底半部&quot;架构实现高效响应与处理：顶半部快速响应中断（如按键检测），底半部异步处理耗时任务（如消抖）。提供多种工具选择：定时器（timer）用于延迟执行，tasklet处理轻量级任务（中断上下文），workqueue处理耗时可阻塞任务（进程上下文）。该设计平衡了响应速度与CPU利用率，解决了外设与CPU速度不匹配问题。典型应用如按键中断采用&quot;顶半部启动timer+底半部消抖处理&quot;的组合方案。选择组件时需根据任务特性（延迟、耗时、可阻塞等）]]></description><category></category></item><item><title><![CDATA[ Linux 中断：从基础到实战的深度解析]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/154959065</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/154959065</guid><author>Arockdj</author><pubDate>Mon, 17 Nov 2025 21:09:03 +0800</pubDate><description><![CDATA[Linux中断机制是系统的&quot;神经反射系统&quot;，通过异步事件通知实现高效外设响应。文章系统讲解中断原理与开发实践：1) 介绍中断分类（硬件/软件）及处理流程；2) 分析顶半部（快速响应）与底半部（耗时处理）的分工机制；3) 提供设备树配置到驱动开发的完整案例，包含按键中断+Tasklet实现；4) 给出调试工具与优化技巧；5) 拓展中断共享与优先级管理。通过类比急诊分诊等生活实例，深入浅出地解析了这一核心机制，为开发者提供实用指南。]]></description><category></category></item><item><title><![CDATA[Linux 系统中断控制与实现：从基础到实战（附完整代码）]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/154958745</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/154958745</guid><author>Arockdj</author><pubDate>Mon, 17 Nov 2025 21:00:14 +0800</pubDate><description><![CDATA[本文介绍了Linux驱动开发中的中断机制，包括基本原理和实战应用。主要内容涵盖：中断的核心概念（IRQ、ISR、顶/底半部）、关键API（request_irq、free_irq等）、定时器实现按键消抖（jiffies、timer_list）、以及两种底半部处理方式（tasklet和工作队列）。文章通过代码示例和对比表格，详细讲解了中断处理流程及注意事项，适合驱动开发初学者掌握中断处理的基本方法和最佳实践。]]></description><category></category></item><item><title><![CDATA[Linux 系统模块编程从入门到实战：手把手教你写内核模块]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/154920187</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/154920187</guid><author>Arockdj</author><pubDate>Sun, 16 Nov 2025 23:54:55 +0800</pubDate><description><![CDATA[本文介绍了Linux内核模块编程的核心技术与实践方法。Linux模块(.ko)作为动态扩展内核功能的载体，支持运行时加载/卸载，具有灵活性、高效性和轻量化三大优势。文章详细解析了模块开发的四大必备组件：头文件引入、加载函数(__init)、卸载函数(__exit)和许可证声明(GPL)，并提供了HelloWorld模块代码示例。同时讲解了基于内核源码的模块编译方法，包括Makefile编写要点和编译步骤，以及模块操作命令(insmod/rmmod/lsmod/dmesg)的使用技巧。最后强调了内核版本一致性]]></description><category></category></item><item><title><![CDATA[Linux 系统模块编程从入门到实战：手把手教你写内核模块前言]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/154919953</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/154919953</guid><author>Arockdj</author><pubDate>Sun, 16 Nov 2025 23:51:00 +0800</pubDate><description><![CDATA[本文详细介绍Linux内核模块编程，从基础概念到实战应用。主要内容包括：Linux模块的作用与优势，支持动态加载/卸载以灵活扩展功能；模块的基本构成（头文件、加载/卸载函数、许可证声明等）和可选功能（符号导出、模块信息）；模块编译流程与Makefile编写；常用操作命令（加载、卸载、查看模块信息）；通过四个实战示例（最小模块、日志等级、模块间调用、参数传递）演示核心开发技巧。文章还提供了常见问题排查方法，帮助开发者快速上手Linux内核模块开发，为后续驱动开发奠定基础。]]></description><category></category></item><item><title><![CDATA[从入门到实战：Linux GPIO_LED 驱动开发（ioctl 接口实现）]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/154872047</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/154872047</guid><author>Arockdj</author><pubDate>Sat, 15 Nov 2025 12:02:15 +0800</pubDate><description><![CDATA[本文介绍了嵌入式Linux中通过ioctl接口控制LED的驱动开发流程。ioctl是Linux内核提供的设备控制接口，支持&quot;命令+数据&quot;交互方式，适合LED等外设控制。文章详细解析了ioctl命令码的32位组成结构，包括传输方向、数据大小、魔数和命令编号。开发流程涉及杂项设备注册、GPIO操作和ioctl命令交互等核心内容，配套代码可直接编译运行，帮助初学者快速掌握GPIO外设开发技能。]]></description><category></category></item><item><title><![CDATA[RK3399 LED 驱动调试排错手册（基于杂项字符设备）]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/154848865</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/154848865</guid><author>Arockdj</author><pubDate>Fri, 14 Nov 2025 21:23:02 +0800</pubDate><description><![CDATA[本文提供了一份RK3399 LED驱动开发的实用调试手册。重点介绍了三类常见问题：编译阶段报错（头文件缺失、路径错误等）、加载阶段报错（设备冲突、符号未定义等）和运行阶段问题（功能异常、内核崩溃等），并给出具体解决方法。手册详细阐述了寄存器验证的三种方法：在驱动中打印寄存器值、使用devmem工具直接读写、对照数据手册验证，帮助开发者精准定位硬件控制问题。同时介绍了内核日志分析技巧，包括常用命令、日志解读方法和分析步骤，以及推荐的调试工具。最后总结了一个清晰的调试流程，帮助开发者高效解决问题。]]></description><category></category></item><item><title><![CDATA[从 0 到 1 理解 RK3399 杂项字符设备 LED 驱动开发]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/154848825</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/154848825</guid><author>Arockdj</author><pubDate>Fri, 14 Nov 2025 21:17:26 +0800</pubDate><description><![CDATA[本文详细讲解了基于RK3399开发板的杂项字符设备(LED)驱动开发。从核心概念入手，介绍了杂项设备的简化特性（共享主设备号10）、GPIO控制原理及关键结构体。随后拆解了完整驱动代码框架，包括地址映射、时钟使能、GPIO配置、文件操作接口实现等核心模块。通过Makefile编译和测试应用程序验证了驱动功能，并总结了常见问题解决方案。该驱动利用了misc_register简化注册流程，自动创建设备节点，适用于简单外设控制场景。文章通过原理讲解与代码实践相结合的方式，帮助开发者掌握杂项字符设备驱动的开发逻辑。]]></description><category></category></item><item><title><![CDATA[Linux字符设备驱动模型]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/154794518</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/154794518</guid><author>Arockdj</author><pubDate>Thu, 13 Nov 2025 19:59:08 +0800</pubDate><description><![CDATA[本文详细解析Linux字符设备驱动的三种实现模型。首先介绍字符设备驱动的基本概念和核心结构体file_operations，它是连接应用层与硬件的关键接口。然后重点讲解杂项设备驱动模型，其主设备号固定为10，开发简单但资源有限；早期经典模型支持多个设备但需手动创建设备节点；Linux 2.6标准模型采用dev_t设备号和cdev结构体，资源充足且扩展性强。文章通过完整代码示例演示各模型的实现方法，包括驱动注册、设备节点创建等关键流程，并提供三种模型的对比总结，建议按照杂项→早期→标准的顺序学习。]]></description><category></category></item><item><title><![CDATA[五、“笨办法” 学 K8s：亲手组装一个 Kubernetes 节点，彻底理解集群启动]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/154788525</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/154788525</guid><author>Arockdj</author><pubDate>Thu, 13 Nov 2025 14:53:10 +0800</pubDate><description><![CDATA[《手动搭建单节点K8s集群：从零到精通的实践指南》 摘要：本文详细介绍了手动搭建单节点Kubernetes集群的全过程，强调通过&quot;笨办法&quot;深入理解K8s核心组件协作原理。内容包括：环境准备（系统配置、依赖安装）、五大核心步骤（二进制组件安装、TLS证书生成、containerd配置、K8s组件启动、Flannel网络部署），以及常见问题排查方法。重点讲解了kubelet、apiserver等组件的配置细节，揭示了自动化工具隐藏的实现原理。通过手动搭建，读者能够掌握证书管理、组件通信等关键]]></description><category></category></item><item><title><![CDATA[四、解构 K8s 节点：核心组件在 Linux 上是如何协同工作的？]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/154749051</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/154749051</guid><author>Arockdj</author><pubDate>Wed, 12 Nov 2025 19:41:57 +0800</pubDate><description><![CDATA[本文以 “K8s 节点 = 高效办公室” 的通俗类比，解构了 kubelet、containerd、kube-proxy 等核心组件的协作逻辑及与 Linux 内核的交互原理：containerd 作为 “施工队” 直接调用 Namespace（隔离）和 cgroups（资源管控）API 实现容器生命周期管理；kubelet 作为 “项目经理” 通过 CRI 接口协调 containerd，同时监控 Linux 内核资源状态。]]></description><category></category></item><item><title><![CDATA[三、告别资源争夺：Linux cgroups 如何实现容器资源管家的公平与公正？]]></title><link>https://blog.youkuaiyun.com/Arockdj/article/details/154659773</link><guid>https://blog.youkuaiyun.com/Arockdj/article/details/154659773</guid><author>Arockdj</author><pubDate>Wed, 12 Nov 2025 19:25:51 +0800</pubDate><description><![CDATA[摘要：本文深入解析Linux控制组（cgroups）技术，揭示其在容器资源管控中的核心作用。文章首先通过实例说明资源隔离的必要性，详细拆解CPU、内存等5个关键子系统的功能配置。核心部分包含手动实验，演示如何通过cgroups文件系统为进程设置内存限制。同时关联K8s资源配置原理，说明Pod资源限制的底层实现机制。最后提供常见问题排查指南，帮助读者掌握容器资源管控的底层逻辑，从理论到实践全面理解cgroups技术。]]></description><category></category></item></channel></rss>