Uboot 引導內核時載入地址與入口地址問題

来源:https://www.cnblogs.com/GyForever1004/archive/2018/02/28/8485079.html
-Advertisement-
Play Games

如果使用 mkimage 生成內核鏡像文件的話,會在內核的前頭加上了 64 bytes 的信息頭,供建立 tag 之用。bootm 命令會首先判斷 bootm xxx 這個指定的地址 xxx 與 a 指定的載入地址是否相同。 如果不同的話會從這個地址開始提取出這個 64 bytes 的頭部,對其進行 ...


如果使用 mkimage 生成內核鏡像文件的話,會在內核的前頭加上了 64 bytes 的信息頭,供建立 tag 之用。bootm 命令會首先判斷 bootm xxx 這個指定的地址 xxx 與 -a 指定的載入地址是否相同。

如果不同的話會從這個地址開始提取出這個 64 bytes 的頭部,對其進行分析,然後把去掉頭部的內核覆制到 -a 指定的載入地址去運行;
如果相同的話那就讓其原封不同的放在那,但 -e 指定的入口地址會推後 64 bytes,以跳過這 64 bytes 的頭部。
我們來看看這兩種不同的情況:

1) mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -n linux-3.0.2 -d zImage uImage

這種情況,只能把 uImage download 到 0x30008000 的位置上,否則從 0x30008040 是啟動不了的。

原因:如果將 uImage (加了頭的鏡像文件)下載到不同於指定載入地址的地方,則會進行上面的操作,將去掉頭部的內核拷貝到指定的載入地址,此時載入地址和入口地址需要是相同的,因為已經沒有鏡像頭了,所以此時入口地址也應該為 0x30008000,而不應該再加上 64 個位元組。所以在構建鏡像頭部中的載入地址和入口地址時千萬要考慮下載的地址,否則將會啟動失敗。

2) mkimage -A arm -O linux -T kernel -C none -a 30008000 -e 30008000 -n linux-3.0.2 -d zImage uImage

這種情況 download 地址隨便。 還是按上面說的,因為將載入地址和入口地址設置成同樣的地址,在下載到任意地址時,將去掉頭部的內核鏡像拷貝到指定載入地址後,可以直接從載入地址開始啟動。但是要是下載地址和指定載入地址相同呢?也就是下麵的:

如果 tftp 下載地址為 0x30008000 , 此時因為下載地址和指定載入地址相同,所以就不會搬動,內核直接從指定載入地址自解壓,但是因為指定的入口地址也是 0x30008000,這樣的話內核就不會正常啟動,所以還得將入口地址往後推後 64 個位元組從 0x30008040 啟動就能 OK 。

所以在配置下載地址和入口地址是就有以下兩種情況:

1) mkimage -n 'linux' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d zImage uImage

載入地址和入口地址相同

tftp 0x31000000 uImage

bootm 0x31000000

下載地址可以任意放(除了下載地址與載入地址相同的情況)。

2) mkimage -n 'linux' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage uImage

入口地址在載入地址後面64個位元組

tftp 0x30008000 uImage

bootm 0x30008000

下載地址一定要在指定的載入地址上。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 剛寫完自定義頭像模塊,記錄一下剛纔的過程,直接上代碼: 在講位元組轉化為string時,網上很多資料都是 string str = System.Text.Encoding.UTF8.GetString(imgByte); 但是親測返回值是亂碼,上傳的PHP時無法解析,所以嘗試使用Convert.To ...
  • 1.Bytes >StringSystem.Text.Encoding.Unicode.GetString(bytes, 0, bytes.Length) 2.String >BytesSystem.Text.Encoding.Unicode.GetBytes(str) ...
  • 第一種最簡單,但沒有考慮線程安全,在多線程時可能會出問題,不過俺從沒看過出錯的現象,表鄙視我…… public class Singleton{ private static Singleton _instance = null; private Singleton(){} public stati ...
  • There is also a quick remedy for the emergency situation when your root partition runs out of disk space. There is a feature specific to ext3 and ext4 ...
  • 僅供自己學習使用 一、Makefile介紹 Makefile 或 makefile: 告訴make維護一個大型程式, 該做什麼。Makefile說明瞭組成程式的各模塊間的相互 關係及更新模塊時必須進行的動作, make按照這些說明自動地維護這些模塊。 執行make命令時,需要一個 Makefile  ...
  • 搭建ssr伺服器 首先,先說一下,為什麼這麼久沒寫博客。 一方面,最近在搭建自己的伺服器。挺忙的。 另一方面,寫了許多有關伺服器構建,網站構建的word。但沒有潤色,所以打算等自己伺服器做好了整理一下再發。 不過今天,我先來寫一個編程人員都要用到的東西--SSR 程式員總是有著許多東西要從外網下載, ...
  • 本專欄由“痞子衡隨筆”再次更名為“痞子衡嵌入式”,馬甲雖多,專註嵌入式技術領域的初衷不變,特此通知! ...
  • 前言 學習hadoop的時候難免需要部署一些子伺服器,但是如果在每檯子伺服器上面都去部署的話,那麼上千上萬台將會累垮你,所以這時候scp命令就顯得尤為重要了。 一、關於scp命令 1.1scp命令介紹 scp是secure copy的簡寫,用於在Linux下進行遠程拷貝文件的命令,和它類似的命令有c ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...