# 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基础通用知识 ## 常用外设及硬件介绍 ## 平台系统功能