uboot中usb storage啟動方法

2021-06-25 09:45:02 字數 630 閱讀 8933

這種方法比較簡單,就是利用uboot自帶命令usbboot來實現啟動,也算是最粗糙的一種。

1.在配置檔案中新增一系列有關usb的支援。

uboot編譯啟動後輸入

usb start

usbboot 0x30800000 0:1

這裡的0是usb裝置0,1是第一分區

當然,這裡肯定會失敗,因為usb storage中還沒有必須的核心檔案呢。

2.usbboot是從指定分割槽的起始位置拷貝核心檔案到指定的位址。

因為沒有找到合適的拷貝工具,於是使用uboot自帶的usb命令進行複製。

先把核心拷貝到記憶體,再從記憶體拷貝到usb storage。

tftp 0x30800000 uimage_n35

usb write 0x30800000 0x1f80 0x1000

這裡要注意的一點是起始block和blknum都應該是16進製制,如果覺得麻煩,可以把do_usbboot中獲取引數的******_stroul改為10進製。

核心檔案準備完畢後,最終的啟動命令為:

usb start; usbboot 0x30800000 0:1; bootm 0x30800000 //因為usbboot會自動識別分割槽起始位置的核心頭,核心頭中指明了核心大小。

u boot中重定位

在學習 u boot的時候,對程式重定位不理解,不知道為什麼要進行重定位,在網上查詢資料學習了一下。首先,要了解一下乙個程式的生成的四個步驟 預處理 編譯 彙編 鏈結。經過這四步,最終才生成可執行檔案bin檔案。預處理主要是巨集定義的展開,編譯主要是進行語法此分析,如我們常見的語法錯誤,某些函式未定...

u boot中新增命令

看下ping命令實現的例子 檔案common cmd net.c static int do ping cmd tbl t cmdtp,int flag,int argc,char const argv printf host s is alive n argv 1 return 0 u boot ...

Uboot中 TEXT BASE的理解

都知道u boot分為兩個階段,第一 t階段是 cpu arm920t start.s中 在flash上執行 一般情況下 完成對硬體的初始化,包括看門狗,中斷快取等,並且負責把 搬移到sdram中 在搬移的時候檢查自身 是否在sdram中 然後完成c程式執行所需要環境的建立,包括堆疊的初始化等,最後...