摘要:
目录1. 前言2. 分析背景3. 实现3.1 硬件基础3.2 中断初始化3.2.1 早期初始化3.2.2 GIC芯片初始化3.2.2.1 BOOT CPU 对 GIC 的初始化3.2.2.2 非 BOOT CPU 对 GIC 的初始化3.3 注册中断域3.4 中断配置解析和映射3.5 中断处理接口注 阅读全文
posted @ 2025-04-08 09:40
JiMoKuangXiangQu
阅读(77)
评论(0)
推荐(0)
摘要:
深入了解AI算法及其实现过程 阅读全文
posted @ 2025-04-08 09:22
JiMoKuangXiangQu
阅读(9)
评论(0)
推荐(0)
摘要:
CLANG 该特性的官方文档: Thread Safety Analysis Linux 内核补丁尝试使用了该特性: Capability analysis for the kernel [PATCH RFC 00/33] Compile-time thread-safety checking [P 阅读全文
posted @ 2025-04-08 09:21
JiMoKuangXiangQu
阅读(15)
评论(0)
推荐(0)
摘要:
目录1. 前言2. 分析背景3. soft lockup 机制3.1 什么是 soft lockup ?3.2 各种抢占配置下的 soft lockup3.2.1 CONFIG_PREEMPT_NONE 配置下的 soft lockup3.2.2 CONFIG_PREEMPT 配置下的 soft l 阅读全文
posted @ 2025-04-08 09:16
JiMoKuangXiangQu
阅读(82)
评论(0)
推荐(0)
摘要:
声明 本文著作权非笔者独有,xiaoguang.hu 享有共同著作权。 本文章节 7. hung task 问题的常见应对措施 由 xiaoguang.hu 贡献。 目录声明1. 前言2. 分析背景3. hung task 机制分析3.1 什么是 hung task ?3.2 hung task 例 阅读全文
posted @ 2025-04-08 09:16
JiMoKuangXiangQu
阅读(75)
评论(0)
推荐(0)
摘要:
目录1. 前言2. 测试环境3. 用 GDB 调试 QEMU 内程序3.1 编写用来调试的程序3.2 工具安装3.2.1 安装 arm-linux-gnueabi-gcc3.2.2 安装 gdb3.2.3 安装 qemu3.3 编译和调试3.3.1 编译3.3.2 调试4. 用 gdb 调试内核5. 阅读全文
posted @ 2025-04-08 09:16
JiMoKuangXiangQu
阅读(227)
评论(0)
推荐(0)
摘要:
目录1. 前言2. 分析背景3. 问题4. 分析4.1 ARM GIC 中断芯片简介4.1.1 中断类型和分布4.1.2 拓扑结构4.2 问题根因4.2.1 设置GIC SPI中断的CPU亲和性4.2.2 GIC 初始化:缺省的CPU亲和性4.2.2.1 boot CPU 亲和性初始化流程4.2.2 阅读全文
posted @ 2025-04-08 09:16
JiMoKuangXiangQu
阅读(51)
评论(0)
推荐(0)
摘要:
目录1. 前言2. ARM32 内存管理页表结构2.1 2 级页表结构2.2 3 级页表结构3. ARM32 进程内存布局 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. ARM32 内存管理页表结构 2.1 2 级页表结构 2.2 3 级页表结构 阅读全文
posted @ 2025-04-08 09:15
JiMoKuangXiangQu
阅读(53)
评论(0)
推荐(0)
摘要:
目录1. 前言2. 配置 coredump2.1 临时配置方法2.2 永久配置方案2.3 重定向 coredump 输出3. 什么时候会产生 coredump ?4. coredump 调试5. 参考资料 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2 阅读全文
posted @ 2025-04-08 09:15
JiMoKuangXiangQu
阅读(53)
评论(0)
推荐(0)
摘要:
1. 前言 我不是故事的亲历者,我们一起去看一场由于硬件故障引发的 hard lockup 事故。 2. 开幕 一起内核 hard LOCKUP 问题分析 3. 番外 Intel's Skylake and Kaby Lake CPUs have nasty hyper-threading bug 阅读全文
posted @ 2025-04-08 09:14
JiMoKuangXiangQu
阅读(9)
评论(0)
推荐(0)
摘要:
目录1. 前言2. 背景3. 问题分析3.1 测试范例3.2 分析3.2.1 ARM32 3级页表(PAE使能)3.2.2 生成 coredump4. 调试 coredump 问题5. 后记 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 本文 阅读全文
posted @ 2025-04-08 09:14
JiMoKuangXiangQu
阅读(15)
评论(0)
推荐(0)
摘要:
目录1. 前言2. 案例3. 参考资料 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 案例 原来的故事是 这样 的,感兴趣的读者可以直接前往。我截取了一段重现故事中问题的代码(对原代码做过小小调整): #include <unistd.h> #in 阅读全文
posted @ 2025-04-08 09:14
JiMoKuangXiangQu
阅读(17)
评论(0)
推荐(0)
摘要:
目录1. 前言2. 图像 codec 概述3. 全志H3的图像编解码器 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 图像 codec 概述 图像编解码器(codec) 包含 Encoder 和 Decoder 两部分功能。我们用下列分别说明 En 阅读全文
posted @ 2025-04-08 09:13
JiMoKuangXiangQu
阅读(25)
评论(0)
推荐(0)
摘要:
目录1. 前言2. 分析背景3. 内核线程3.1 内核线程的生命周期3.1.1 创建3.1.2 运行3.1.3 泊停(PARK)3.1.4 终止3.2 内核线程逻辑模板 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 分析背景 本文基于 Linux 阅读全文
posted @ 2025-04-08 09:13
JiMoKuangXiangQu
阅读(36)
评论(0)
推荐(0)
摘要:
目录1. 前言2. 分析背景3. 测试 demo4. 工作原理分析4.1 父子进程追踪与被追踪关系的建立4.2 子进程暂停自身执行并知悉父进程4.3 父进程追踪子进程的系统调用4.3.1 父进程等待子进程execl()调用期间发送的SIGCHLD信号4.3.2 父进程唤醒子进程继续执行4.3.3 提 阅读全文
posted @ 2025-04-08 09:13
JiMoKuangXiangQu
阅读(27)
评论(0)
推荐(0)
摘要:
目录1. 前言2. 概述3. VPU 工作原理3.1 VPU 编码工作流程3.2 VPU解码工作流程4. Linux 下的 VPU4.1 驱动架构4.2 用户空间编程框架(Encoder编码示例)4.3 VPU 驱动工作流程小结4.4 示例4.4.1 FrienlyARM的方案内核NX VPU驱动补 阅读全文
posted @ 2025-04-08 09:13
JiMoKuangXiangQu
阅读(117)
评论(0)
推荐(0)
摘要:
目录1. 前言2. 背景3. 图解进程树3.1 初始状态3.2 经 kthread() 或 fork() 创建第1个进程后3.3 经 clone() 创建第2个进程后4. 后记5. 扩展 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 本文基于 阅读全文
posted @ 2025-04-08 09:12
JiMoKuangXiangQu
阅读(40)
评论(0)
推荐(0)
摘要:
目录1. 前言2. 背景3. 简介4. 代码实现分析4.1 输入子系统代码目录结构4.2 输入子系统初始化4.2.1 输入数据的处理对象注册4.2.2 输入设备的创建和注册4.2.2.1 输入设备的创建4.2.2.2 输入设备的配置4.2.2.3 输入设备的注册4.3 输入事件的上报4.4 输入事件 阅读全文
posted @ 2025-04-08 09:12
JiMoKuangXiangQu
阅读(15)
评论(0)
推荐(0)
摘要:
目录1. 前言2. 分析环境3. 问题场景4. fork() 和 vfork() 的功能和历史5. 问题分析5.1 程序的启动5.2 子进程的启动5.3 子进程的退出5.3.1 用 return 语句退出的情形5.3.2 用 exit() 调用退出的情形5.3.3 子进程退出的细节6. 另辟蹊径7. 阅读全文
posted @ 2025-04-08 09:12
JiMoKuangXiangQu
阅读(21)
评论(0)
推荐(0)
摘要:
目录1. 前言2. 分析背景3. 系统调用 poll() 实现分析3.1 调用的发起:用户空间3.2 调用的过程:内核空间3.2.1 设备的打开过程3.2.2 将进程放入设备的 poll 等待队列3.2.3 设备数据就绪唤醒 poll 等待队列中的进程3.3 调用的返回4. 番外5. 参考资料 1. 阅读全文
posted @ 2025-04-08 09:12
JiMoKuangXiangQu
阅读(16)
评论(0)
推荐(0)

浙公网安备 33010602011771号