Remoteproc resource table
本文介绍了远程处理器固件映像中资源表的结构与作用,详细阐述了主处理器在加载固件后如何通过解码资源表来分配物理内存等系统资源、配置Virtio设备,并创建RPMsg通道以实现核间通信。同时,本文结合STM32MP15C的参考代码,总结了Remoteproc框架下资源条目的具体定义及基于OpenAMP的动态资源管理实现方式。
OpenAMP
本文介绍了OpenAMP开放非对称多处理软件框架的背景及其在多核异构系统中的应用。本文详细讨论了Virtio、RPMsg和Remoteproc三大核心组件,并总结了基于共享内存与核间中断实现Linux主处理器与裸机或RTOS协处理器之间生命周期管理及消息通信的具体工作机制。
IPCC
本文介绍了STM32MP157中IPCC(进程间通信控制器)硬件模块的工作原理,讨论了其通过共享内存和硬件中断机制实现Cortex-A7与Cortex-M4核间信号通知的过程,并总结了IPCC的通道分配、软件框架应用及相关寄存器的配置。
Rpmsg Char Driver
本文介绍了基于 Linux 5.10.x 的 Rpmsg Char Driver 字符设备驱动的实现机制。本文详细讨论了其控制设备与端点设备相分离的经典架构设计,并总结了驱动注册、端点延迟创建、锁与等待队列同步机制以及用户态收发消息的具体流程与关键代码逻辑。
Rpmsg Core
本文介绍了Linux 5.10.23中Rpmsg Core的总线抽象机制及其backend的接入方式,并详细讨论了设备与驱动的匹配打分规则与设备探测流程。本文总结了探测过程中的电源域关联、Endpoint自动创建与动态地址分配等核心逻辑,揭示了rpmsg框架在硬件电源管理和端点通信中的实现细节。
Virtio Rpmsg Bus
本文介绍了Linux内核中基于virtio的rpmsg总线驱动的实现原理与核心数据结构。文章讨论了rpmsg的基本通信模型,并详细剖析了rpmsg_device、rpmsg_endpoint的创建与销毁逻辑,以及virtproc_info私有状态中virtqueue收发通道、buffer管理、DMA映射和并发控制等底层传输机制。
Linux 内核常用数据结构
本文介绍了Linux 6.x内核中实际使用频率较高的核心数据结构,详细梳理了双向循环链表、哈希链表、红黑树、基数树、可扩展数组及优先级链表等结构的定义、核心API与典型使用场景。
ClaudeCode
本文介绍了ClaudeCode的下载安装与编辑器集成方法,详细说明了如何结合DeepSeek API在VSCode和Emacs中进行配置与使用。同时,本文讨论了Claude Code的Skill扩展机制、MCP模型上下文协议,以及相关Skill的安装与推荐插件。
smatch
本文介绍了专为 Linux 内核设计的静态分析工具 Smatch,详细阐述了其编译方法、数据库构建过程及其通过跨文件分析发现隐藏 Bug 的能力。此外,本文还总结了运行 Smatch 对内核及非内核项目进行静态分析的具体步骤与相关脚本参数的配置方法。
查询内核API最早引入版本
本文介绍了如何查询内核特定API最早引入的版本,并通过具体示例说明了查询方法。
Linux并发与竞争
本文介绍了Linux驱动开发中并发与竞争的概念及其产生的常见原因(多线程、中断、抢占和多核并发),并详细讲解了Linux内核用于应对这些问题的机制,重点分析了整型原子操作的原理及相关API函数。
数据结构与算法
本文介绍了数据结构与算法的基础知识,涵盖数据的逻辑结构(线性结构与非线性结构)、存储结构(顺序存储、链式存储、索引存储、散列存储)以及算法的基本概念与效率度量方法,并详细讨论了线性表的顺序表示与链式表示(包括单链表、双链表、循环链表、静态链表)及栈的顺序存储与链式存储结构。



