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