<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ip0417的博客]]></title><description><![CDATA[个人知识整理]]></description><link>https://blog.csdn.net/ip0417</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; ip0417]]></copyright><item><title><![CDATA[RK3588 HDMI转DVI黑屏问题排查与解决]]></title><link>https://blog.csdn.net/ip0417/article/details/158007910</link><guid>https://blog.csdn.net/ip0417/article/details/158007910</guid><author>ip0417</author><pubDate>Thu, 12 Feb 2026 15:14:04 +0800</pubDate><description><![CDATA[摘要：RK3588开发板通过HDMI转DVI转接器连接显示器时出现冷启动黑屏问题，但热插拔后正常。排查发现DVI转接器的I2C总线初始化比HPD信号慢1-2秒，导致系统启动时读取EDID失败。最终通过保留设备树中的force-output属性（删除/delete-property/force-output行），强制标记HDMI为已连接状态，完美解决问题。该方案不影响热插拔和多屏切换功能，说明理解硬件时序差异和善用现有设备树机制的重要性。]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】等待队列]]></title><link>https://blog.csdn.net/ip0417/article/details/157940317</link><guid>https://blog.csdn.net/ip0417/article/details/157940317</guid><author>ip0417</author><pubDate>Tue, 10 Feb 2026 14:48:26 +0800</pubDate><description><![CDATA[Linux内核等待队列是实现进程阻塞和唤醒的基础机制，广泛应用于驱动开发中的阻塞I/O操作。本文详细介绍了等待队列的工作原理、API接口和使用场景，包括初始化、等待函数(wait_event系列)、唤醒函数(wake_up系列)以及手动操作方法。通过多个代码示例展示了如何实现基本阻塞读取、超时等待、非阻塞模式支持等功能，并提供了环形缓冲区的完整实现。文章还总结了使用注意事项（如条件检查和锁的使用）、调试方法，强调了等待队列在实现阻塞I/O中的重要性。这些内容为Linux驱动开发者提供了实用的技术参考。]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】Tasklet与软中断]]></title><link>https://blog.csdn.net/ip0417/article/details/157940294</link><guid>https://blog.csdn.net/ip0417/article/details/157940294</guid><author>ip0417</author><pubDate>Tue, 10 Feb 2026 14:47:13 +0800</pubDate><description><![CDATA[本文详细介绍了Linux内核中Tasklet和软中断(Softirq)两种中断下半部处理机制。主要内容包括：1)中断处理机制分为上半部(快速响应)和下半部(延迟处理)；2)软中断是内核级延迟机制，包含多种预定义类型，具有高并发性；3)Tasklet基于软中断实现，提供简化接口，执行串行化但更安全；4)详细说明了两者的注册、调度和操作方法，并给出完整示例代码；5)介绍了高级应用场景、性能优化技巧和调试方法；6)总结了常见问题解决方案和最佳实践选择建议。这两种机制适用于不同的中断处理场景，开发者应根据具体需求选]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】RCU机制]]></title><link>https://blog.csdn.net/ip0417/article/details/157612030</link><guid>https://blog.csdn.net/ip0417/article/details/157612030</guid><author>ip0417</author><pubDate>Sun, 01 Feb 2026 09:56:05 +0800</pubDate><description><![CDATA[本文详细介绍了Linux内核中的RCU(Read-Copy Update)同步机制。RCU通过无锁读取和延迟释放的特性，特别适合读多写少的场景(读写比例&gt;10:1)，其读操作性能可达传统锁机制的30倍。文章系统讲解了RCU原理，包括读者无锁访问、写者复制更新、宽限期等待等核心机制，并提供了详细的API使用说明和内存屏障注意事项。通过设备管理驱动和链表/指针保护的完整示例，展示了RCU在RK3588驱动开发中的实际应用。同时指出了适用场景和常见错误，如读临界区内不能睡眠、必须使用专用API等。RCU在保]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】printk调试方法]]></title><link>https://blog.csdn.net/ip0417/article/details/157612021</link><guid>https://blog.csdn.net/ip0417/article/details/157612021</guid><author>ip0417</author><pubDate>Sun, 01 Feb 2026 09:55:15 +0800</pubDate><description><![CDATA[本文详细介绍了Linux内核调试工具printk的使用方法。主要内容包括：1) 8种日志级别定义和使用；2) printk、dev_xxx和pr_xxx三种输出方式；3) 调试宏定义技巧，包括编译时和运行时控制；4) dump_stack函数调用栈打印；5) 日志查看方法(dmesg/logcat)；6) 日志级别控制；7) 动态调试技术；8) 常见问题解决方法。通过合理使用这些调试技巧，可以显著提高内核开发效率。文章为Linux内核开发者提供了全面的printk使用指南。]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】Platform总线驱动]]></title><link>https://blog.csdn.net/ip0417/article/details/157463801</link><guid>https://blog.csdn.net/ip0417/article/details/157463801</guid><author>ip0417</author><pubDate>Wed, 28 Jan 2026 08:20:54 +0800</pubDate><description><![CDATA[本文详细介绍了Linux内核中Platform总线驱动的开发方法。Platform总线作为虚拟总线，通过设备树compatible属性实现设备与驱动匹配。文章阐述了设备树配置方法，包括GPIO和pinctrl设置，并给出了最小驱动框架和GPIO驱动示例。同时介绍了常用API如设备树解析和GPIO操作，以及调试方法和常见问题排查。Platform驱动是Linux内核最常用的驱动框架，本文内容为开发此类驱动提供了实用指导。]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】Kernel Makefile与Kconfig]]></title><link>https://blog.csdn.net/ip0417/article/details/157463796</link><guid>https://blog.csdn.net/ip0417/article/details/157463796</guid><author>ip0417</author><pubDate>Wed, 28 Jan 2026 08:20:08 +0800</pubDate><description><![CDATA[本文介绍了RK3588 Android12平台下Kernel Makefile和Kconfig的使用方法。主要内容包括：1) 内核编译系统概述，包括文件分类和编译流程；2) Makefile语法详解，包括目标定义、多文件模块、目录递归等；3) Kconfig语法说明，涵盖config条目、数据类型、菜单和选择等；4) 添加新驱动模块的完整流程；5) 内核配置与编译选项设置；6) 实战示例演示LED驱动添加；7) 调试技巧和常见问题解决方法。文章为RK3588平台内核开发提供了实用指南。]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】GPIO控制]]></title><link>https://blog.csdn.net/ip0417/article/details/157432636</link><guid>https://blog.csdn.net/ip0417/article/details/157432636</guid><author>ip0417</author><pubDate>Tue, 27 Jan 2026 15:02:18 +0800</pubDate><description><![CDATA[本文详细介绍了RK3588平台的GPIO配置与使用方法。主要内容包括：1）GPIO编号计算公式，通过bank、group和pin计算具体编号；2）设备树配置方法，包括GPIO节点和pinctrl设置；3）驱动层开发框架，包含GPIO申请、方向设置和读写操作；4）应用层控制方式，包括sysfs接口和C语言编程；5）调试技巧和常见问题解决方法。文章提供了完整的代码示例，涵盖了从硬件配置到软件开发的完整流程，是RK3588平台GPIO开发的实用指南。]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】字符设备驱动开发]]></title><link>https://blog.csdn.net/ip0417/article/details/157432617</link><guid>https://blog.csdn.net/ip0417/article/details/157432617</guid><author>ip0417</author><pubDate>Tue, 27 Jan 2026 15:01:31 +0800</pubDate><description><![CDATA[本文详细介绍了Linux字符设备驱动的开发流程，包括设备号分配、cdev结构注册、file_operations实现等核心内容。重点讲解了字符设备驱动框架的五大步骤：设备号分配、cdev初始化、文件操作实现、设备注册和节点创建。通过一个完整的字符设备驱动示例，展示了open/read/write/ioctl等基本操作的实现方法，并介绍了poll/select支持、misc简化设备以及调试技巧。文章还总结了设备节点不存在、权限问题等常见故障的解决方法。字符设备驱动是Linux驱动开发的基础，掌握这些技术对后续]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】硬件中断IRQ]]></title><link>https://blog.csdn.net/ip0417/article/details/157401634</link><guid>https://blog.csdn.net/ip0417/article/details/157401634</guid><author>ip0417</author><pubDate>Mon, 26 Jan 2026 21:14:32 +0800</pubDate><description><![CDATA[本文介绍了RK3588 Android12平台下硬件中断的使用方法。主要内容包括：1. 中断基础知识，包括GIC中断控制器分类和触发方式；2. 中断API函数详解，如request_irq()等核心函数；3. GPIO中断示例，展示设备树配置和驱动代码实现；4. 线程化中断处理方式；5. 中断上下半部划分原则；6. 调试验证方法；7. 常见问题解决方案；8. RK3588 GPIO中断号计算方法。文章提供了完整的代码示例和调试技巧，适用于RK3588平台的嵌入式开发。]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】延时工作队列]]></title><link>https://blog.csdn.net/ip0417/article/details/157401618</link><guid>https://blog.csdn.net/ip0417/article/details/157401618</guid><author>ip0417</author><pubDate>Mon, 26 Jan 2026 21:13:22 +0800</pubDate><description><![CDATA[本文详细介绍了Linux内核中延时工作队列(Delayed Workqueue)在RK3588 Android12平台上的应用。延时工作队列允许在指定时间后执行任务，与普通工作队列相比具有延迟执行的特性。文章从基础概念入手，对比了两种工作队列的区别，详细解析了delayed_work结构体。重点阐述了初始化、调度和取消延时工作的基本方法，包括静态/动态初始化、三种调度方式以及取消和修改延时时间的API。通过三个完整示例展示了周期性任务、超时检测和状态机实现等典型应用场景。此外还介绍了自适应延迟和多阶段任务等]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】同步机制选型指南]]></title><link>https://blog.csdn.net/ip0417/article/details/157285767</link><guid>https://blog.csdn.net/ip0417/article/details/157285767</guid><author>ip0417</author><pubDate>Fri, 23 Jan 2026 10:21:33 +0800</pubDate><description><![CDATA[Linux内核提供了多种同步机制，选择合适的同步机制对驱动性能和稳定性至关重要。本文系统介绍各种同步机制的特点、适用场景和选型决策。优先考虑：能否睡眠、是否在中断上下文性能考虑：临界区长度、读写比例简单优先：能用原子操作就不用锁避免过度：不要过度使用锁测试验证：实际测试性能和正确性选型口诀简单计数用原子中断场景用自旋可睡眠用互斥读多写少用RCU资源计数用信号量。]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】设备树DTS进阶]]></title><link>https://blog.csdn.net/ip0417/article/details/157130592</link><guid>https://blog.csdn.net/ip0417/article/details/157130592</guid><author>ip0417</author><pubDate>Mon, 19 Jan 2026 10:39:59 +0800</pubDate><description><![CDATA[本文深入解析设备树(DTS)的高级特性，涵盖overlay机制、pinctrl配置、时钟管理、中断控制等核心内容。重点介绍了设备树overlay的动态加载方式、引脚复用与状态配置方法、时钟树结构与频率设置技巧，以及GIC中断控制器配置。同时详细阐述了电源域管理、DMA控制器使用、内存节点定义等关键技术，并提供了实用的调试命令和最佳实践建议。通过系统性地掌握这些高级特性，开发者能够更灵活地配置硬件资源，有效提升嵌入式系统开发效率。文章还包含常见问题解决方法，为实际开发提供参考指南。]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】设备树DTS基础]]></title><link>https://blog.csdn.net/ip0417/article/details/157130548</link><guid>https://blog.csdn.net/ip0417/article/details/157130548</guid><author>ip0417</author><pubDate>Mon, 19 Jan 2026 10:38:32 +0800</pubDate><description><![CDATA[本文介绍了RK3588 Android12平台下设备树的使用方法，包括设备树的基本概念、文件类型和语法结构。详细讲解了GPIO、中断、I2C等常用节点的配置方式，以及设备树的引用、覆盖和Pinctrl引脚配置。文章还提供了设备树编译调试技巧和常见问题排查方法，并给出实战示例说明如何在驱动中解析设备树。最后总结了节点不生效、引脚冲突等常见问题的解决方案，为RK3588平台开发提供了实用参考。]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】内核定时器]]></title><link>https://blog.csdn.net/ip0417/article/details/157103218</link><guid>https://blog.csdn.net/ip0417/article/details/157103218</guid><author>ip0417</author><pubDate>Sun, 18 Jan 2026 21:32:41 +0800</pubDate><description><![CDATA[本文详细介绍了Linux内核中两种定时器机制的使用方法。普通定时器timer基于jiffies实现，精度为毫秒级，适用于一般定时任务，通过timer_list结构体和相关API实现。高精度定时器hrtimer基于红黑树实现，精度可达纳秒级，适用于高精度定时需求，使用hrtimer结构体和时钟源类型。文章对比了两者的特性差异，并提供了完整驱动示例。注意事项包括回调函数不能休眠、长时间任务应使用工作队列等。两种定时器为驱动开发提供了灵活的定时解决方案，开发者可根据精度需求选择适合的方案。]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】工作队列Workqueue]]></title><link>https://blog.csdn.net/ip0417/article/details/157103211</link><guid>https://blog.csdn.net/ip0417/article/details/157103211</guid><author>ip0417</author><pubDate>Sun, 18 Jan 2026 21:31:41 +0800</pubDate><description><![CDATA[本文介绍了RK3588 Android12平台下Linux工作队列(Workqueue)的使用方法。工作队列是内核中实现延迟执行的重要机制，适合处理耗时操作或中断下半部任务。文章详细讲解了工作队列与定时器的区别、核心API函数、普通工作队列和延时工作队列的实现示例，并提供了调试方法和常见问题解决方案。通过实际应用场景展示，说明工作队列在中断处理和周期性任务中的典型用法，为RK3588平台开发提供了实用参考。]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】高精度定时器hrtimer]]></title><link>https://blog.csdn.net/ip0417/article/details/157060911</link><guid>https://blog.csdn.net/ip0417/article/details/157060911</guid><author>ip0417</author><pubDate>Sat, 17 Jan 2026 11:01:58 +0800</pubDate><description><![CDATA[本文详细介绍了Linux内核中的高精度定时器hrtimer。相比传统低精度定时器(timer)，hrtimer提供纳秒级精度，采用红黑树算法实现，适用于PWM模拟、精确采样等场景。文章对比了两种定时器的差异，详细解析了hrtimer的API使用方法，包括初始化、时间设置、启动/取消等操作，并提供了基本使用模板、平台驱动集成和GPIO模拟PWM等实用示例。同时指出了hrtimer在中断上下文执行、精度限制等方面的注意事项，以及调试方法和常见问题解决方案。hrtimer为时间敏感型应用提供了高精度定时支持，但使]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】SDK源码下载与编译]]></title><link>https://blog.csdn.net/ip0417/article/details/157060885</link><guid>https://blog.csdn.net/ip0417/article/details/157060885</guid><author>ip0417</author><pubDate>Sat, 17 Jan 2026 11:00:08 +0800</pubDate><description><![CDATA[摘要：本文详细介绍了RK3588 Android12 SDK的开发环境配置与编译流程。主要内容包括：SDK获取方式（官方渠道/100GB+大小）、目录结构解析、Ubuntu环境配置（JDK8/依赖包安装）、完整编译方法（./build.sh一键编译或分步编译U-Boot/Kernel/Android）、模块编译技巧（mm/mmm命令）以及常见问题排查方案（内存不足/ninja错误等）。该SDK基于Linux 5.10内核和Android 12系统，适用于RK3588芯片开发，推荐使用8核CPU/32GB内存]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】ADB调试环境配置]]></title><link>https://blog.csdn.net/ip0417/article/details/156980137</link><guid>https://blog.csdn.net/ip0417/article/details/156980137</guid><author>ip0417</author><pubDate>Thu, 15 Jan 2026 09:59:40 +0800</pubDate><description><![CDATA[ADB (Android Debug Bridge) 是Android开发调试的核心工具，提供了设备与PC之间的通信桥梁。本文详细介绍RK3588 Android12平台的ADB配置、连接方式、权限获取及常见问题解决。]]></description><category></category></item><item><title><![CDATA[【RK3588 Android12】开发效率提升技巧]]></title><link>https://blog.csdn.net/ip0417/article/details/156980108</link><guid>https://blog.csdn.net/ip0417/article/details/156980108</guid><author>ip0417</author><pubDate>Thu, 15 Jan 2026 09:56:50 +0800</pubDate><description><![CDATA[本文介绍了RK3588 Android 12开发中的效率提升技巧，主要包括：1）编译加速方法（ccache配置、增量编译和并行编译优化）；2）VSCode开发环境配置（必装插件、代码跳转和任务配置）；3）快捷编译脚本和自动化测试脚本；4）日志分析工具和性能检查脚本；5）Git工作流优化和远程开发配置。通过合理使用这些技巧，可以显著缩短开发周期，提升50%以上的开发效率。]]></description><category></category></item></channel></rss>