<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[内核笔记]]></title><description><![CDATA[主要讲解瑞芯微平台、高通平台下内核的开发]]></description><link>https://blog.csdn.net/qq_33487044</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; qq_33487044]]></copyright><item><title><![CDATA[18-U-Boot引导内核机制]]></title><link>https://blog.csdn.net/qq_33487044/article/details/166693992</link><guid>https://blog.csdn.net/qq_33487044/article/details/166693992</guid><author>qq_33487044</author><pubDate>Sun, 27 Sep 2026 00:43:53 +0800</pubDate><description><![CDATA[—理解了这一点，你就不用背三套流程，记住一条主线就行。第二，]]></description><category></category></item><item><title><![CDATA[17-U-Boot命令行与常用命令]]></title><link>https://blog.csdn.net/qq_33487044/article/details/166693675</link><guid>https://blog.csdn.net/qq_33487044/article/details/166693675</guid><author>qq_33487044</author><pubDate>Sun, 27 Sep 2026 00:17:39 +0800</pubDate><description><![CDATA[最后看怎么添加一个自定义命令。核心是U_BOOT_CMD这个宏，讲一下它的参数：第一个是命令名，第二个是最大参数个数（含命令名），第三个是是否自动重复（回车重复执行），然后是命令处理函数、简短帮助、详细帮助。/* 文件路径：u-boot/cmd/my_cmd.c - 自定义命令示例 *//* 自定义命令的实现 */\n");i < argc;i++)/* 注册命令 *//* mycmd: 命令名, 3: 最大参数个数(含命令名), 1: 是否自动重复(回车重复执行) */]]></description><category></category></item><item><title><![CDATA[14 - U-Boot 设备树支持与 RK 平台 DTS]]></title><link>https://blog.csdn.net/qq_33487044/article/details/166495153</link><guid>https://blog.csdn.net/qq_33487044/article/details/166495153</guid><author>qq_33487044</author><pubDate>Thu, 24 Sep 2026 00:56:25 +0800</pubDate><description><![CDATA[本文详解RK3506平台U-Boot设备树的原理与实践，阐明其与内核设备树的同步关系及裁剪逻辑。U-Boot自2014年起采用设备树，通过从内核DTS同步并裁剪非必要节点（如显示、音频），生成精简DTB以适配SPL的SRAM空间限制（<8KB）。SPL仅保留DDR、存储、串口等启动必需节点，而U-Boot Proper则使用完整设备树，支持驱动模型DM匹配。编译时，DTB被嵌入u-boot.bin末尾，运行时经FDT fixup修补实际硬件信息后，通过r2寄存器传递给内核。]]></description><category></category></item><item><title><![CDATA[Linux系统调试课（CPU篇）CPU亲和性与多进程调度]]></title><link>https://blog.csdn.net/qq_33487044/article/details/166494217</link><guid>https://blog.csdn.net/qq_33487044/article/details/166494217</guid><author>qq_33487044</author><pubDate>Wed, 23 Sep 2026 23:11:10 +0800</pubDate><description><![CDATA[本文详解RK3506多核系统中CPU亲和性机制，聚焦跨核迁移代价与缓存失效问题。通过__set_cpus_allowed_ptr源码解析，揭示进程、中断、内核线程亲和性配置原理，结合taskset与/proc/irq/N/smp_affinity实操，解决高频中断集中导致性能瓶颈的典型问题。强调亲和性本质是减少“搬家”开销，提升实时任务确定性性能，案例直击网络性能优化痛点。]]></description><category></category></item><item><title><![CDATA[Linux系统调试课（CPU篇）CPU频率调节与功耗策略]]></title><link>https://blog.csdn.net/qq_33487044/article/details/166494161</link><guid>https://blog.csdn.net/qq_33487044/article/details/166494161</guid><author>qq_33487044</author><pubDate>Wed, 23 Sep 2026 23:06:59 +0800</pubDate><description><![CDATA[本章聚焦RK3506嵌入式CPU的功耗管理，核心为DVFS（动态电压频率调节）技术。基于功耗公式 $P = CV^2f$，强调降频必须同步降压以实现高效省电。通过设备树配置OPP表定义频点-电压对，结合cpufreq-dt驱动实现调压与切频联动。详解四种governor策略：performance（性能优先）、powersave（省电）、ondemand（按需）、schedutil（调度器驱动，推荐）。重点解析schedutil如何实时响应负载变化，以及调频链路中的时序约束——升频先升压、降频先降频。]]></description><category></category></item><item><title><![CDATA[Linux系统调试课（CPU篇）CPU使用率精准分析]]></title><link>https://blog.csdn.net/qq_33487044/article/details/166494123</link><guid>https://blog.csdn.net/qq_33487044/article/details/166494123</guid><author>qq_33487044</author><pubDate>Wed, 23 Sep 2026 23:03:55 +0800</pubDate><description><![CDATA[本文详解CPU使用率分析中的常见误区，揭示top命令汇总值的陷阱：三核设备上33%总使用率可能源于单核满载。通过mpstat -P ALL按核分析，结合/proc/stat源码与内核tick记账机制，厘清us/sy/wa等时间分类含义。重点解析account_process_tick函数如何逐tick统计用户态、内核态、空闲等状态，并以音频单核瓶颈案例说明精准定位的重要性。强调嵌入式系统中按核分析的必要性，为后续性能调优打下基础。]]></description><category></category></item><item><title><![CDATA[Linux系统调试课（CPU篇）CPU平均负载深度解析]]></title><link>https://blog.csdn.net/qq_33487044/article/details/166494079</link><guid>https://blog.csdn.net/qq_33487044/article/details/166494079</guid><author>qq_33487044</author><pubDate>Wed, 23 Sep 2026 23:00:54 +0800</pubDate><description><![CDATA[本文详解 /proc/loadavg 的真实含义，纠正“负载高即CPU不足”的常见误解。核心指出：loadavg统计的是R（运行/就绪）和D（不可中断等待）状态任务之和，其中D状态任务虽不占用CPU，却计入负载。结合RK3506三核平台，说明负载超6.0（核数×2）需警惕。通过指数衰减平均（EMA）算法与5秒采样机制，解释1分钟、5分钟、15分钟平均值的计算逻辑。重点剖析“高负载但CPU空闲”现象——根源常为IO阻塞导致的D状态堆积。建议运维优先排查D状态进程与IO瓶颈，而非盲目扩容CPU。]]></description><category></category></item><item><title><![CDATA[Linux系统调试课（CPU篇）CPU架构与寄存器调试]]></title><link>https://blog.csdn.net/qq_33487044/article/details/166493976</link><guid>https://blog.csdn.net/qq_33487044/article/details/166493976</guid><author>qq_33487044</author><pubDate>Wed, 23 Sep 2026 22:54:58 +0800</pubDate><description><![CDATA[本文深入解析RK3506所采用的Cortex-A7架构，涵盖其32位ARMv7-A指令集、三核同构设计、共享256KB L2缓存等特性，结合/proc/cpuinfo字段解读CPU身份标识（如CPU part: 0xc07）、功能特性（NEON、VFPv4）及误区澄清（BogoMIPS非性能指标）。重点讲解ARMv7寄存器体系，区分r0-r15通用寄存器与CPSR/SPSR状态寄存器作用，阐明上下文切换中寄存器保存机制，并通过“perf硬件计数器不可用”案例，串联架构认知与实际排错，为后续性能分析与调试打下]]></description><category></category></item><item><title><![CDATA[Linux系统调试课（CPU篇）CPU上下文切换原理]]></title><link>https://blog.csdn.net/qq_33487044/article/details/166493747</link><guid>https://blog.csdn.net/qq_33487044/article/details/166493747</guid><author>qq_33487044</author><pubDate>Wed, 23 Sep 2026 22:38:53 +0800</pubDate><description><![CDATA[本文深入解析CPU上下文切换机制，结合RK3506平台，剖析其在多任务系统中的开销来源。通过比喻帮助理解切换的“注意力成本”，明确上下文包含寄存器、栈指针、页表等关键状态。重点指出：寄存器保存仅占0.3μs，真正昂贵的是TLB刷新（2-5μs）与cache失效（可达数十μs）。区分自愿、被迫、中断三类切换，揭示“CPU使用率不高却卡顿”的根源在于频繁切换导致的额外开销。强调同进程线程切换远比跨进程便宜，内核线程因惰性TLB更高效。最后结合pidstat、perf等工具，指导如何定位并优化高频切换问题，为后续]]></description><category></category></item><item><title><![CDATA[基础：01-系统观测基础：调试工具集与proc-sysfs详解]]></title><link>https://blog.csdn.net/qq_33487044/article/details/166493484</link><guid>https://blog.csdn.net/qq_33487044/article/details/166493484</guid><author>qq_33487044</author><pubDate>Wed, 23 Sep 2026 22:19:34 +0800</pubDate><description><![CDATA[把调试一台 RK3506 设备想象成给病人做体检：病人躺在你面前说"我没精神、干活慢"（系统卡、响应慢），你不能一上来就把人推进 CT 室。正确节奏是——先望闻问切，量体温、测血压、听心肺（top/free/df 秒级概览），判断个大概方向；怀疑哪一项不对，再针对性地做 CT/MRI（/proc、sysfs 深入分析）。系统观测工具就是医生的听诊器和化验单：先用粗的、再用细的；先看到现象，再找病因。]]></description><category></category></item><item><title><![CDATA[内核日志体系：printk、dyndbg与日志分析]]></title><link>https://blog.csdn.net/qq_33487044/article/details/164404774</link><guid>https://blog.csdn.net/qq_33487044/article/details/164404774</guid><author>qq_33487044</author><pubDate>Sat, 05 Sep 2026 23:39:58 +0800</pubDate><description><![CDATA[内容是关于内核日志调试方法论的，涵盖printk、日志级别、动态调试、分析技巧、误区、框架等。]]></description><category></category></item><item><title><![CDATA[休眠唤醒 standby 调试]]></title><link>https://blog.csdn.net/qq_33487044/article/details/164341083</link><guid>https://blog.csdn.net/qq_33487044/article/details/164341083</guid><author>qq_33487044</author><pubDate>Thu, 03 Sep 2026 23:03:20 +0800</pubDate><description><![CDATA[内容是关于Linux休眠唤醒调试的文章。摘要要简洁概括主要内容和调试方法。]]></description><category></category></item><item><title><![CDATA[内核调用栈调试]]></title><link>https://blog.csdn.net/qq_33487044/article/details/164340858</link><guid>https://blog.csdn.net/qq_33487044/article/details/164340858</guid><author>qq_33487044</author><pubDate>Thu, 03 Sep 2026 22:37:24 +0800</pubDate><description><![CDATA[内容是关于内核调用栈调试四种方法：dump_stack, WARN_ON, BUG_ON, panic。]]></description><category></category></item><item><title><![CDATA[Linux系统调试课：01-CPU上下文切换原理]]></title><link>https://blog.csdn.net/qq_33487044/article/details/163793928</link><guid>https://blog.csdn.net/qq_33487044/article/details/163793928</guid><author>qq_33487044</author><pubDate>Sun, 16 Aug 2026 10:03:13 +0800</pubDate><description><![CDATA[嵌入式多任务系统中，CPU 需要在不同进程/线程间快速切换。每次切换都要保存当前任务的寄存器、刷新 TLB、切换地址空间——这些开销累积起来会显著影响系统吞吐。RK3506 搭载 Cortex-A7 三核处理器，单次上下文切换约 1-3 微秒，但关联的 cache 失效可能导致更长时间的性能损失。本章深入分析上下文切换的原理、开销分解和调试方法，帮你定位"CPU 使用率不高但系统响应慢"的隐藏问题。SDK 版本核心源码（调度核心、context_switch）、（底层汇编）CPU 上下文切换是什么？]]></description><category></category></item><item><title><![CDATA[薪资翻倍！从 MCU 到 Linux，他只用了几个月]]></title><link>https://blog.csdn.net/qq_33487044/article/details/163785221</link><guid>https://blog.csdn.net/qq_33487044/article/details/163785221</guid><author>qq_33487044</author><pubDate>Sun, 16 Aug 2026 01:02:38 +0800</pubDate><description><![CDATA[文章摘要： 一位从传统MCU开发转型Linux嵌入式的学员成功入职头部芯片原厂，薪资大幅提升。文章分析了Linux嵌入式在智能驾驶等风口赛道的优势：技术栈匹配度高、行业红利显著、职业天花板更高。课程设计对标大厂需求，涵盖Linux应用开发、内核驱动、BSP移植及智能驾驶实战项目，帮助学员快速适配高薪岗位。呼吁嵌入式开发者抓住芯片国产化与智能驾驶浪潮，通过系统学习突破职业瓶颈，避免错失风口机遇。 （字数：149字）]]></description><category></category></item><item><title><![CDATA[65-附录D：USB设备驱动类型总览]]></title><link>https://blog.csdn.net/qq_33487044/article/details/163301272</link><guid>https://blog.csdn.net/qq_33487044/article/details/163301272</guid><author>qq_33487044</author><pubDate>Wed, 29 Jul 2026 12:39:22 +0800</pubDate><description><![CDATA[USB设备驱动(从主机角度)负责管理连接到USB总线的各类外设。Linux内核实现了多类通用USB设备驱动,同时也提供了编写特定厂商设备驱动的框架。/* 驱动名称 *//* 探测函数 *//* 断开函数 *//* 挂起 *//* 恢复 *//* 复位恢复 *//* 复位前 *//* 复位后 *//* 设备匹配表 *//* 动态ID *//* 驱动包装 *//* 自动挂起 */]]></description><category></category></item><item><title><![CDATA[68-附录G：UsbTreeView使用指南]]></title><link>https://blog.csdn.net/qq_33487044/article/details/163301192</link><guid>https://blog.csdn.net/qq_33487044/article/details/163301192</guid><author>qq_33487044</author><pubDate>Wed, 29 Jul 2026 12:35:50 +0800</pubDate><description><![CDATA[UsbTreeView是Windows平台下一款轻量级但功能强大的USB设备描述符分析工具。它可以实时显示USB设备的连接状态,以树状结构展示所有USB描述符信息,是开发和调试USB设备时的必备工具。✅ 查看USB设备的四层描述符(设备/配置/接口/端点)✅ 验证VID/PID、USB版本等信息是否正确✅ 分析复合设备的接口和端点结构✅ 对比Linux与Windows下的描述符差异UsbTreeView使用要点├── 设备树浏览│ └── 实时监控插入/拔出事件├── 描述符查看。]]></description><category></category></item><item><title><![CDATA[67-附录F：USB硬件波形分析]]></title><link>https://blog.csdn.net/qq_33487044/article/details/163301172</link><guid>https://blog.csdn.net/qq_33487044/article/details/163301172</guid><author>qq_33487044</author><pubDate>Wed, 29 Jul 2026 12:35:03 +0800</pubDate><description><![CDATA[除了使用USB分析仪,还可以使用逻辑分析仪对USB信号进行采样。本文分析逻辑分析仪采集的典型USB波形,包括SOF包、令牌包、握手包和数据包。USB硬件波形├── 包结构: SYNC + PID + Data + CRC + EOP├── 令牌包: SOF/IN/OUT/SETUP├── 数据包: DATA0/DATA1(翻转)├── 握手包: ACK/NAK/STALL└── 分析要点├── SYNC固定0x80├── PID含补码校验└── CRC保证数据完整性。]]></description><category></category></item><item><title><![CDATA[66-附录E：Status字段与问题定位]]></title><link>https://blog.csdn.net/qq_33487044/article/details/163301151</link><guid>https://blog.csdn.net/qq_33487044/article/details/163301151</guid><author>qq_33487044</author><pubDate>Wed, 29 Jul 2026 12:34:03 +0800</pubDate><description><![CDATA[在调试USB问题时,usbmon log中的URB Status字段是最关键的信息之一。通过分析status值,可以快速定位传输失败的原因。本文详细解读各种status含义及其对应的故障场景。URB Status分析├── 成功: status=0├── 进行中: -EINPROGRESS(-115)├── 错误│ ├── 硬件: -EPROTO/-ENODEV/-ESHUTDOWN│ ├── 软件: -EPIPE/-EOVERFLOW。]]></description><category></category></item><item><title><![CDATA[65-附录D：USB设备驱动类型总览]]></title><link>https://blog.csdn.net/qq_33487044/article/details/163301131</link><guid>https://blog.csdn.net/qq_33487044/article/details/163301131</guid><author>qq_33487044</author><pubDate>Wed, 29 Jul 2026 12:33:13 +0800</pubDate><description><![CDATA[USB设备驱动(从主机角度)负责管理连接到USB总线的各类外设。Linux内核实现了多类通用USB设备驱动,同时也提供了编写特定厂商设备驱动的框架。/* 驱动名称 *//* 探测函数 *//* 断开函数 *//* 挂起 *//* 恢复 *//* 复位恢复 *//* 复位前 *//* 复位后 *//* 设备匹配表 *//* 动态ID *//* 驱动包装 *//* 自动挂起 */]]></description><category></category></item></channel></rss>