Enterprise Training

Linux 驅動程式完整訓練:Jollen 的 10 堂課

仕橙版第 38 期|企業內訓課程

從 Linux 驅動程式架構、Kernel API、I/O 與 Process Scheduling,到 Kernel Synchronization、Subsystem 與 Android 整合,建立 Linux Device Driver 的完整觀念體系與實作能力。

Linux 驅動程式是一門進入門檻較高的學科。Jollen 在長期授課經驗中發現,初學者最大的困難,往往不是主題本身太難,而是缺乏有效的學習方法。若沒有一套完整的觀念體系,只憑片段的範例程式與零散的 API 記憶,很難真正學會 Linux Device Driver。

因此,本課程不是從零碎語法開始,而是帶領學員從無到有撰寫架構良好的驅動程式,並對作業系統原理進行分析。透過完整的 Driver 分析、同步練習與實作演練,讓學員真正理解 Linux 驅動程式如何形成,並建立可以面對實際產品開發的基礎能力。

Linux Device Driver 的學習方式,首重「完整的觀念體系」,面對現有的 Driver 程式碼時,才能輕鬆應對。本課程帶領同學「從無到有撰寫架構良好的驅動程式」,並「對作業系統原理進行分析」,透過一個完整驅動程式的分析與研發過程,真正學會 Linux Device Driver。
— Moko365 Team
Course Overview

學好 Linux 驅動程式,首重完整的觀念體系

Linux 驅動程式的重點,在於觀念而非程式碼語法。善用 Linux 所提供的 APIs,設計機制(Mechanism)與行為(Behavior)良好的驅動程式,才是學習 Linux Device Driver 的真正重點。對 Device Driver 設計師而言,所要面對的工作可分成 Virtual Device Driver 與 Physical Device Driver 兩個層面;往上要理解 User-space 與 Kernel-space 的關係,往下則要理解 I/O memory 與硬體控制方式。

因此,本課程不是只教如何把範例程式改到可以編譯,而是帶領學員建立一套較完整的驅動程式觀念體系。當面對現有的 Driver 程式碼時,才能看懂架構、判斷同步問題,並進一步分析在單處理器與多處理器環境下的差異。

進入 Embedded Linux System 領域,並打造厚實基礎能力,最重要的軟體課程之一,就是 Linux 驅動程式。這也是 Jollen 長期將本課程定位為 Linux 與 Android 系統開發的重要基礎課程的原因。

Five Pillars

想真正學會 Linux Device Driver,就要掌握這五大主軸

Architecture

從 layered architecture、kobject、file operations 與 cdata design flow 出發,建立 Linux 驅動程式的大局觀。

Kernel API & I/O

理解 read/write、Blocking I/O、Memory-Mapped I/O 與 User-space driver,掌握驅動程式的核心介面與資料流。

Scheduling & Interrupt

分析 Process Scheduling、Kernel Timer、Work Queue、中斷處理與 Bottom Half 的角色與設計方法。

Kernel Synchronization

從 Race Condition、Reentrancy、Mutex、Spinlock 到 IRQ Disabling,建立單處理器與多處理器環境下的同步分析能力。

Subsystem & Android

從 Subsystem 分層、Class Driver 到 Android 整合專題,理解 Linux Driver 在真實產品裡的延伸與落地方式。

Methodology

這門課不是背 API,而是建立分析 Driver 的方法

Linux 驅動程式是一門進入門檻較高的學科。Jollen 長期觀察到,初學者自學困難的主因之一,是缺乏有效的學習方法。因此,本課程特別重視「觀念的解析」,而不是只討論語法;有了觀念後,才能快速看懂 Linux 的驅動程式。

課程範例經過嚴謹設計,不使用只有教學方便、卻缺乏專業性的玩具碼,而是帶領學員從無到有設計一個架構完整、行為良好的驅動程式。課程並加入多階段 Exercise:從 ioctl、multi-thread、private data、wait queue,到 Kernel Debug、Device Tree、Memory Model 與 Android 整合專題,讓學員在實作中理解問題。

對 Jollen 而言,如何分析程式碼,並分別找出在單處理器與多處理器環境下的同步問題,是學習 Kernel Synchronization 的基本功。因此,課程後半段特別著重同步分析能力的建立,幫助學員真正駕馭 Mutex、Spinlock、IRQ disabling 等同步技術。

Course Legacy

課程歷史

對 Moko365 而言,這門課的價值不只來自內容本身,也來自長期的教學淬鍊。本課程累積超過 20 年以上的公開課與企業內訓經驗,並且擁有超過 10 年的公開課紀錄;近年課程已更新至 Kernel 6.x(mainline),同時自 2018 年起,授課形式以遠端教學與企業內訓為主。

里程碑

長期累積

本課程內容累積超過 20 年以上的公開課與企業內訓經驗,並持續堅持小班教學與高品質授課。

公開課紀錄

課程擁有超過 10 年公開課紀錄,已累積至仕橙版第 38 期,並於近年持續維持授課與企業內訓更新。

2018 年起

仕橙 3G 教室課程改採遠端教學與企業內訓為主,實體教室課程採預約報名方式。

最新版教材

課程已針對 Kernel 6.x(mainline)進行更新,讓驅動程式觀念與當代主線核心版本保持一致。

開課與授課記錄(部份摘錄)

  • 仕橙版第 38 期:Linux 驅動程式完整訓練:Jollen 的 10 堂課。
  • 第 37 期:2017 年 12 月,Linux 驅動程式完整訓練:Jollen 的 10 堂課,上課實況。
  • 近年課程持續以遠端教學與企業內訓形式進行,支援企業團隊導入與客製需求。
  • 課程後半段長期保留 Kernel Synchronization 重點模組,並以 1.5 天時間深入分析同步機制與驅動程式同步實作。

課程持續更新 Linux Driver 教學材料、Exercise 與 Android 整合內容,以維持公開課與企業內訓的一致品質。

Who Should Attend

適合對象

  • Linux Device Driver 初學者與進階工程師
  • Embedded Linux / BSP / Platform 工程師
  • 需要理解 Kernel Synchronization 與驅動程式分層架構的研發團隊
  • 需要處理 Linux 與 Android 整合議題的系統工程師
  • 想建立 Linux 核心與驅動程式正確觀念的企業技術團隊
Prerequisites

先備知識

  • 懂 C 語言
  • Linux 終端機環境操作
  • 具備基本的作業系統觀念
  • 已有 Linux、BSP、Embedded 或 Android 系統開發經驗者,學習效果最佳
Course Outline

課綱總覽

標準版維持 10 堂課的完整結構,企業版則依內訓需求進行濃縮與重組。

8 天標準版

前半段
  • 第 01 堂課:Linux 驅動程式架構
  • 第 02 堂課:設計流程與 Kernel API
  • 第 03、04 堂課:I/O 存取、read/write、Blocking I/O 與 Process Scheduling
  • 第 05、06 堂課:Kernel Timer、Work Queue、中斷處理與 Bottom Half
後半段
  • 第 07 堂課:Kernel Synchronization(1/2)
  • 第 07 堂課:Kernel Synchronization(2/2)
  • 第 08、09 堂課:Memory Mapped I/O、User-space driver、Subsystem 與 Class Driver
  • 第 10 堂課:Linux ALSA 驅動程式完整學習

2 天企業版

第 1 天
  • Linux 驅動程式架構與 layered architecture
  • Kernel API、file operations 與 I/O 設計流程
  • Blocking I/O、Scheduling 與 Kernel Timer
第 2 天
  • Kernel Synchronization 核心觀念與分析技巧
  • Interrupt Handling、Bottom Half 與 IRQ disabling
  • Subsystem 分層架構與 Android 整合實務

客製企業版

版本 A:入門打底

強化 Architecture、Kernel API、I/O 與 User-space / Kernel-space 關係。

版本 B:同步分析

聚焦 Race Condition、Mutex、Spinlock、IRQ disabling 與 SMP 差異分析。

版本 C:嵌入式整合

納入 Memory-Mapped I/O、Device Tree、開發板移植與 Android 整合專題。

版本 D:子系統專題

延伸至 USB、Input Device、Hardware Monitoring 或 ALSA Audio 專題。

Jollen Chen
Jollen
Moko365 講師暨技術總監
Instructor

長期投入 Embedded Linux、Linux Driver 與 Android 系統軟體架構教學

Jollen 在 Embedded Linux 與 Linux Device Driver 有超過 20 年的研發與企業內訓經驗,在 Android Framework 軟體架構方面,也有 15 年的授課經驗,並長期在科技業擔任 Linux & Android 技術顧問。

此外,Jollen 曾於 Linux 基金會舉辦的 Open Source Summit 全球開發者社群大會上,多次擔任講者發表演說;自 2017 年起,也於歐洲與加拿大發表有關區塊鏈與去中心化 IoT 架構的論文,並獲 ACM SIGBED Review 刊登。Jollen 於 2016 年創辦 Flowchain 基金會,開發原創區塊鏈作業系統技術,並獲多項相關國際專利。

這門課的特色,不只是內容完整,而是由長期從事 Linux、Android 與系統軟體架構工作的講師主講,能夠將 Linux Device Driver 的觀念、同步分析與 Embedded 系統整合,整理成一條有邏輯、可分析、可落地的學習主線。

Enterprise Inquiry

Linux 驅動程式的重點在於觀念,而不是語法

若您的團隊正在進行 Linux 平台開發、Embedded 系統開發、Kernel Synchronization 分析,或需要處理 Linux 與 Android 的整合,本課程將提供一套較完整的驅動程式觀念體系與實作方法。

聯絡方式建議
  • 索取企業內訓簡章
  • 安排課前需求訪談
  • 確認 2 天版、8 天版或客製版本
  • 依產品型態調整同步分析、子系統或 Android 整合重點