<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[iriczhao的博客]]></title><description><![CDATA[天空是一本书，让人百读不厌]]></description><link>https://blog.csdn.net/iriczhao</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; iriczhao]]></copyright><item><title><![CDATA[【linux kernel】linux脏页回写之bpf追踪点集锦]]></title><link>https://blog.csdn.net/iriczhao/article/details/161569714</link><guid>https://blog.csdn.net/iriczhao/article/details/161569714</guid><author>iriczhao</author><pubDate>Sun, 31 May 2026 17:22:05 +0800</pubDate><description><![CDATA[本文基于Linux内核6.10版本，重点分析了脏页回写（writeback）子系统的追踪点机制。该系统提供了30多个观测点，覆盖从脏页标记、限速控制到实际回写的完整流程，可用于诊断IO性能问题（如write延迟、fsync卡顿、脏页暴涨等）。关键追踪点包括：标记脏页的writeback_dirty_folio、进程限速相关的balance_dirty_pages、回写启动的writeback_start、执行阶段的writeback_exec等。每个追踪点记录特定操作的核心参数（如设备名、inode号、页索]]></description><category></category></item><item><title><![CDATA[【linux kernel】一文浅析内核的MQ Deadline调度器]]></title><link>https://blog.csdn.net/iriczhao/article/details/157262473</link><guid>https://blog.csdn.net/iriczhao/article/details/157262473</guid><author>iriczhao</author><pubDate>Thu, 22 Jan 2026 22:03:51 +0800</pubDate><description><![CDATA[本文分析了Linux 4.19内核中MQ-Deadline调度器的实现。该调度器使用struct deadline_data管理请求调度，包含红黑树排序列表和FIFO队列两种请求组织方式。文章详细解析了调度器的初始化、注销流程，重点阐述了请求插入机制：通过dd_insert_requests()批量处理请求，并由dd_insert_request()完成核心插入操作，包括请求合并检查、队列选择（dispatch队列或排序列表）等关键步骤。调度器通过13个回调函数实现完整的调度行为，在保证I/O性能的同时优化]]></description><category></category></item><item><title><![CDATA[【u-boot】u-boot的I2C驱动框架剖析]]></title><link>https://blog.csdn.net/iriczhao/article/details/154146991</link><guid>https://blog.csdn.net/iriczhao/article/details/154146991</guid><author>iriczhao</author><pubDate>Thu, 30 Oct 2025 21:32:34 +0800</pubDate><description><![CDATA[本文分析了u-boot v2019.04中的I2C驱动框架实现。首先介绍了关键数据结构：dm_i2c_ops定义驱动操作接口，dm_i2c_chip描述I2C设备信息，i2c_msg表示单条传输消息。其次总结了核心API接口，包括dm_i2c_read/write()进行数据传输，dm_i2c_probe()检测设备存在，以及dm_i2c_reg_read/write()操作寄存器等。这些接口为I2C设备驱动提供了统一访问框架，支持7/10位地址模式，并可通过标准方法设置总线速率。该框架实现了I2C总线的抽]]></description><category></category></item><item><title><![CDATA[【u-boot】u-boot的reset驱动通用框架]]></title><link>https://blog.csdn.net/iriczhao/article/details/154085115</link><guid>https://blog.csdn.net/iriczhao/article/details/154085115</guid><author>iriczhao</author><pubDate>Wed, 29 Oct 2025 20:47:35 +0800</pubDate><description><![CDATA[本文分析了u-boot v2019.10中的复位框架实现。复位框架通过reset-uclass.c和reset-uclass.h文件提供标准化接口，定义了复位控制器的操作结构体reset_ops（包含of_xlate、request、free等回调函数）和复位控制句柄结构体（reset_ctl、reset_ctl_bulk）。该框架支持通过名称、索引或批量方式获取复位信号，并提供复位请求、释放、置位和解除等标准API接口，实现了硬件模块复位的统一管理机制。]]></description><category></category></item><item><title><![CDATA[【u-boot】重定位（ARM32）-relocate_code]]></title><link>https://blog.csdn.net/iriczhao/article/details/154032215</link><guid>https://blog.csdn.net/iriczhao/article/details/154032215</guid><author>iriczhao</author><pubDate>Tue, 28 Oct 2025 21:11:23 +0800</pubDate><description><![CDATA[本文分析了u-boot 2016.03版本的relocate_code实现。该函数主要完成三项工作：1)将镜像从Flash拷贝到RAM；2)遍历.rel.dyn重定位表，修正所有链接地址到运行地址的偏移；3)处理XScale架构的特殊缓存需求。通过计算目标地址与链接地址的偏移量r4，代码首先拷贝整个镜像，然后逐项修正.rel.dyn表中的指针值，确保所有地址引用正确指向新的运行位置。最后针对XScale架构进行必要的缓存操作后返回。整个过程实现了u-boot镜像从链接地址到任意运行地址的动态重定位。]]></description><category></category></item><item><title><![CDATA[【u-boot】重定位（ARM64）-relocate_code]]></title><link>https://blog.csdn.net/iriczhao/article/details/154031434</link><guid>https://blog.csdn.net/iriczhao/article/details/154031434</guid><author>iriczhao</author><pubDate>Tue, 28 Oct 2025 21:02:48 +0800</pubDate><description><![CDATA[本文分析了Rockchip修改版U-Boot中relocate_code函数的实现原理。该函数负责将U-Boot从Flash拷贝到RAM并完成重定位，主要步骤包括：建立栈帧保存参数、判断是否需要重定位、计算运行地址偏移量、拷贝代码到目标地址、修正ELF重定位表（处理.rela.dyn段中的R_AARCH64_RELATIVE类型项），最后进行缓存处理确保代码正确执行。通过对比官方版本，重点剖析了该函数在ARM64架构下的实现细节，包括地址计算、内存拷贝和重定位修正等关键操作。]]></description><category></category></item><item><title><![CDATA[【u-boot】u-boot中异常向量表（ARM64）]]></title><link>https://blog.csdn.net/iriczhao/article/details/154031336</link><guid>https://blog.csdn.net/iriczhao/article/details/154031336</guid><author>iriczhao</author><pubDate>Tue, 28 Oct 2025 20:59:25 +0800</pubDate><description><![CDATA[本文介绍了ARM64架构中异常向量表的设置与处理过程。在u-boot启动时，会根据当前运行级别（EL1/EL2/EL3）将异常向量表地址存入对应的VBAR_ELx寄存器。异常向量表包含同步、IRQ、FIQ等异常处理入口，每个入口占用128字节空间。当异常发生时，处理器会跳转到_exception_entry函数保存通用寄存器x1-x30，并根据异常级别读取ESR、ELR、SPSR等关键系统寄存器值压栈，为后续异常处理提供完整的上下文环境。最后通过exception_exit恢复现场并返回。]]></description><category></category></item><item><title><![CDATA[【u-boot】设备描述之平台数据方式]]></title><link>https://blog.csdn.net/iriczhao/article/details/153983451</link><guid>https://blog.csdn.net/iriczhao/article/details/153983451</guid><author>iriczhao</author><pubDate>Mon, 27 Oct 2025 21:21:40 +0800</pubDate><description><![CDATA[本文介绍了U-Boot中平台数据(platdata)的实现机制。平台数据是编译期静态定义的设备描述信息，用于在不依赖设备树的情况下提供硬件配置。核心是通过U_BOOT_DEVICE()宏注册设备，与驱动通过name字段匹配绑定。驱动在probe阶段通过dev_get_platdata()获取平台数据进行初始化。相比设备树，平台数据启动更快但灵活性较差，适用于小型板级或早期初始化场景。文章详细说明了平台数据的结构定义、设备驱动绑定流程，并通过串口驱动实例展示了实际应用。]]></description><category></category></item><item><title><![CDATA[【u-boot】u-boot网络系统剖析]]></title><link>https://blog.csdn.net/iriczhao/article/details/153981797</link><guid>https://blog.csdn.net/iriczhao/article/details/153981797</guid><author>iriczhao</author><pubDate>Mon, 27 Oct 2025 21:04:00 +0800</pubDate><description><![CDATA[v2017.09。]]></description><category></category></item><item><title><![CDATA[【u-boot】u-boot驱动模型-struct uclass_driver]]></title><link>https://blog.csdn.net/iriczhao/article/details/153842127</link><guid>https://blog.csdn.net/iriczhao/article/details/153842127</guid><author>iriczhao</author><pubDate>Fri, 24 Oct 2025 21:26:08 +0800</pubDate><description><![CDATA[本文分析了U-Boot(v2017.11)中的uclass驱动框架。介绍了uclass_driver结构体的定义，包括其核心回调函数(post_bind、pre_probe等)和配置字段(priv_auto_alloc_size、per_device_auto_alloc_size等)。文章详细描述了回调函数的调用链，并解读了ops字段和id字段的作用。uclass机制为相似设备驱动提供统一接口，支持自动内存分配，是U-Boot设备模型的重要组成部分。]]></description><category></category></item><item><title><![CDATA[【u-boot】u-boot启动文件start.S剖析（ARM64）]]></title><link>https://blog.csdn.net/iriczhao/article/details/153841870</link><guid>https://blog.csdn.net/iriczhao/article/details/153841870</guid><author>iriczhao</author><pubDate>Fri, 24 Oct 2025 21:15:32 +0800</pubDate><description><![CDATA[ARM64 U-Boot启动流程分析 本文分析了ARM64架构下U-Boot的启动入口代码start.S。主要流程包括： 定义_start入口点，根据配置跳转到reset或执行SoC特定的启动代码 设置地址无关代码(PIC)重定位处理 异常向量表初始化，根据不同异常级别(EL3/EL2/EL1)配置系统控制寄存器 启用SMP多核同步支持 应用ARM核心特定的勘误表修正 处理器底层初始化后进入主CPU流程或从CPU等待流程 代码展示了U-Boot在ARM64平台上的底层初始化过程，包括异常处理、缓存控制、多核]]></description><category></category></item><item><title><![CDATA[【u-boot】u-boot驱动模型-struct driver]]></title><link>https://blog.csdn.net/iriczhao/article/details/153841610</link><guid>https://blog.csdn.net/iriczhao/article/details/153841610</guid><author>iriczhao</author><pubDate>Fri, 24 Oct 2025 21:02:33 +0800</pubDate><description><![CDATA[本文分析了U-Boot中struct driver结构体的功能与实现。该结构体用于描述设备驱动程序，包含初始化、移除等关键方法。文章详细解读了各成员变量的作用，重点分析了bind()、probe()、remove()等核心方法的调用时机和流程。同时阐述了设备树匹配机制(uclass/of_match)和驱动操作集(ops)的设计原理。驱动模型采用&quot;延迟探测&quot;机制，在访问设备时才触发probe()操作。通过分析U-Boot设备驱动框架的核心实现，揭示了其模块化设计思想。]]></description><category></category></item><item><title><![CDATA[【u-boot】u-boot的分区支持]]></title><link>https://blog.csdn.net/iriczhao/article/details/153654418</link><guid>https://blog.csdn.net/iriczhao/article/details/153654418</guid><author>iriczhao</author><pubDate>Mon, 20 Oct 2025 22:14:20 +0800</pubDate><description><![CDATA[本文分析了u-boot源码中分区表支持的实现机制。u-boot通过/disk目录下的代码文件支持多种分区类型，包括DOS/MBR、GPT、ISO、Mac和Amiga等。每种分区类型通过U_BOOT_PART_TYPE宏声明为struct part_driver结构，并实现相应的回调函数。用户可通过part list命令查看设备分区信息，系统会调用分区驱动中的print和get_info等回调函数来获取和显示分区表内容。该设计实现了分区表的模块化支持，便于扩展新的分区类型。]]></description><category></category></item><item><title><![CDATA[【u-boot】u-boot支持的文件系统]]></title><link>https://blog.csdn.net/iriczhao/article/details/153653987</link><guid>https://blog.csdn.net/iriczhao/article/details/153653987</guid><author>iriczhao</author><pubDate>Mon, 20 Oct 2025 22:12:00 +0800</pubDate><description><![CDATA[U-Boot支持多种文件系统，包括FAT、EXT和UBIFS等。其核心实现通过struct fstype_info结构体描述文件系统操作接口，包含probe、ls、read等函数指针。主要流程通过fs_set_blk_dev和fs_set_blk_dev_with_part函数自动探测并挂载文件系统，其中probe函数用于识别文件系统类型，成功后将保存设备信息和分区信息供后续操作使用。文件系统层通过遍历注册的fstypes[]数组，调用对应驱动完成识别和初始化。]]></description><category></category></item><item><title><![CDATA[ARMv8的异常处理]]></title><link>https://blog.csdn.net/iriczhao/article/details/152283201</link><guid>https://blog.csdn.net/iriczhao/article/details/152283201</guid><author>iriczhao</author><pubDate>Mon, 29 Sep 2025 22:33:12 +0800</pubDate><description><![CDATA[由于异常永远不会转移到 EL0，因此没有专用的EL0向量表。所有向量表使用相同的格式，根据异常的类型和异常发生的位置，存在不同的异常类别条目，每个异常类别在向量基地址的固定偏移量处具有一个异常向量。]]></description><category></category></item><item><title><![CDATA[【linux kernel】一文总结linux的clk框架]]></title><link>https://blog.csdn.net/iriczhao/article/details/139939210</link><guid>https://blog.csdn.net/iriczhao/article/details/139939210</guid><author>iriczhao</author><pubDate>Thu, 18 Jul 2024 20:44:14 +0800</pubDate><description><![CDATA[本文浅析linux的clk框架]]></description><category></category></item><item><title><![CDATA[【linux kernel】一文总结linux的uevent机制]]></title><link>https://blog.csdn.net/iriczhao/article/details/139939406</link><guid>https://blog.csdn.net/iriczhao/article/details/139939406</guid><author>iriczhao</author><pubDate>Mon, 24 Jun 2024 21:45:27 +0800</pubDate><description><![CDATA[本文描述linux内核的uevent机制。]]></description><category></category></item><item><title><![CDATA[【linux kernel】一文总结linux输入子系统]]></title><link>https://blog.csdn.net/iriczhao/article/details/139939334</link><guid>https://blog.csdn.net/iriczhao/article/details/139939334</guid><author>iriczhao</author><pubDate>Mon, 24 Jun 2024 21:39:29 +0800</pubDate><description><![CDATA[本文记录linux输入子系统的一些知识点。]]></description><category></category></item><item><title><![CDATA[【linux kernel】一文浅析linux HID核心]]></title><link>https://blog.csdn.net/iriczhao/article/details/139334317</link><guid>https://blog.csdn.net/iriczhao/article/details/139334317</guid><author>iriczhao</author><pubDate>Thu, 30 May 2024 20:53:58 +0800</pubDate><description><![CDATA[本文总结Linux内核的hid核心]]></description><category></category></item><item><title><![CDATA[使用OrangePi KunPeng Pro部署AI模型]]></title><link>https://blog.csdn.net/iriczhao/article/details/139306065</link><guid>https://blog.csdn.net/iriczhao/article/details/139306065</guid><author>iriczhao</author><pubDate>Wed, 29 May 2024 21:20:22 +0800</pubDate><description><![CDATA[本文使用OrangePi Kunpeng Pro部署AI模型]]></description><category></category></item></channel></rss>