基於mips架構的uboot啟動流程(4)

2021-06-12 17:04:45 字數 1562 閱讀 9324

特點和功能

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.基本...