摘要: 目录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 阅读(86) 评论(0) 推荐(0)
摘要: 深入了解AI算法及其实现过程 阅读全文
posted @ 2025-04-08 09:22 JiMoKuangXiangQu 阅读(12) 评论(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. 问题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 阅读(67) 评论(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 阅读(300) 评论(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 阅读(108) 评论(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 阅读(105) 评论(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 阅读(95) 评论(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 阅读(58) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 案例3. 参考资料 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 案例 原来的故事是 这样 的,感兴趣的读者可以直接前往。我截取了一段重现故事中问题的代码(对原代码做过小小调整): #include <unistd.h> #in 阅读全文
posted @ 2025-04-08 09:14 JiMoKuangXiangQu 阅读(28) 评论(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 阅读(22) 评论(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 阅读(13) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 图像 codec 概述3. 全志H3的图像编解码器 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 图像 codec 概述 图像编解码器(codec) 包含 Encoder 和 Decoder 两部分功能。我们用下列分别说明 En 阅读全文
posted @ 2025-04-08 09:13 JiMoKuangXiangQu 阅读(32) 评论(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 阅读(49) 评论(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 阅读(31) 评论(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 阅读(141) 评论(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 阅读(43) 评论(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 阅读(31) 评论(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 阅读(21) 评论(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 阅读(50) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 分析背景3. 什么是 fasync ?4. fasync 的典型用法5. fasync 的实现分析5.1 进程预订设备驱动事件信号5.2 驱动发送设备事件信号 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 分析背景 本文基于 L 阅读全文
posted @ 2025-04-08 09:12 JiMoKuangXiangQu 阅读(75) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 分析背景3. 信号概述3.1 信号分类3.1.1 标准信号3.1.2 实时信号3.2 信号的发起3.3 信号的处理3.3.1 信号处理的准备工作3.3.2 信号的处理流程4. 实例5. 参考资料 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何 阅读全文
posted @ 2025-04-08 09:11 JiMoKuangXiangQu 阅读(26) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. Ctrl + C 的内幕4. 后记 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 本篇分析基于 Linux 4.14 内核代码进行分析。 3. Ctrl + C 的内幕 有过基于 Linux 内核的操作系统发布版 阅读全文
posted @ 2025-04-08 09:11 JiMoKuangXiangQu 阅读(36) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 设备树的来源3. 设备树文件的创建4. 设备树文件的编译5. 设备树的展开6. 创建设备树节点的设备对象6.1 设备内存空间解析6.2 设备树常见属性6.2.1 status6.2.2 pinctrl 初始化6.2.3 其它7. 设备树导出信息8. 设备树相关工具9. 参考资料 阅读全文
posted @ 2025-04-08 09:11 JiMoKuangXiangQu 阅读(101) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. 添加一个系统调用3.1 系统调用相关文件的生成过程3.2 系统调用的实现和使用3.2.1 添加系统调用内核侧的工作:实现3.2.2 添加系统调用用户侧的工作:使用 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 本 阅读全文
posted @ 2025-04-08 09:10 JiMoKuangXiangQu 阅读(101) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. 系统调用的实现3.1 系统调用的发起3.1.1 起于用户空间3.1.2 进入内核空间3.1.2.1 ARM32 架构系统调用相关知识3.1.2.1.1 ARM32 CPU 的各种工作模式3.1.2.1.2 ARM32 CPU 各工作模式下寄存器分布3.1.2.1.3 A 阅读全文
posted @ 2025-04-08 09:10 JiMoKuangXiangQu 阅读(47) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. Jump label 实现3.1 为什么引入 Jump label?3.2 实现简析3.2.1 Jump label 实现的前提条件3.2.2 Jump label 实现原理3.2.3 Jump label 实现数据结构3.2.4 Jump label 实现代码3.2. 阅读全文
posted @ 2025-04-08 09:09 JiMoKuangXiangQu 阅读(79) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 本文目标3. flex & bison3.1 背景3.2 flex3.1.1 flex 简介3.1.2 flex 使用例子3.1.3 flex 生成代码流程简析3.1.4 flex 小结3.1.4.1 option 选项3.1.4.2 定义3.1.4.3 定义特定状态下才会执行的 阅读全文
posted @ 2025-04-08 09:09 JiMoKuangXiangQu 阅读(120) 评论(0) 推荐(0)
摘要: 目录1. 前言2. gprof工作基本原理3. gprof简单应用实例4 gprof缺点5. gprof文档6. 后记 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. gprof工作基本原理 在使用gcc编译时指定-pg选项,编译器在用户代码中插入性 阅读全文
posted @ 2025-04-08 09:09 JiMoKuangXiangQu 阅读(29) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 音频数据格式基础2.1 PCM(Pulse Code Modulation):脉冲编码调制2.2 WAV2.3 MIDI(Musical Instrument Digital Interface)3. 参考链接4. 后记 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读 阅读全文
posted @ 2025-04-08 09:09 JiMoKuangXiangQu 阅读(121) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. rtc子系统3.1 相关代码文件列表3.2 rtc子系统框图3.3 指定系统时间来源rtc设备4. 后记 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 本文分析代码基于Linux 3.10内核,硬件平台为嵌入式A 阅读全文
posted @ 2025-04-08 09:09 JiMoKuangXiangQu 阅读(15) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 安装内核源码树3. 编译内核源码树4. 后记5. 参考资料 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 安装内核源码树 方法1:使用dpkg-dev + apt-get source安装内核源码树 在下载内核源码之前,先安装d 阅读全文
posted @ 2025-04-08 09:08 JiMoKuangXiangQu 阅读(51) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 安装 OpenGL3. 检验 OpenGL 开发包是否安装成功4. OpenGL的测试代码5. 后记 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 安装 OpenGL sudo apt-get update sudo apt-g 阅读全文
posted @ 2025-04-08 09:08 JiMoKuangXiangQu 阅读(18) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. 扩展Vmware磁盘分区4. 更便利的调整文件系统分区的方式5. 后记 1. 前言 限于作者能力水平,本文可能存在的谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 在Vmware 9.0下安装了Ubuntu 14.04.2 Desktop LTS版本,接着 阅读全文
posted @ 2025-04-08 09:08 JiMoKuangXiangQu 阅读(56) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 什么是 Git?3. Git和传统的版本管理工具有什么差别?4. Git的基本工作原理4.1 Git对文件内容的管理4.2 Git管理下文件的3种状态4.3 Git 基本工作流程4.4 Git 基础操作4.4.1 初始化本地仓库4.4.2 克隆远程仓库4.4.3 检查当前状态4. 阅读全文
posted @ 2025-04-08 09:07 JiMoKuangXiangQu 阅读(19) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. 实现3.1 定义设备数据结构3.2 设备初始化3.3 按键采样和上报3.3.1 按键采样3.3.2 按键上报 1. 前言 限于作者能力水平,本文可能存在的谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 门禁设备加入一款 TTP229 芯片,作为输入键盘,没 阅读全文
posted @ 2025-04-08 09:07 JiMoKuangXiangQu 阅读(39) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. 建立自己的 GitHub 仓库3.1 注册 GitHub 账号3.2 创建 GitHub 仓库3.3 配置 GitHub 仓库3.3.1 生成自己 ssh 访问公钥3.3.2 配置 ssh 公钥到仓库3.4 访问GitHub仓库 1. 前言 限于作者能力水平,本文可能存 阅读全文
posted @ 2025-04-08 09:07 JiMoKuangXiangQu 阅读(12) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 编译用于TK1平台的交叉编译器2.1 从源码安装 crosstool-ng2.2 用 crosstool-ng 工具,为TK1平台编译交叉编译器3. 编译TK1内核3.1 编译环境设置4. 构建TK1系统镜像5. 系统镜像下载6. 外设调试6.1 支持 USB 3.06.2 写芯 阅读全文
posted @ 2025-04-08 09:06 JiMoKuangXiangQu 阅读(102) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. GPIO按键驱动适配 1. 前言 限于作者能力水平,本文可能存在的谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 在系统 S5P4418 + Linux 3.4.y 下,硬件有一个GPIO按键,客户要求按键上报按键码KEY_REWIND。 按键连接到GPI 阅读全文
posted @ 2025-04-08 09:06 JiMoKuangXiangQu 阅读(35) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. 适配和测试3.1 适配3.2 测试 1. 前言 限于作者能力水平,本文可能存在的谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 移植 RTC 芯片HYM8563驱动移植到 S5P4418 + Linux 3.4.y 系统。 3. 适配和测试 3.1 适配 阅读全文
posted @ 2025-04-08 09:06 JiMoKuangXiangQu 阅读(43) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 适配和测试2.1 适配2.2 测试 1. 前言 限于作者能力水平,本文可能存在的谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 适配和测试 2.1 适配 修改文件drivers/usb/serial/option.c,增加设备的 VID & PID: static con 阅读全文
posted @ 2025-04-08 09:06 JiMoKuangXiangQu 阅读(52) 评论(0) 推荐(0)
摘要: 目录1. 前言2. API基础3. 如何确认一个函数的可使用场合?4. 更多细节 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. API基础 要编写一个 Linux 系统下的应用程序,少不了要调用 API(glibc,syscall 等)。那么我们对 阅读全文
posted @ 2025-04-08 09:05 JiMoKuangXiangQu 阅读(13) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 什么是 cron ?3. cron 工作原理4. 编辑用户特定的任务5. 实例6. cron 服务相关目录和文件7. cron 的更多使用方法 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。_ 2. 什么是 cron ? Windows 阅读全文
posted @ 2025-04-08 09:05 JiMoKuangXiangQu 阅读(22) 评论(0) 推荐(0)
摘要: @目录1. 前言2. 什么是 update-alternatives?3. 举例3.1 将 Python 2 和 3 纳入到 update-alternatives 管理3.2 配置默认的 Python 版本4. 更多关于 update-alternatives 使用方法 1. 前言 限于作者能力水 阅读全文
posted @ 2025-04-08 09:05 JiMoKuangXiangQu 阅读(44) 评论(0) 推荐(0)
摘要: [toc] 1. 前言 限于作者能力水平,本文可能存在的谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 要在 S5P4418 的开发板上,驱动一个 LED 灯,用作系统工作状态的心跳灯,内核版本为 Linux 3.4.y。LED 灯的硬件设计为: GPIOC17连接到LED灯:拉低GP 阅读全文
posted @ 2025-04-08 09:04 JiMoKuangXiangQu 阅读(56) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. 适配和测试3.1 适配网卡驱动3.2 测试网卡 1. 前言 限于作者能力水平,本文可能存在的谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 移植 RTL8125B 网卡驱动到 S5P4418 + Linux 3.4.y 系统。 3. 适配和测试 3.1 适 阅读全文
posted @ 2025-04-08 09:04 JiMoKuangXiangQu 阅读(115) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. 适配过程3.1 配置电源管理芯片挂接的 I2C 总线3.2 适配 AXP-228 I2C 客户端信息3.3 配置 AXP-228 I2C 地址3.4 注册 AXP-228 I2C 客户端到总线3.5 I2C PIN 脚 GPIO 复用适配 1. 前言 限于作者能力水平, 阅读全文
posted @ 2025-04-08 09:04 JiMoKuangXiangQu 阅读(89) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 烧录操作2.1 准备工作2.1.1 硬件准备2.1.2 软件准备2.2 烧录步骤 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 烧录操作 2.1 准备工作 2.1.1 硬件准备 S5P4418开发板 OTG线 串口线 12V电源 阅读全文
posted @ 2025-04-08 09:04 JiMoKuangXiangQu 阅读(47) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. 建立SD卡热插拔自动挂载和卸载支持3.1 配置编译内核3.2 修改、配置、编译 buildroot3.2.1 修改 buildroot3.2.2 配置 buildroot4. 验证sd卡的热插拔和自动挂载功能4.1 系统启动SD卡插入测试4.2 系统启动后的拔出测试4. 阅读全文
posted @ 2025-04-08 09:04 JiMoKuangXiangQu 阅读(106) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. 驱动移植3.1 驱动代码目录、编译配置3.2 修改代码适配到目标平台3.3 编译、烧录、测试3.3.1 编译3.3.2 烧录kernel.img到开发板3.3.3 测试4. 修改文件索引列表5. 后记 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损 阅读全文
posted @ 2025-04-08 09:03 JiMoKuangXiangQu 阅读(33) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. 编译和下载3.1 交叉编译环境搭建3.2 编译3.2.1 编译 u-boot3.2.2 编译 Linux 内核3.2.3 编译busybox + yaffs工具 + 制作根文件系统3.2.3.1 编译 busybox3.2.3.2 编译yaffs/yaffs2根文件系统 阅读全文
posted @ 2025-04-08 09:03 JiMoKuangXiangQu 阅读(38) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. eMMC参数调试3.1 eMMC数据位宽调整3.2 eMMC容量调整3.3 eMMC时钟/时序调整3.3.1 内核调整3.3.2 u-boot调整3.3.3 低版本内核不支持 eMMC 5.1 及以后版本调整4. 关于 eMMC 常见问题小结5. 后记 1. 前言 限于 阅读全文
posted @ 2025-04-08 09:03 JiMoKuangXiangQu 阅读(196) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. Little Kernel启动流程简析3.1 LK 单线程时代3.2 LK多线程时代3.2.1 线程的调度3.2.2 用多线程完成初始化和系统引导3.2.3 线程切换代码分析3.2.3.1 线程的 resume 分析3.2.3.2 线程的抢占分析3.2.3.3 线程上下 阅读全文
posted @ 2025-04-08 09:01 JiMoKuangXiangQu 阅读(66) 评论(0) 推荐(0)
摘要: 目录1. 前言2. init.rc中套接字的创建和使用2.1 init 进程创建套接字流程2.2 使用套接字 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. init.rc中套接字的创建和使用 在 Android 中,我们可以在 init.rc 中, 阅读全文
posted @ 2025-04-08 09:01 JiMoKuangXiangQu 阅读(31) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. 充电模式启动简要流程4. 后记 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 本文分析基于 Android 6.0.1,仅供参考。 3. 充电模式启动简要流程 /* * 首先,在 u-boot 里面传递 andr 阅读全文
posted @ 2025-04-08 09:01 JiMoKuangXiangQu 阅读(20) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 本文目标3. 分析背景4. 问题场景分析5. 后记 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 本文目标 简析 rootfs 挂载的流程,分析 ext4 rootfs 文件系统会被挂载成【只读】模式的几个简单场景。 3. 分析 阅读全文
posted @ 2025-04-08 09:00 JiMoKuangXiangQu 阅读(154) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 背景3. 问题场景和分析过程4. 后记5. 番外6. 参考资料和链接 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 本文分析基于 linux-4.14.132 上游代码。 运行环境为: Ubuntu 16.04.4 LTS 阅读全文
posted @ 2025-04-08 09:00 JiMoKuangXiangQu 阅读(28) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 本文目标3. kprobe 实例4. kprobe实现分析4.1 实现原理4.2 分析背景4.3 实现分析4.3.1 注册【未定义指令异常】处理接口4.3.2 kprobe的安装准备工作4.3.3 kprobe 的触发4.3.4 kprobe的移除5. 参考资料 1. 前言 限于 阅读全文
posted @ 2025-04-08 08:59 JiMoKuangXiangQu 阅读(58) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 本文目标3. 动态链接过程分析3.1 分析背景3.2 流程分析3.2.1 程序代码3.2.2 从程序执行开始说起3.2.3 程序的动态链接初始化3.2.4 函数的动态链接过程3.2.4.1 对函数的调用3.2.4.2 从 PLT 调用表 跳转到 _dl_runtime_resol 阅读全文
posted @ 2025-04-08 08:59 JiMoKuangXiangQu 阅读(7) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 本文目标3. 死锁场景3.1 案例13.1.1 场景3.1.2 原因分析3.1.3 解决方案 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 本文目标 列举各种pthread编程的死锁场景,并简要分析原因,之后给出(不一定最优的) 阅读全文
posted @ 2025-04-08 08:59 JiMoKuangXiangQu 阅读(55) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 本文目标3. 寻找USB驱动3.1 找到设备的 VID&PID3.2 按 VID&PID 查找驱动3.2.1 从 USB 官网注册的 VID&PID3.2.2 网络搜索 VID&PID 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2 阅读全文
posted @ 2025-04-08 08:59 JiMoKuangXiangQu 阅读(260) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 本篇目标3. 字符设备驱动3.1 字符类设备子系统初始化3.2 建立字符设备驱动3.3 创建字符设备节点3.4 操作字符设备3.4.1 打开字符设备3.4.2 操作字符设备 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。_ 2. 本篇目 阅读全文
posted @ 2025-04-08 08:58 JiMoKuangXiangQu 阅读(13) 评论(0) 推荐(0)
摘要: 目录1. 前言2. 本篇目标3. 问题分析4. 问题结论5. 番外 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 本篇目标 本篇目标旨在回答如下问题: . 如果程序打开了一个普通文件,程序的多个线程使用同一文件句柄,并 发的对文件进行读写操作,需要 阅读全文
posted @ 2025-04-08 08:58 JiMoKuangXiangQu 阅读(26) 评论(0) 推荐(0)
摘要: 今日事,今日毕。恪守分秒,以至忘分忘秒,终于可达。 阅读全文
posted @ 2025-04-08 08:57 JiMoKuangXiangQu 阅读(18) 评论(0) 推荐(0)
摘要: 为什么写博客?对于我来说,目的主要有以下两点: 总结归纳,有利于形成自己的知识体系; 分享交流,利人利己。 有些知识点和很多博客重复,甚至别人写的更优秀,还有必要写类似的文章吗? 当然有必要,从上面的目的第1点来看,写博客首先是为了归纳总结,形成自己的知识体系,其次才是分享和交流。 对于个人的博客文 阅读全文
posted @ 2025-04-08 08:57 JiMoKuangXiangQu 阅读(32) 评论(0) 推荐(0)