特點和功能
u-boot
yamon
支援的 cpu 和 board
1. 支援種類繁多,包括 arm 的各個系列 ,ppc,mips
2. mips 的支援較差,目前支援 au1100,au1500 系列, 4kec 的需要自己移植
( 工作量主要在起始**的初始化部分,包括 cahe 和中斷的初始化 )
1. 基本上對 mips 系列的都支援 , 包括 seadtm ,sead-2tm maltatm, altastm
2. 基本上屬於 mips 系列專用,未聽說過將 yamon 應用去其他架構的例項(可行性低,相當於重寫)
image 大小
通常 200k~300k 左右,可對一些功能進行裁減至 100k 下
一般最小 500k
主要包括初始** (start code)+ 大端 image+ 小端 image, 通過修改,可裁減掉一種 endian 的 image, 大概減少 200k 左右
最小化裁減:可能接近 100k
**結構
1. 採用了將平台無關和平台相關的**分開處理的方法
1. 採用了將平台無關和平台相關的**分開處理的方法
核心啟動方式
串列埠, tftp ,本地 , dhcp
串列埠, tftp ,本地
核心支援格式
vmlinux, 或 gzip 壓縮,或 bzip2 壓縮,或 zimage
只支援原始的 vmlinux, 網上有人也嘗試修改過 yamon 來支援 zimage(amd 的 1500 開發板提供了支援 zimage 的補丁 )
除錯功能
只有簡單的 go
功能強大,支援 gdb ,還有異常處理等
可移植性
對於移植到新的板子或 cpu ,需要修改的目錄結構較清晰,容易新增
因為 yamon 沒有採用大量的 ifdef 來控制選項,是通過 yamon 啟動後自動 detect 到 cpu 和 board 的型別的,所以修改稍微麻煩
可裁減性
結構清晰,易於裁減
結構也較清晰,但由於存在較多 yamon 自動檢測的部分,裁減性稍差
可擴充套件性
易於擴充套件,對於擴充套件 shell 命令和增加 driver 較為容易
對 shell command 和 driver 的支援也較易新增
總結u-boot 是乙個較為通用的 bootloader, 主要目的是啟動核心,同時給開發者提供較為方便的移植性, u-boot 的擴充套件功能什麼豐富 ;
yamon(yet another monitor) 是主要針對 mips 系列 cpu 的乙個功能強大的 rom monitor 程式 ,yamon 的擴充套件功能較為單一 ;
結論使用 u-boot 作為開發用 bootloader
下面是yamon的目錄分析和啟動流程圖(主要根據參考資料裡的總結)
yamon目錄結構
yamon啟動流程
3.3. u-boot目錄結構
根據上面的比較,我們簡單分析一下u-boot的**目錄結構,描述其**主要功能,如下圖所示:
基於mips架構的uboot啟動流程(3)
要注意mips具有流水線可見性,所以跟在跳轉指令後的下一條指令,在執行跳轉到的地方前,都會執行,這個叫分支延遲。但是編譯器會隱藏該特性,但可以通過設定 set noreorder 來禁止編譯器重新組織 順序。每個板子都有自己的lds檔案。這個主要是用來說明編譯生成的指令,及執行過程中用到的資料放置的...
基於mips架構的uboot啟動流程(4)
特點和功能 u boot yamon 支援的 cpu 和 board 1.支援種類繁多,包括 arm 的各個系列 ppc,mips 2.mips 的支援較差,目前支援 au1100,au1500 系列,4kec 的需要自己移植 工作量主要在起始 的初始化部分,包括 cahe 和中斷的初始化 1.基本...
基於mips架構的uboot啟動流程(4)
特點和功能 u boot yamon 支援的 cpu 和 board 1.支援種類繁多,包括 arm 的各個系列 ppc,mips 2.mips 的支援較差,目前支援 au1100,au1500 系列,4kec 的需要自己移植 工作量主要在起始 的初始化部分,包括 cahe 和中斷的初始化 1.基本...