u boot mips移植分析

2021-04-13 09:43:05 字數 4100 閱讀 7610

1.    引言

文章是2年前移植u-boot時候分析的,u-boot方面文章比較多,但是mips方面的稍微少一點,因此貼上來就當資料蒐集貼吧.

(note: 上傳後和原圖有些出入,不知道什麼原因,不過總體框圖還是正確的)

1.1.    參考資料

詹榮開特點和功能

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的**目錄結構,描述其**主要功能,如下圖所示:

4.    設計移植

4.1.    啟動流程

下面我們詳細分析u-boot的啟動流程,並指出針對具體的硬體,啟動流程中需要修改的**,如下圖所示:

4.2.    移植分析

根據上述分析,我們**移植也包括三方面:

(1)    片級移植:

片級移植主要是針對具體cpu的初始化**的修改,針對我們的mips平台,主要包括: a) 通用暫存器的初始化

b) cp0的初始化(status, config, watch, count, compare, etc.)

c) watchdog初始化

d) cache初始化

e) tlb初始化

(2)    板級移植

a)    串列埠驅動

b)    flash讀寫驅動(nor, nand)

c)    hd讀寫驅動

d)    網絡卡驅動

(3)    功能層擴充套件

4.3.    修改**

主要修改的**說明如下:

(1)    makefile 新增開發板的編譯支援;

(2)    include/configs/myboard.h 開發板的定義,啟動引數等;

(3)    cpu/mips/start.s 修改初始化**和入口;

(4)    board/myboard/flash.c 對應的nor flash驅動;

(5)    board/myboard/myboard.c 對應的板級初始化**;

(6)    board/myboard/lowlevel_init.s 初始化硬體的彙編**;

(7)    board/myboard/serial.c 串列埠驅動;

(8)    drivers/rtl8019.h drivers/rtl8019.c 修改rtl8019驅動的暫存器定義等。

5.    擴充套件功能

以下的功能是根據以後開發除錯的不同需求,有可能需要新增的功能

5.1.    logo功能

logo功能在產品級使用中需要,在一般開發中可不使用,目前使用簡單的寫rgb資料來實現logo功能。

5.2.    nor flash驅動

nor flash的讀取是不需要驅動的,如果需要儲存資料到nor flash,或通過bootloader提供燒寫功能,就必須實現nor flash驅動, 由於最終產品不會有nor, 且目前開發板nor已有燒寫工具,因此未實現nor flash驅動。

5.3.    nand flash驅動

在後期的開發板,將使用nand flash作為儲存介質,如果需要使用u-boot作為開發用bootloader,需要將nand flash驅動移植到u-boot中。

5.4.    ata 驅動

在後期的開發板,如果使用硬碟作為儲存介質,如果需要使用u-boot作為開發用bootloader,需要將ata驅動移植到u-boot中。

5.5.    檔案系統解析

目前u-boot支援ext2, fat等,如果需要支援其他檔案系統,需要移植對應的**。

u boot mips移植分析

1.引言 文章是2年前移植u boot時候分析的,u boot方面文章比較多,但是mips方面的稍微少一點,因此貼上來就當資料蒐集貼吧.note 上傳後和原圖有些出入,不知道什麼原因,不過總體框圖還是正確的 1.1.參考資料 詹榮開特點和功能 u boot yamon 支援的cpu和board 1....

uClinux移植和分析 2

printf和標準輸出 上次寫到main函式的引數傳遞.現在繼續往下進行.最近忙實驗室的事情,看了一周的文章,也沒啥進展,週末寫點技術貼,放鬆一下 進入main函式後,就要呼叫printf hello world n 了.順便將c語言引數傳遞提一下.字串 hello world n 編譯器是當作字串...

Adb移植(一)簡單分析

2013 06 14 10 43 41 標籤 adb移植 原始出處 作者資訊和本宣告。否則將追究法律責任。adb適用於電腦與android裝置進行除錯的工具。可以 執行裝置的shell 命令列 管理模擬器或裝置的埠對映 將本地apk軟體安裝到模擬器或android裝置 前期準備請看這裡這也是我當前移...