本課程將透過ARM開發工具模擬器操作,以實際瞭解ARM核心的指令集、記憶體處理器(MMU)、中斷處理等。課程使用開源硬體平台Raspberry Pi實作一個ARM BootLoader,從中你可以了解從最底層的ARM Assembly到C main函式所發生的每一件事。實作中也以bare-metal (Non-OS)方式驅動如,GPIO、UART、TIMER等I/O,另也以實際code說明Raspberry Pi的SoC晶片(BCM2835/BC2836)中,ARM CPU如何和GPU通訊。最後,有鑑於學員在實際工作上所使用的開發工具大多為開發套件外,最後將講習如何將程式轉換為GNU工具可使用的原始碼。<<對於想要從無到有開發一套ARM-based作業系統,本課程絕對是一個OS開發者的前哨站>>
1.對ARM架構和其底層系統程式開發有興趣者。
2.想從事ARM BSP development、ARM Bootloader/BIOS programming、研發相關工作者。
3.須具C程式設計基礎。
什麼是Bare Metal 開發 ?
Bare Metal or (Bare Machine) 開發指的是在沒有OS作業系統的環境下來開發程式, 在這種環境下所開發出來的產物, 像是BIOS程式, Boot Loader 這類的程式。
藉由Bare Metal 開發, 我們可以學些什麼?
1.ARM 的CPU架構及組合語言
2.ARM Exception Vector Table & ARM例外處理
3.Boot From Where ? CPU initialize & DRAM controller initialize
4.How to write Startup Code ? 如何撰寫Linker Script
5.SoC 中斷控制器 & ISR (Interrupt Service Routine)
6.在沒有OS情況下要如何撰寫程式, 包含Application或 Chip Driver
7.CPU和GPU如何通訊?
• 課程總時數 : 12小時
• 觀看天數:30天
• 課程所附教材 : 精編講義、範例程式碼
ARM Boot Loader 數位課程預覽
沒有它,什麼都不會動!ARM Bootloader驅動程式設計是嵌入式系統最底層的核心技術,如同電腦BIOS的角色。這技術就是談晶片開機的動作,從ARM初始化、DRAM初始化、Flash初始化、SoC中斷控制器到一般GPIO、UART等驅動。有能力設計Bootloaer你必須對你的CPU架構很清楚,例如使用ARM就必須了解ARM架構及指令集,了解Linker/Linker Script作用, 及了解你的SoC晶片手冊(DataSheet)。Bootloader設計工作是位在嵌入式系統非常初期的階段,這對於IC設計公司或是會自己開IC的公司,是一項非常重要的核心技術。然而大多數系統廠商不常碰到這麼低階的開發技術,但若能擁有此項技術也會有非常多的幫助,因為有些工作是可以自己做的:如DRAM、Flash的容量的變更(這不是換chip而已) 要如何改code、如何設計韌體救援模式(當韌體更新失敗時)、如何設計雙系統開機選擇,如平板可以選擇Windows 10或Android 開機。
在台灣很少有大學能夠開這種課程,因此初入職場的工程師,幾乎沒有人知道這項技術核心。在業界中因為會的人少,薪水更是高人一等,最起碼7萬元起跳!
事實上,這個技術的學習是能夠有能力自幹一套作業系統的開始。