LinuxDriver/README.md

4.1 KiB
Raw Blame History

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 updateRCU
  • 读写锁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基础通用知识

常用外设及硬件介绍

平台系统功能