ARM Embedded Linux驅動程式設計工程師課程
Level: Intermediate
Total Hours: 54 小時
Number of Lessons: 18
開課日期: Oct 29, 2015
Day of the week:
Wed
NTD 97,200
send Course Introduction
###課程目標###
了解嵌入式各種周邊硬體的運作原理。
運用 C 語言技術編修、調整驅動程式。
能撰寫 Linux 驅動程式,並控制各種周邊。
了解 Linux 中如何撰寫中斷、多工、或存取記憶體相關程式。
###課程對象###
- 已經有 C 語言程式基礎,想學習如何撰寫程式操控整個嵌入式系統硬體的學員。
- 對嵌入式程式設計有興趣者。
- 有心朝嵌入式軟體工程師領域邁進的學員。
- 未來對於進入 Embedded Linux 相關工程師有興趣者。
###課程內容###
第一章 驅動程式概論
- 何謂驅動程式
- 是否一定要有作業系統
- 撰寫驅動程式應考慮的事項
- 編寫驅動程式的技術基礎
第二章 驅動程式開發簡介
- 撰寫驅動程式的方法
- 「模組(Driver Module)」介紹
- Linux 驅動程式的分類
- User Space 驅動程式
第三章 開發環境設定
- 作業系統
- 文字編輯器
- 編譯器
- 核心原始碼
- 開發板執行環境
- 驗證環境安裝是否正確
第四章 您的第一個驅動程式
- Hello! World! 模組
- 將驅動程式編譯為模組
- 由模組外傳入參數
第五章 核心基礎資料結構
- 一般資料型別
- 核心資料型別
- 檔案系統相關資料結構:inode, dentry, file
- 核心內常用資料結構:list_head, klist, kobject, kset, subsystem
第六章 裝置驅動程式模型
- 裝置驅動程式模型簡介
- udev 裝置檔案系統簡介
- sysfs
- udev 相關結構體:device, device_driver, bus_type, class
第七章 字元驅動程式
- 字元驅動程式簡介
- cdev 結構體介紹
- 裝置編號介紹
- file_operations 結構體介紹
- 範例:globalmem
第八章 並行控制
- 並行控制簡介:並行控制與競爭條件
- 並行控制基本機制
- – 中斷抑制(Interrupt Disable)
- – 單體操作(Atomic Operations)
- 自旋鎖系列
- – Spin Lock
- – Read-Write Spin Lock
- – Seqlock
- – Read-Copy-Update (RCU)
- 信號體系列
- – Semaphore
- – Completion
- – Read-Write Semaphore
- – Mutex
第九章 阻塞與非阻塞式 I/O
- 簡介
- 阻塞式 I/O:等候佇列(Waiting Queue)
- – 資料結構介紹:wait_queue_head_t, wait_queue_t
- – 定義與初始化
- – 增減等候佇列內的項目
- – 休眠與喚醒佇列內的項目
- – 範例
- 非阻塞式 I/O:輪詢(Polling)
- – 基本原理
- – 相關函式:select(), poll(), epoll()
- – 範例
第十章 阻塞與非阻塞式 I/O
- 信號通知(Signaling)
- 如何使驅動程式支援非同步 I/O
- 範例
第十一章 中斷
- 中斷簡介
- Linux 中斷機制:頂部/底部中斷
- Linux 中斷實作
- 中斷共享
- 實例
第十二章 記憶體存取
- Linux 記憶體管理原理與各種位址空間
- – Physical Address
- – Bus Address
- – Kernel Logical Address
- – Kernel Virtual Address
- – User Virtual Address
- 核心記憶體申請:kmalloc() / kfree() vs. vmalloc() / vfree()
- 虛擬與實體記憶體映射
- 核心記憶體回收機制
- – Lookaside Cache
- – Memory Pool
第十三章 LED 驅動程式
- LED 驅動的硬體原理
- LED 驅動程式實例解說
- – 製作驅動程式骨架
- – 註冊驅動程式
- – 相關函式撰寫:open(), release(), ioctl()
- – 測試與驗證
第十四章 按鍵驅動程式
- 按鍵驅動程式的硬體原理
- 專案環境設定
- 實例解說
- – 驅動程式的註冊
- – 相關函式的撰寫:open(), release(), iotrl(), read(), write()
- – 中斷改寫與攔截
- – 測試與驗證
第十五章 背光調整與脈寬調變
- 背光調整硬體原理
- 類比與數位轉換:脈寬調變(PWM, Pulse Width Modulation)
- 實例解說
- – 電路圖相關腳位說明
- – 設定脈寬調變用的「計時器(Timer)」
- – 程式碼撰寫
第十六章 USB 驅動程式
- USB 特性簡介
- USB 邏輯單元:Device, Config, Interface, Endpoint
- USB 命令封包:URB (Usb Request Block)
- 實例解說
第十七章 LCD 驅動程式
- LCD 硬體原理
- 影格緩衝區(Frame Buffer)
- LCD 三大驅動程式
- – 主驅動程式(Main Character Device Driver)
- – 影格緩衝區驅動程式(Frame Buffer Device Driver)
- – 背光驅動程式(Backlight Device Driver)
- 實例解說