簡單說說U-boot的修改(轉)
簡單說說U-boot的修改(轉)[@more@]uboot是一個通用的免費開放原始碼的boot程式,支援很多的處理器。
以下是現在網上下載一個u-boot-1.1.1版本,用於at91rm9200系統的修改的例子。最後在redhat8.0上,用gcc2.95編譯透過。
在網上下載了uboot-1.1.1版本。要用於自己的at91rm9200的系統,這個系統的情況是:
SDRAM: 32Mbytes NCS1
FLASH: 8Mbytes NCS0
涉及到的檔案有四個:
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-1.1.1版本,用於at91rm9200系統的修改的例子。最後在redhat8.0上,用gcc2.95編譯透過。
在網上下載了uboot-1.1.1版本。要用於自己的at91rm9200的系統,這個系統的情況是:
SDRAM: 32Mbytes NCS1
FLASH: 8Mbytes NCS0
涉及到的檔案有四個:
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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-960975/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡單說說Restful APIRESTAPI
- 簡單說說iOS之WKWebView的用法iOSWebView
- 簡單說說webpack的配置檔案Web
- 先簡單說一說Java中的CopyOnWriteArrayListJava
- 誰說 JavaScript 簡單的?JavaScript
- 簡單說說ES6新特性
- 簡單說說linux關機命令Linux
- 簡單說說PHP優化那些事PHP優化
- MySQL實戰 | 06/07 簡單說說MySQL中的鎖MySql
- 簡單說區塊鏈區塊鏈
- sqlmap簡單中文說明SQL
- 開工大吉!簡單的說說公司的開發規範
- 簡單說說Java 定時任務框架---QuartzJava框架quartz
- 說說 Python 的變數以及簡單資料型別Python變數資料型別
- 簡單說說vue的父子元件,父子元件傳值和vuexVue元件
- 簡單說說我最常用的圖片載入庫 Picasso
- SQL Server之旅(11):簡單說說sqlserver的執行計劃SQLServer
- 簡單說說:JavaSE、JavaEE、JavaME這三大體系Java
- jarsigner 簡單使用說明JAR
- JavaScript字串api簡單說明JavaScript字串API
- 誰說 JavaScript 很簡單了?JavaScript
- 簡單說兩句 Like 的優化優化
- TCP 協議簡單說明【PHP 碼農的現身說法】TCP協議PHP
- 簡單給初學者說說JAVA語言的幾個特點Java
- 說說圖靈社群的下單圖靈
- Emacs簡易操作說明(轉)Mac
- Object TreeView簡要說明 (轉)ObjectView
- 過等保流程簡單說明
- JavaScript陣列api簡單說明JavaScript陣列API
- spring aop expression簡單說明SpringExpress
- NSString簡單細說(十)—— 字串的分解字串
- xming工具的簡單實用說明
- 說說JavaScript的型別轉換JavaScript型別
- Sql Server之旅——第十一站 簡單說說sqlserver的執行計劃SQLServer
- 快速學習nodejs系列:十、簡單說說nodejs官方APINodeJSAPI
- js便籤筆記(4)——簡單說說getAttributeNode()和setAttributeNode()JS筆記
- 簡說websocketWeb
- 【MEMORY】Oracle 共享池堆簡單說明Oracle