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系列的都支援,包括sead
tm ,sead-2
tm malta
tm, altas
tm2.基本上屬於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裝置 前期準備請看這裡這也是我當前移...