簡單說說U boot的修改

2021-04-08 19:29:04 字數 1686 閱讀 1944

涉及到的檔案有四個:

common.h

flash.c

flash.h

」./board/at91rm9200dk/config.mk」

以下簡單的說說。

一、首先讀讀uboot自帶的readme檔案,了解了乙個大概。

二、看看common.h,這個檔案定義了一些基本的東西,幷包含了一些必要的標頭檔案。再看看flash.h,這個檔案裡面定義了flash_info_t為乙個struct。包含了flash的一些屬性定義。並且定義了所有的flash的屬性,其中,amd的有:amd_id_lv320b,定義為「#define amd_id_lv320b 0x22f922f9」。

三、對於「./borad/at91rm9200dk/flash.c」的修改,有以下的方面:

「void flash_identification(flash_info_t *info)」這個函式的目的是確認flash的型號。注意的是,這個函式裡面有一些巨集定義,直接讀寫了flash。並獲得id號。

四、修改:」./board/at91rm9200dk/config.mk」為

text_base=0x21f80000 為text_base=0x21f00000 (當然,你應該根據自己的板子來修改,和一級boot的定義的一致即可)。

五、再修改」./include/configs/at91rm9200dk.h」為

修改flash和sdram的大小。

六、另外乙個要修改的檔案是:

./borad/at91rm9200dk/flash.c。這個檔案修改的部分比較的多。

1.   首先是orgdef的定義,加上目前的flash。

2.   接下來,修改」#define flash_bank_size 0x200000」為自己flash的容量

3.   在修改函式flash_identification(flash_info_t * info)裡面的列印資訊,這部分將在u-boot啟動的時候顯示。

4.   然後修改函式flash_init(void)裡面對一些變數的賦值。

5.   最後修改的是函式flash_print_info(flash_info_t * info)裡面實際列印的函式資訊。

6.   還有乙個函式需要修改,就是:「flash_erase」,這個函式要檢測先前知道的flash型別是否匹配,否則,直接就返回了。把這裡給注釋掉。

七、接下來看看sdram的修改。

這個裡面對於「size」的定義都是基於位元組計算的。

只要修改」./include/configs/at91rm9200dk.h」裡面的

「#define phys_sdram_size 0x200000」就可以了。注意,size是以位元組為單位的。

八、還有乙個地方要注意

就是按照目前的設定,一級boot把u_boot載入到了sdram的空間為:21f00000 -> 21f16b10,這恰好是sdram的高階部分。另外,bss為21f1ae34。

九、編譯後,可以寫入flash了。

1.   壓縮這個u-boot.bin

「gzip –c u-boot.bin > u-boot.gz」

壓縮後的檔案大小為:

43kbytes

2.   接著把boot.bin和u-boot.gz燒到flash裡面去。

boot.bin大約11kbytes,在flash的0x1000 0000 ~ 0x1000 3fff

簡單說說U boot的修改

sdram 32mbytes ncs1 flash 8mbytes ncs0 涉及到的檔案有四個 common.h flash.c flash.h board at91rm9200dk config.mk 以下簡單的說說。一 首先讀讀uboot自帶的readme檔案,了解了乙個大概。二 看看comm...

簡單說說MPEG

mpeg 1 mpeg 2和mpeg 4。mpeg 3 原本目標是為高畫質晰度電視 hdtv 設計,隨後發現mpeg 2已足夠hdtv應用,故mpeg 3的研發便中止。音訊物件 video audio objects 的編碼 3d內容 低位元率編碼 low bitrate encoding 和數字版...

簡單說說委託

在c 中,大多時候,方法的引數是資料,但有時我們會想將 方法 作為引數,這時,我們就可以用委託。委託一般情況下會和事件一起使用,事件說白了也是特殊的乙個方法。先看個例子吧 有很多方法,比如求平方,求階乘 想讓使用者輸入值,求該值的平方,階乘 using system using system.col...