Architecture
從 layered architecture、kobject、file operations 與 cdata design flow 出發,建立 Linux 驅動程式的大局觀。
從 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。
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 系統開發的重要基礎課程的原因。
從 layered architecture、kobject、file operations 與 cdata design flow 出發,建立 Linux 驅動程式的大局觀。
理解 read/write、Blocking I/O、Memory-Mapped I/O 與 User-space driver,掌握驅動程式的核心介面與資料流。
分析 Process Scheduling、Kernel Timer、Work Queue、中斷處理與 Bottom Half 的角色與設計方法。
從 Race Condition、Reentrancy、Mutex、Spinlock 到 IRQ Disabling,建立單處理器與多處理器環境下的同步分析能力。
從 Subsystem 分層、Class Driver 到 Android 整合專題,理解 Linux 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 等同步技術。
對 Moko365 而言,這門課的價值不只來自內容本身,也來自長期的教學淬鍊。本課程累積超過 20 年以上的公開課與企業內訓經驗,並且擁有超過 10 年的公開課紀錄;近年課程已更新至 Kernel 6.x(mainline),同時自 2018 年起,授課形式以遠端教學與企業內訓為主。
本課程內容累積超過 20 年以上的公開課與企業內訓經驗,並持續堅持小班教學與高品質授課。
課程擁有超過 10 年公開課紀錄,已累積至仕橙版第 38 期,並於近年持續維持授課與企業內訓更新。
仕橙 3G 教室課程改採遠端教學與企業內訓為主,實體教室課程採預約報名方式。
課程已針對 Kernel 6.x(mainline)進行更新,讓驅動程式觀念與當代主線核心版本保持一致。
課程持續更新 Linux Driver 教學材料、Exercise 與 Android 整合內容,以維持公開課與企業內訓的一致品質。
標準版維持 10 堂課的完整結構,企業版則依內訓需求進行濃縮與重組。
強化 Architecture、Kernel API、I/O 與 User-space / Kernel-space 關係。
聚焦 Race Condition、Mutex、Spinlock、IRQ disabling 與 SMP 差異分析。
納入 Memory-Mapped I/O、Device Tree、開發板移植與 Android 整合專題。
延伸至 USB、Input Device、Hardware Monitoring 或 ALSA Audio 專題。
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 系統整合,整理成一條有邏輯、可分析、可落地的學習主線。
若您的團隊正在進行 Linux 平台開發、Embedded 系統開發、Kernel Synchronization 分析,或需要處理 Linux 與 Android 的整合,本課程將提供一套較完整的驅動程式觀念體系與實作方法。