資料來源:
-----
歡迎各方洽談合作,務實/踏實追求共好。歡迎電機電子資工本科系學員,也很歡迎非電機電子資工本科系的學員加入學習嵌入式系統技術/尋求轉職成為研發工程師的行列。
孫文良 個人簡歷: https://sites.google.com/view/wenliangsun/
--------------------------
孫文良 (阿良的嵌入式系統技術學習區)
【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章】
分享嵌入式系統技術文章,開設嵌入式系統相關教學課程,可洽談: iws6645@gmail.com 簡歷: https://sites.google.com/view/wenliangsun/
資料來源:
-----
歡迎各方洽談合作,務實/踏實追求共好。歡迎電機電子資工本科系學員,也很歡迎非電機電子資工本科系的學員加入學習嵌入式系統技術/尋求轉職成為研發工程師的行列。
孫文良 個人簡歷: https://sites.google.com/view/wenliangsun/
--------------------------
孫文良 (阿良的嵌入式系統技術學習區)
【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章】
課程名稱: [台北全新規劃] ARM Cortex-A based平台之嵌入式Linux作業系統基礎建置實作 (結合板材實作)(自備NB)
課程資訊:
上課時間:
2023/12/2~12/30(六)每週六,9:00~16:00共30小時
上課時數:
30 小時
上課地點:
台北教育中心(台北市中正區博愛路80號3樓)
今年受到 清大 自強工業基金會 台北教育中心 邀請合作開課,目前開設課程如下 (於十月中旬的周六&周日開始):
(1) 課程代碼:12C049https://edu.tcfst.org.tw/edm/workplace_taipei/workplace.html
-----
歡迎各方洽談合作,務實/踏實追求共好。
個人簡歷: https://sites.google.com/view/wenliangsun/
--------------------------
孫文良 (阿良的嵌入式系統技術學習區)
【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章】
因為前陣子剛好trace到bootstrap相關的code,今天看到Youtube上的台大資工系的OS課程影片,所以就稍微探討一下關於Bootstrap這名詞的使用與定義差異,雖然這些名詞或許本來就難免會隨著年代及平台的差異而被混用。
該台大資工系課程影片中16:38開始的部分 (對應這篇po文的第一張截圖圖片) https://www.youtube.com/watch?v=OQiCacvx5rQ&t=997s
以下是探討的部分:
雖然boot就是源自於bootstrap的縮寫,但有些名詞如果要細究,似乎又有些在名詞定義有所差異的狀況可以探討。
後來發現上面那課程投影片以及說法是恐龍本(恐龍書)內的部分描述,而課程影片似乎是更簡化一些的PPT呈現與描述方式。
實際上如果是ARM(如Cortex-Ax系列) based的嵌入式SoC Linux系統,從bootROM到head.o、misc.o(被包含在被壓縮的kernel核心的zImage之中)之間包含許多階段的軟韌體程式。
在系統啟動/上電之初負責初始化hardware(例如課程影片照恐龍本內容所提到的CPU registers, device controller , memory)的程式,其實就嵌入式系統常見說法是bootloader (此處將這些名詞區分得詳細些) (註: 關於初始化硬體的部分,在常見的PC架構則是會有一部分稱作BIOS,而在嵌入式系統通常將這些部分統稱為bootloader。所以若要對照常見的嵌入式系統架構的話,可對照或類似於嵌入式系統的bootloader的某一部分,如許多SoC內的boot ROM內的ROM code就是類似的其中一部分,當然其實也還包含ROM code之後的一些部分)。
因為有著上述被包含在被壓縮的kernel核心的zImage之中的head.o、misc.o等程式(注意,這篇po文所講的head.o指的並不是那個不包含一堆object file的那個Linux核心本尊vmlinux內的那個head.o,雖然它們都在zImage之中。另外要注意有兩種情況都叫作vmlinux),
所以若嚴格或精確一點來說(至少在開頭描述過的嵌入式系統上),或許 不適合 將 負責 繁複的硬體初始化 及 zImage階段的處理器配置(如快取、暫時關閉中斷訊號、準備C code執行環境等) 的head.o、負責解壓縮、重定址Linux kernel等步驟的misc.o等程式 都全部統稱為Bootstrap program或全部統稱為bootloader,因為head.o、misc.o等程式,主要是負責把被壓縮的OS核心zImage解壓縮 & 重新定址等等的動作的部分,而並不是負責所謂的initialize all aspect of the system hardware。
國外有一本有名的、介紹嵌入式Linux的書籍([1])的5.1.3節的內容是將Bootstrap program與Bootloader作出區隔,這本書將zImage之中的head.o與misc.o等程式歸類為Bootstrap program,但這樣的區隔方式也可能會造成混淆,畢竟boot這詞源自於bootstrap,會讓人覺得Bootstrap program原本就是bootloader不是嗎? 但head.o、misc.o也是屬於將OS kernel帶起的重要程式(只是不屬於我們常講的bootloader的範疇),所以我認為[1]這本書的作者會想要作出這種區隔也還算可以理解。
總結一下,簡單來說,在有跑Linux的嵌入式系統中,負責課程影片內所指的(系統啟動/上電之初的)initialize all aspect of the system hardware(如memory)的階段通常稱為bootloader;而被包含於zImage的階段的head.o、misc.o等帶起核心的必要程式,已經不屬於我們常講的bootloader階段,
所以如果在OS課程中將這些部分都統稱為bootstrap program或bootloader,可能是會顯得比較rough一些。當然了,一般大學部的OS課程若要講得很詳細的話,或許也不容易,但如果是針對一般的PC系統講解,則負責最初initialize all aspect of the system hardware的應該是BIOS,在BIOS負責的任務結束之後才換成bootloader(bootstrap program)接手。
另外,其實bootloader初始化系統硬體之後,也不一定就要接著帶起一個OS kernel,也可以是接著帶起non-OS program,端看實際的應用需求而定。
題外話,關於開機初始化memory的方面 (於bootloader的階段),小弟個人過去在科技業工作時,曾實際負責過相關內容多次 (bring up過多款會跑Linux/Android的SoC系統晶片的公版軟韌體)。
Ref: [1] Embedded Linux Primer: A Practical Real-World Approach, 2/e,https://www.tenlong.com.tw/products/9780137017836
孫文良 (阿良的嵌入式系統技術學習區)
個人簡介: https://sites.google.com/view/wenliangsun/
【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先參考 課程招生網頁連結】
課程涵蓋內容如下:
本園區之FB粉絲專頁如下:
--------------------
孫文良 (阿良的嵌入式系統技術學習區)
個人簡介: https://sites.google.com/view/wenliangsun/
【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,請先參考 課程招生網頁連結】
Embedded Linux系列之Bootloader課程簡介
Bootloader 為 開機啟動程式,其主要任務簡而言之為在電腦系統上電(Power ON)之初的階段,對系統硬體(包含CPU自身、Clock系統、周邊裝置、DRAM、Storage device等)進行一系列的初始化,並負責啟動作業系統核心(OS Kernel)。
註: 若拿SoC based嵌入式系統和PC系統作比對,粗略而言,則嵌入式系統的bootloader,即涵蓋了PC系統的BIOS及bootloader的功能(意思就是負責上電之初的硬體初始化與帶起OS Kernel等工作,在嵌入式系統上都是由bootloader負責)。這只是作個粗略的比對/比擬,當然兩種系統在細節上還是有些差異。
本課程將會帶領學員:
UBoot於BeagleboneBlack開發板之執行之畫面 (尚未置入Linux Kernel與filesystem)如下影片。
註: 實驗用開發板並不一定只限於BeagleboneBlack,若學員希望使用/學習其它款式的硬體平台,請事先與講師討論協議。
本園區之FB粉絲專頁如下:
--------------------
孫文良 (阿良的嵌入式系統技術學習區)
個人簡介: https://sites.google.com/view/wenliangsun/
【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先參考 課程招生網頁連結】