Linux驱动学习
Linux系统编程篇 | ||
README.md |
Linux 内核笔记
嵌入式基础能力
Linux系统编程
- 文件IO和标准IO
- 目录IO
- 库的制作与使用
- 进程基础
- 进程间通信
驱动开发篇
- 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地址传参实验