嵌入式Device Driver開發實務上課時數:28小時(遠距+實體)
( Linux Driver Design )
Device Driver(裝置驅動程式) 在Linux核心中扮演和硬體裝置與上層使用者應用程式溝通的重要角色,驅動程式的撰寫與傳統應用程式的開發有著截然不同的設計思維,本課程以豐富的實例演練帶領學員有效的學習Linux 驅動程式設計觀念,並在核心內建立良好的溝通機制,進而新增硬體裝置與上層應用程式做溝通。
課程特色
-
採用
ARM Cortex-A72六核心開發板
熟悉Linux驅動程式開發架構觀念
-
熟悉硬體裝置設備與驅動程式溝通流程架構
-
了解驅動程式編譯執行流程 •豐富的課堂實作演練
-
實例新增硬體裝置並撰寫驅動程式
學員結訓具備技能
-
以Cortex-A72 六核心開發板實例解說
GPIO (LED, Push Button), Watchdog、RTC、Serial port等等切入
Driver撰寫的各個層面包含資源配置、中斷處理、同步、記憶體管理等等
-
導正學員
Linux Device Driver Development
的觀念,並撰寫完整的Driver架構與良好的框架。的觀念,並撰寫完整的Driver架構與良好的框架。
-
撰寫完整的
驅動程式架構與良好的框架及實際撰寫程式
也了解user-space與kernel-space 之間的關係。
-
實作將自已寫的程式整合到,並移植到Cortex-A72六核心開發板
Linux kernel
並移植到Cortex-A72六核心開發板。
課程優勢
-
業界專業講師,訓用合一為目標
專業具實務經驗的師資群、業界技術需求為導向的課程規劃,著重培養科技界即戰力人才。
-
CP值最高的嵌入式系統設計課程實作範例演練,紮實你的開發實力
課程以專題實作學習為導向,獨家採用ARM Cortex-A72六核七吋電容觸控開發板及自行技術研發,多元化的周邊模組搭配實作演練,訓後與業界實際開發不脫節
-
由淺入深連貫性教學,完整的學程規劃
Linux系統管理→C語言→Linux程式設計→Embedded Linux實作→嵌入式Device Driver開發實務→Android BSP Porting→專題練習,循序漸進連貫性上課,完全能掌握每階段的學習方向。
-
IT產業資深助教,課堂上協助教學
官方line@提供及技術討論區及講師專屬mail提供課程課後問題詢問
-
提供完整的教學錄影檔,方便學員課前預習及請假補課及課後複習
中華行動數位提供上課的教學錄影檔預、複習、補課,學習成效不中斷。學習效益更佳更靈活。
-
業界師資群編譯最新的實作教材
業界資深師資群合作編譯最完整的課程教材,規劃更貼近業界需求課程內容,不斷更新修編。
課程大綱
Ch1 - Overview
-
課程內容
-
Overview
-
認識 Linux Device Driver
0
-
Building Linux Modules
-
瞭解基本的 Linux module
-
瞭解 Kernel Function Export 功能
0
課程重點
-
RK3399-SOC
-
瞭解Linux module Makefile與Linux Kconfig,config 關係
-
Install_Linux_Modules
-
瞭解如何安裝 Linux module
-
瞭解 Linux module Makefile 與Linux Kconfig, .config 關係
Ch2 - Linux Driver Basic
-
課程內容
-
Character Drivers
-
認識 基本 Character Driver
-
學習 基本 SYS_FS Function
-
學習 Character Driver Read/Write Function
-
學習 基本 PROC_FS Function
-
Platform Devices Driver
-
認識 Platform Device
-
認識 Platform Driver
-
Platform Driver 與 DeviceTree
課程重點
-
Linux Driver Debug
-
瞭解 Debug Message 的使用
-
瞭解 ARM CPU Exception
-
應用 Compiler Options 於偵錯模式
0
-
0
-
Device Tree
-
瞭解 DeviceTree
-
DeviceTree 在 Linux Device Driver 的應用
-
0
Ch3 - Linux Driver Advance
-
課程內容
-
Allocating Memory
-
認識與應用 kmalloc
-
認識與應用 vmalloc
-
認識與應用 get_free_page
-
Interrpt Handling
-
認識 Linux Interrupt
-
Linux driver ISR 與 DTS
-
Linux driver ISR 的註冊
課程重點
-
Communicating With Hardware
-
瞭解 Io Mapping 與 Memory Map
-
使用 IOREMAP 與 DTS
-
使用 IOREMAP 與 控制硬體
-
Character Driver for IOCTL
-
瞭解 Character Driver 的 IOCTL 功能
-
瞭解 IOCTL 編碼方法
-
0
Ch4 - OS Relation
-
課程內容
-
Character Driver for IOCTL
-
認識 Linux 時間單位
-
介紹 Linux 基本延遲方法
-
介紹 Linux 進階延遲方法
-
Concurrency And RaceConditions.odp
-
認識 Semaphore 與 應用
-
認識 SpinkLock 與 應用
課程重點
-
BLOCK IO
-
認識阻塞式 I/O
-
應用 Wait Event
-
應用 Wait Queu
Ch5 - Subsysten
-
課程內容
-
GPIO Subsystem
-
認識 GPIO 子系統
-
應用 GPIO 子系統 與 DTS
-
Input Subsystem
-
輸入設備 子系統
-
輸入設備 子系統的應用 與 DTS
課程重點
-
I2C Subsystem
-
I2C Bus 子系統
-
應用 I2C Bus 子系統 與 DTS
-
1.
具備GUN Software能力者佳 •嵌入式系統相關開發人員。
-
2.
已具備Embedded Linux能力者佳 •以修過嵌入式系統相關課程人員
-
3.
有基礎C語言能力、Linux 程式語言觀念尤佳。
-
4.
已在相關領域,欲再增強本身專業技能者。
Device Driver實作應用範例
-
-
實作內容
-
撰寫編譯Linux 模組
-
撰寫記憶體區塊當作字元裝置驅動程式
-
Linux Kernel與Driver除錯範例
-
使用Proc檔案架構除錯範例
-
競爭問題實作範例
-
ioctl實作範例
-
驅動程式休眠範例
-
阻塞型驅動範例
-
允許多個終端機存取裝置範例
實作內容
-
允許多次開啟之驅動程式範例
-
Kernel Timer驅動範例
-
配置核心記憶體驅動範例
-
RK3399開發板LED驅動範例
-
RK3399開發板 Button中斷驅動範例
-
RK3399開發板 ADC 類比轉數位驅動範例
-
RK3399開發板數位溫度晶片驅動範例
-
RK3399開發板SPI晶片驅動範例
-
新增驅動程式至核心