韌體與載入程式與使用者程式碼
任何嵌入式產品在上電後,開始工作前,有一個重要的階段:由載入程式 Bootloader 來為硬體做系列的初始化操作,如果帶作業系統也會將載入引導作業系統。
那麼,載入程式裝在什麼位置呢?
韌體(firmware),是一種嵌入在硬體裝置中的軟體。通常它是位於特殊應用積體電路(ASIC)或可程式設計邏輯器件(PLD)之中的快閃記憶體或EEPROM或PROM裡,有的可以讓使用者更新。可以應用在非常廣泛的電子產品中,從遙控器、計算器到計算機中的鍵盤、硬碟,甚至工業機器人中都可見到它的身影。
顧名思義,韌體的所在是位於軟體和硬體之間的。像軟體一樣,他是一個被計算機所執行的程式。然而它是對於硬體內部而言更加貼近以及更加重要的部分,而對於外在的世界而言較無重要的意義。 -------維基百科
簡言之,韌體是硬體廠商為自己的硬體設計了一些封裝。對於晶片來說,由晶片廠商提供的 已經固化好了的一段韌體程式碼,在晶片上電之後,由韌體程式碼的具體實現來確定如何初始化CPU,並確定 Bootloader 的起始地址(也許讀取指定的PIN腳來確定程式碼的啟動地址)。
而載入程式就是我們學習的Bootloader如U-Boot,
載入程式(通常是組合語言和C語言一起編寫的)在這裡主要做了兩件事情
- 初始化相關硬體
- 引導載入核心
PS:彙編程式碼只佔很少的一部分
Bootloader啟動有兩個階段:彙編執行階段和C執行階段
Bootloader啟動有兩次搬移:Bootloader程式的自搬移(從NorFlash到記憶體RAM)和搬移核心
Bootloader啟動有兩個初始化:基本硬體初始化和大部分硬體初始化
使用者程式碼,就是我們要在前面的基礎上實現具體功能的程式碼了。