Embedded GNU/Linux Kernel Internals and Device Drivers ( ldd | 35 hours )
- 基本熟悉最终使用者使用 GNU/Linux 系统
- 基本熟悉命令行shell
- 用户空间 / 应用程式开发的基本知识
- 中级 C 语言程式设计知识
- 应该以前参加 过嵌入式 GNU/Linux Systems Architecture 并且/或对那里概述的主题有很好的理解
描述
这个为期 5 天的培训课程使用动手练习和指导来说明 GNU/Linux 内核内部和设备驱动程序开发的概念。它旨在让您快速上手。我们通过理论和在职培训相结合的方式,描述了编写 GNU/Linux 设备驱动程式所需的过程、概念和命令。
不要重新发明轮子,而是向经验丰富的培训师学习,并将应用知识带回家,并在您自己的嵌入式开发专案中有效使用它。
谁应该参加?
对开发 GNU/Linux 设备驱动程式感兴趣或负责开发或评估的人,如软体工程师、现场工程师、(专案)经理、硬体工程师。
介绍
- GNU 简史/Linux
- 发 牌
- 内核版本控制
- 发布周期
- 内核树
- 主线
- 内核 vs. 用户空间
- 机制与策略
- 内核驱动程式替代方案
- RTOS 与 Linux
记忆体 Management
- 虚拟记忆体与物理记忆体
- 内核中的记忆体分配
- 页面
- 区
- 应用程式介面
- 板
内核补丁
- 生命周期
- git
- 内核源
- 创建补丁
- 检查补丁
- 修复补丁
- 船舶补丁
- 经审核的代码
内核模组
- 获取内核源
- 配置/构建/安装
- 装置驱动程式(静态连结,在运行时载入)
- 初始化/退出
- 发 牌
- 汇出元件 GPL
- 树外makefile
- 模组初始化工具
- 内核树中的模组
- K配置
- 参数传递
- 稀疏
Char 驱动程式
- 建筑
- 使用者/内核介面
- I/O 子系统
- VFS
- sysfs (设备、总线、驱动程式、类)、
- kobject/ktype/kset
- Linux 内核驱动程式模型
- 设备档
- char 驱动程式
- 初始化
- 注册
- 打开、释放
- cdev, cdev add, cdev del,...
- 主/辅编号
- udev、udevmonitor、udevadm
高级 Charachter 驱动程式操作
- ioctl
- 解锁的ioctl
- Compat ioctl
- 用户空间 API
- 内核空间 API
- 流程生命周期
- 休眠/阻塞
- 睡觉/醒来
- 等待伫列
- 雷霆群
- 轮询/选择
内核调试
- 错误
- 调试
- 调试内核
- 使用 Git 进行二进位搜索
- 内核的调试支援
- printk syslogd, klogd, loglevels, 速率限制, debug levels, 调试级别, debug selective subsystems 调试选择性子系统
- 通过查询 debugFS 进行调试
- OOPS 调试, 断言 OOPS
- Magic SysRq 金钥
- KGDB/KDB 资料库
- JTAG
描图
- 全球科夫
- LCOV
- oprofile
- ftrace
- 不,追踪者
- 函数跟踪器
- sched 开关跟踪器
- 函数 Graph Tracer
- 动态示踪剂
- 跟踪 cmd/内核鲨鱼
- 性能
- LTTng
中断
- 中断与轮询
- 中断
- 程式部分
- 可重入性
- 事件
- 中断处理程式
- 共用中断处理程式
- 中断流
- 中断控制
推迟工作
- 上半部分/下半部分
- SoftIRQ
- 微线程
- 工作伫列
- 螺纹交互
并发
- 关键区域/区域
- 原子
- 争用条件
- 同步
- 锁定
- 锁定解决方案
- 僵局
- 冲突
- 要锁定什么?
- 可以使用什么?
- 原子操作
- 旋转锁
- 读写器自旋锁
- 信号
- 二进位信号量
- 互斥锁
- reader-writer 信号量
- 完成变数
- 顺序锁
- 禁用抢占
- Orderig 和 Barriers
时间
- 赫兹
- 吉菲斯
- 大/小延迟
- 内核计时器
硬体 I/O
- I/O 埠
- I/O 记忆体
- 如何处理访问寄存器的副作用?
使用者-内核 Communication
- put(get)_user()
- 复制到(从)_user()
- 内核 I/O
- 记忆体映射
- procfs
- sysfs
- 调试
- 继电器FS
- 网联
- ioctl
可移植性
- 字长
- 不透明类型
- 已签名/未签名的字元
- 数据对齐
- 整体推广
- 代码重用
- 内脏
- 系统刻度
- 页面大小
- 指令排序
- SMP/抢占/记忆体增强型
除非另有说明,否则内容和本课程大纲根据署名-非商业性使用-相同方式共用 4.0 国际 (CC BY-NC-SA 4.0) 获得许可。
United Arab Emirates - Embedded GNU/Linux Kernel Internals and Device Drivers
Qatar - Embedded GNU/Linux Kernel Internals and Device Drivers
Egypt - Embedded GNU/Linux Kernel Internals and Device Drivers
Saudi Arabia - Embedded GNU/Linux Kernel Internals and Device Drivers
South Africa - Embedded GNU/Linux Kernel Internals and Device Drivers
Brasil - Embedded GNU/Linux Kernel Internals and Device Drivers
Canada - Embedded GNU/Linux Kernel Internals and Device Drivers
中国 - Embedded GNU/Linux Kernel Internals and Device Drivers
香港 - Embedded GNU/Linux Kernel Internals and Device Drivers
澳門 - Embedded GNU/Linux Kernel Internals and Device Drivers
台灣 - Embedded GNU/Linux Kernel Internals and Device Drivers
USA - Embedded GNU/Linux Kernel Internals and Device Drivers
Österreich - Embedded GNU/Linux Kernel Internals and Device Drivers
Schweiz - Embedded GNU/Linux Kernel Internals and Device Drivers
Deutschland - Embedded GNU/Linux Kernel Internals and Device Drivers
Czech Republic - Embedded GNU/Linux Kernel Internals and Device Drivers
Denmark - Embedded GNU/Linux Kernel Internals and Device Drivers
Estonia - Embedded GNU/Linux Kernel Internals and Device Drivers
Finland - Embedded GNU/Linux Kernel Internals and Device Drivers
Greece - Embedded GNU/Linux Kernel Internals and Device Drivers
Magyarország - Embedded GNU/Linux Kernel Internals and Device Drivers
Ireland - Embedded GNU/Linux Kernel Internals and Device Drivers
Israel - Embedded GNU/Linux Kernel Internals and Device Drivers
Luxembourg - Embedded GNU/Linux Kernel Internals and Device Drivers
Latvia - Embedded GNU/Linux Kernel Internals and Device Drivers
España - Embedded GNU/Linux Kernel Internals and Device Drivers
Italia - Embedded GNU/Linux Kernel Internals and Device Drivers
Lithuania - Embedded GNU/Linux Kernel Internals and Device Drivers
Nederland - Embedded GNU/Linux Kernel Internals and Device Drivers
Norway - Embedded GNU/Linux Kernel Internals and Device Drivers
Portugal - Embedded GNU/Linux Kernel Internals and Device Drivers
România - Embedded GNU/Linux Kernel Internals and Device Drivers
Sverige - Embedded GNU/Linux Kernel Internals and Device Drivers
Türkiye - Embedded GNU/Linux Kernel Internals and Device Drivers
Malta - Embedded GNU/Linux Kernel Internals and Device Drivers
Belgique - Embedded GNU/Linux Kernel Internals and Device Drivers
France - Embedded GNU/Linux Kernel Internals and Device Drivers
日本 - Embedded GNU/Linux Kernel Internals and Device Drivers
Australia - Embedded GNU/Linux Kernel Internals and Device Drivers
Malaysia - Embedded GNU/Linux Kernel Internals and Device Drivers
New Zealand - Embedded GNU/Linux Kernel Internals and Device Drivers
Philippines - Embedded GNU/Linux Kernel Internals and Device Drivers
Singapore - Embedded GNU/Linux Kernel Internals and Device Drivers
Thailand - Embedded GNU/Linux Kernel Internals and Device Drivers
Vietnam - Embedded GNU/Linux Kernel Internals and Device Drivers
India - Embedded GNU/Linux Kernel Internals and Device Drivers
Argentina - Embedded GNU/Linux Kernel Internals and Device Drivers
Chile - Embedded GNU/Linux Kernel Internals and Device Drivers
Costa Rica - Embedded GNU/Linux Kernel Internals and Device Drivers
Ecuador - Embedded GNU/Linux Kernel Internals and Device Drivers
Guatemala - Embedded GNU/Linux Kernel Internals and Device Drivers
Colombia - Embedded GNU/Linux Kernel Internals and Device Drivers
México - Embedded GNU/Linux Kernel Internals and Device Drivers
Panama - Embedded GNU/Linux Kernel Internals and Device Drivers
Peru - Embedded GNU/Linux Kernel Internals and Device Drivers
Uruguay - Embedded GNU/Linux Kernel Internals and Device Drivers
Venezuela - Embedded GNU/Linux Kernel Internals and Device Drivers
Polska - Embedded GNU/Linux Kernel Internals and Device Drivers
United Kingdom - Embedded GNU/Linux Kernel Internals and Device Drivers
South Korea - Embedded GNU/Linux Kernel Internals and Device Drivers
Pakistan - Embedded GNU/Linux Kernel Internals and Device Drivers
Sri Lanka - Embedded GNU/Linux Kernel Internals and Device Drivers
Bulgaria - Embedded GNU/Linux Kernel Internals and Device Drivers
Bolivia - Embedded GNU/Linux Kernel Internals and Device Drivers
Indonesia - Embedded GNU/Linux Kernel Internals and Device Drivers
Kazakhstan - Embedded GNU/Linux Kernel Internals and Device Drivers
Moldova - Embedded GNU/Linux Kernel Internals and Device Drivers
Morocco - Embedded GNU/Linux Kernel Internals and Device Drivers
Tunisia - Embedded GNU/Linux Kernel Internals and Device Drivers
Kuwait - Embedded GNU/Linux Kernel Internals and Device Drivers
Oman - Embedded GNU/Linux Kernel Internals and Device Drivers
Slovakia - Embedded GNU/Linux Kernel Internals and Device Drivers
Kenya - Embedded GNU/Linux Kernel Internals and Device Drivers
Nigeria - Embedded GNU/Linux Kernel Internals and Device Drivers
Botswana - Embedded GNU/Linux Kernel Internals and Device Drivers
Slovenia - Embedded GNU/Linux Kernel Internals and Device Drivers
Croatia - Embedded GNU/Linux Kernel Internals and Device Drivers
Serbia - Embedded GNU/Linux Kernel Internals and Device Drivers
Bhutan - Embedded GNU/Linux Kernel Internals and Device Drivers
Nepal - Embedded GNU/Linux Kernel Internals and Device Drivers