一:bootloader的認識:
bootloader的作用是初始化硬體裝置,準備好軟體環境,將作業系統核心複製到記憶體中,然後啟動核心。
為了開發方便,工程師們增強了bootloader的功能,實際上,在生產的產品中並不需要這些功能,為了提高我們的開發效率而增加功能而已。
bootloader跟硬體關係緊密,像u-boot這種比較兇猛的bootloader也還是有些cpu架構不支援的,像u-boot這種bootloader如果想拿來用在自己的板子上,也是需要進行一些一直的。
u-boot是乙個功能強大,支援很多cpu架構,開源的bootloader。
二:bootloader啟動方式
啟動載入模式:bootloader執行起來後,直接把核心拷貝到ram中執行。
mini2440一上電,如果從nand flash啟動,從片內的ram的0位址開始執行。嵌入式開發板中,需要把儲存器rom或flash等對映到這個位址。mini2440從nand flash啟動的話,已經預設是從0位址開始執行的。
四:板子和主機間傳輸檔案時,使用到的協議包括如下:
串列埠:xmodem/ymodem/zmodem 簡單,速度慢
網路:tftp,nfs 要求:主機上要開啟tftp、nfs服務
其他:usb
五:嵌入式linux系統的4個層次(軟體角度):
1.引導引導程式:韌體中的boot的**(可選)和bootloader(主要目的為載入核心到記憶體中,然後啟動核心。上電後執行的第乙個程式)
2.linux核心:為自己的板子定製的核心以及核心的啟動引數(啟動引數是為了告訴核心的,包含記憶體的大小,以及命令列引數等等)。
也可以是核心預設的。
3.檔案系統:包括根檔案系統和建立與flash記憶體裝置之上的檔案系統。
檔案系統包含了系統啟動所必須的檔案,包括:核心啟動後執行的第乙個程式(init),給使用者提供操作linux的控制介面的shell程式,應用程式所依賴的庫等。 這些必須、基本的檔案合稱為根檔案系統。它們存放在乙個分割槽中,linux啟動後首先掛接在這個分割槽。其他分割槽上的所有目錄、檔案的集合也稱為檔案系統。
4.使用者應用程式:儲存在檔案系統中。在使用者應用程式與核心層之間may be 有乙個嵌入式圖形使用者介面(嵌入式gui)。eg:qtopia ,minigui,qt.
關於4個程式的表述如下圖所示:截圖來自(韋東山的嵌入式linux應用開發)
uboot移植之uboot和kernel的引數傳遞
從uboot啟動核心的形式thekernel 0,machid,bd bi boot params 可以看出uboot給核心傳遞了3個引數,第1個是0,第2個是機器碼,第3個是引數列表在sdram的起始位置 剛好滿足一下呼叫核心的條件 r0 0。r1 機器型別id r2 啟動引數標記列表在ram 中...
uboot移植之uboot命令體系解析
1 回歸到main loop uboot啟動第二階段的最後,進入死迴圈main loop 函式,命令列中沒輸出一次命令,就會執行一次main loop函式,完成一次命令的獲取 解析和執行。2 uboot命令體系的實現原理 uboot中裡面維護了很多命令,每個命令對應乙個結構體變數,當我們在命令列輸入...
uboot移植 uboot啟動回顧
一 uboot啟動的第一階段start.s 路徑uboot cpu s5pc11x start.s 1 include 標頭檔案包含,config.件原始碼中不存 在,配置後自動生成 路徑 include linux config.h 2 include 標頭檔案包含,version.件原始碼中不存...