本課程將帶領學員從零開始探索Raspberry Pi與ARM 架構的底層世界,在不依賴既有作業系統之下,直接進行Bare-metal開發。課程將從基礎的ARM架構原理、樹莓派硬體啟動流程,逐步使用C與組合語言撰寫驅動程式與系統核心,最後能實作屬於自己的「迷你作業系統」。透過這門課,學員能夠清楚處理器如何與硬體互動、如何進行資料輸入與輸出控制,進而掌握嵌入式系統開發的核心技能,助益學員真正打通硬體與軟體之間的任督二脈!!
課程目標
主要目標是培養學員ARM架構與嵌入式系統的實作能力,從開發環境建置到程式設計,逐步深入CPU模式、暫存器運作、輸入輸出控制、UART通訊、計時器應用與中斷處理,最終能完成實作任務切換與多工運作。
課程對象
- 適合目前擔任嵌入式系統工程師、軟體開發人員、硬體設計/韌體開發工程師、開源愛好者及Maker社群成員等
- 期待透過實作建立作業系統與核心運作底層概念的從業人員
- 想要清楚掌握硬體到軟體設計並提升系統整合與 Debug 能力的從業人員
課程大綱
|
課程單元 |
課程大綱 |
課程時數 |
|
(一)環境建置 |
1.課程目標與學習架構說明 2.開發環境介紹與建置 -交叉編譯工具鏈(ARM GCC) -Makefile & 專案目錄結構 3.樹莓派硬體資源檢介紹 4. QEMU模擬器與真機測試 |
1H |
|
(二)ARM架構與組合語言基礎 |
1.ARM暫存器介紹 2.資料處理指令 3.記憶體存取指令 4.程式流程控制 |
1H |
|
(三)基礎硬體設定與Bootloader |
1.簡單boot.S程式(含CPU模式設定) 2.ARM CPU模式與暫存器簡介(User, FIQ, IRQ, SVC, System, Abort, Undefined) 3.初始化堆疊SP(SVC模式) |
2H |
|
(四)GPIO與硬體控制 |
1.樹莓派週邊設備暫存器介紹 2.GPIO控制介紹(設定方向與輸出) 3.Button Polling 實作(讀取按鍵狀態) |
2H |
|
(五)UART串列通訊實作 |
1.UART 初始化 2.UART輸入輸出函式設計與實作 |
1H |
|
(六) 計時器與時間管理 |
1.System Timer 硬體介紹 2.jiffies 計數器實作 3.delay 函式設計 |
1H |
|
(七)中斷與事件處理 |
1.中斷向量表設置 2.Timer中斷初始化與觸發 3.中斷處理與UART輸出 |
2H |
|
(八) 任務切換與多工基礎 |
1.儲存與還原暫存器內容 2.使用jiffies作為時間片觸發任務切換 3. Round-Robin多工系統示範與實作 |
2H |