From 5a66fb4408549fd1bb0f5ef6a42fb53922f7c6d2 Mon Sep 17 00:00:00 2001 From: clint Date: Mon, 14 Jul 2025 02:15:33 +0800 Subject: [PATCH] =?UTF-8?q?Linux=E7=B3=BB=E7=BB=9F=E7=BC=96=E7=A8=8B=20?= =?UTF-8?q?=E8=BF=9B=E5=BA=A6%60?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 202 insertions(+) diff --git a/README.md b/README.md index e69de29..6c0f927 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,202 @@ +# Linux 内核笔记 + +## 嵌入式基础能力 + +### Linux系统编程 + +- [x] 文件IO和标准IO +- [x] 目录IO +- [x] 库的制作与使用 +- [ ] 进程基础 +- [ ] 进程间通信 + +### 驱动开发篇 + +- [ ] Linux驱动初探 +- [ ] Linux内核模块 +- [ ] 驱动模块编译进内核 +- [ ] Linux Misc驱动 +- [ ] Linux用户层和内核层 +- [ ] 物理地址与虚拟地址 +- [ ] 驱动传参 +- [ ] 注册字符设备号 +- [ ] 注册字符类设备 +- [ ] 自动创建设备节点 + +## Linux模块化编程 +- [ ] Linux内核源码初识 +- [ ] Helloworld驱动实验 +- [ ] 向系统添加一个系统调用 +- [ ] 内核模块实验 +- [ ] 驱动模块传参 +- [ ] 内核模块符号的导出 +- [ ] 驱动模块的交互 +- [ ] menuconfig实验 +- [ ] 内核空间和用户空间的交互 +- [ ] 文件私有数据实验 +- [ ] 一个驱动兼容多个实验设备 +- [ ] 内核模块详细加载/卸载过程 +- [ ] modulde_init的优先级 +- [ ] 驱动的加载过程 +- [ ] 自动创建设备节点 +- [ ] 内核模块符号的导出 +- [ ] kmod内核模块管理工具 +- [ ] Linux热拔插机制mdev的使能 +- [ ] udv:内核是如何发送事件到用户空间 + +## 中断及异常 + +- [ ] 什么是中断 +- [ ] Linux中断API函数 +- [ ] 中断的申请流程 + +- [ ] 中断下半部——tasklet实验 +- [ ] 中断下半部——softirq软中断 +- [ ] 中断下半部——tasklet原理 +- [ ] 中断下半部——共享工作队列的使用 +- [ ] 中断下半部——自定义工作队列的使用 +- [ ] 中断下半部——延迟工作实验 + +- [ ] 并发管理工作队列实验 +- [ ] 中断下半部——中断线程化 +- [ ] 按键中断实验 +- [ ] 应用读取按键 +- [ ] 中断共享(全局中断) +- [ ] Linux内核异常处理过程 +- [ ] 中断子系统框架 +- [ ] Linux中断系统中的重要数据结构 +- [ ] 获取中断 +- [ ] 异常 +- [ ] 中断亲和性 +- [ ] 中断控制器 +- [ ] 禁止/开启中断 +- [ ] 中断高频面试题 +- [ ] 中断知识点总结 +- [ ] 中断子系统框架 +- [ ] 中断函数的编写 +- [ ] ARM64底层中断处理 +- [ ] 注册中断 +- [ ] 工作队列详解 +- [ ] 工作队列的四种形态 + +## 内核互斥技术 + +- [ ] 并发与竞争场景 +- [ ] 原子操作 +- [ ] 经典自旋锁的使用 +- [ ] 自旋锁死锁情况 +- [ ] 信号量的使用 +- [ ] 互斥锁的使用 +- [ ] 掌握信号处理 +- [ ] 中断屏蔽 +- [ ] Linux内核抢占 +- [ ] Read-copy update(RCU) +- [ ] 读写锁(rwlock) +- [ ] 内存屏障(核心代码) +- [ ] 死锁监测工具 lockdep +- [ ] 并发与同步高频面试题 +- [ ] 内联汇编(核心代码) +- [ ] 同步与互斥失败的例子 + +## 字符设备驱动模型 + +- [ ] Linux设备分类 +- [ ] 图解字符驱动模块设计思路 +- [ ] 主次设备号 +- [ ] 注册字符设备 +- [ ] 创建设备节点实验 +- [ ] 文件操作表 +- [ ] 杂项设备 +- [ ] 用户空间和内核空间数据交换 +- [ ] 文件私有数据实验 +- [ ] Linux错误处理实验 + +## 高级字符设备进阶 + +- [ ] IO模型引入实验 +- [ ] 阻塞IO实验 +- [ ] 非阻塞IO实验 +- [ ] IO多路复用实验 +- [ ] 信号驱动IO实验 +- [ ] 定时器实验 +- [ ] llseek定位设备驱动实验 +- [ ] IOCTL驱动传参实验 +- [ ] IOCTL地址传参实验 + +## Linux驱动相关子系统 + +### Linux设备模型 + +### 设备树 + +### 设备树overlay + +### platform虚拟总线驱动 + +### GPIO子系统 + +### Pintctrl子系统 + +### LED子系统 + +### DMA子系统 + +### Input子系统 + +### SPI子系统 + +### I2C子系统 + +### UART、TTY子系统 + +### PWM子系统 + +### IIO框架 + + + +## Linux复杂设备外设驱动 + +### SDIO + +### 以太网 + +### HDMI屏幕驱动 + +### 音频 + +### USB + +### 摄像头 + +### MIPI DSI屏幕驱动 + +### 多点电容触摸屏 + +### WIFI + +### PCI/PCIE + +## Linux进程管理 + +## Linux进程间通信 + +## Linux内存管理 + +## 块设备驱动系统 + +## Linux文件系统 + +## Linux网络系统 + +## Linux系统调优&调试 + +## 硬件工具&知识 + +## 音视频编解码 + +## Linux基础通用知识 + +## 常用外设及硬件介绍 + +## 平台系统功能