使用MfgTool燒寫前需準備的文件

一.? 簡介

本文我們就來學習,如何將我們編譯的 uboot,zImage(內核鏡像),xxx.dtb設備樹文件,還有制作的根文件系統,這四個文件燒寫到開發板中,最后 開發板能正常啟動。

本文這里使用 NXP(恩智浦)官方提供的 MfgTool燒寫工具,燒寫我們自己的文件。

二.? 使用MfgTool燒錄前準備的文件

本文使用 NXP(恩智浦)官方提供的 MfgTool燒寫工具燒寫系統。

具體使用 mfgtools-without-rootfs.tar.gz 燒寫工具,即帶文件系統的這個燒寫工具。

我這里所使用的 ALPHA開發板是 nand-Flash版的,所以,這里所要燒錄的 uboot,zImage,與設備樹文件都必須是針對 nand-Flash版的。而 根文件系統rootfs沒有 EMMC或 Nand-Flash的區分,無非就是 EMMC容量大一些(比 nand-Flash版開發板),根文件系統中也可以添加比 Nand-Flash版開發板多一些的其他文件或程序。

需要準備燒寫的文件:

(1)? 自己移植編譯出來的 uboot 可執行文件: u-boot.imx
(2)? 自己移植編譯出來的 zImage 鏡像文件和開發板對應的 .dtb( 設備樹 ) ,對于 I.MX6U
ALPHA 開發板來說就是 imx6ull-alientek-emmc.dtb
(3)? 自己構建的根文件系統 rootfs ,這里我們需要對 rootfs 進行打包。

1.? uboot 文件

uboot使用 之前我們一直使用的 NXP 官方提供的 uboot源碼編譯,因為之前一直使用正點原子的 MfgTool燒錄工具燒錄的根文件系統,同時,也為了開發板通過 tftp服務可以從 ubuntu中加載 zImage和設備樹文件,所以,uboot源碼更改了 nand-Flash版對應的 bootargs參數值。

這里需要將 bootargs參數更回到 NXP官方提供的值。

打開 include/configs/mx6ull_alientek-nand.h文件,找到nand-Flash對應的 bootargs參數設置代碼,如下代碼:

#if defined(CONFIG_SYS_BOOT_NAND)
#define CONFIG_EXTRA_ENV_SETTINGS \CONFIG_MFG_ENV_SETTINGS \"panel=TFT43AB\0" \"fdt_addr=0x83000000\0" \"fdt_high=0xffffffff\0"	  \"console=ttymxc0\0" \"ipaddr=192.168.1.50\0" \"ethaddr=b8:ae:1d:01:00:00\0" \"gatewayip=192.168.1.1\0" \"serverip=192.168.1.66\0" \"netmask=255.255.255.0\0" \"bootargs=console=ttymxc0,115200 ubi.mtd=5 "  \"root=ubi0:rootfs rootfstype=ubifs "		     \CONFIG_BOOTARGS_CMA_SIZE \"mtdparts=gpmi-nand:4m(u-boot),128k(env),1m(logo),1m(dtb),8m(kernel),-(rootfs)\0"\"bootcmd=tftp 0x80800000 zImage;"\"tftp ${fdt_addr} imx6ull-alientek-nand.dtb;"\"bootz 0x80800000 - ${fdt_addr}\0"
else
.........................................

將上面的代碼更改為如下:

#if defined(CONFIG_SYS_BOOT_NAND)
#define CONFIG_EXTRA_ENV_SETTINGS \CONFIG_MFG_ENV_SETTINGS \"panel=TFT43AB\0" \"fdt_addr=0x83000000\0" \"fdt_high=0xffffffff\0"	  \"console=ttymxc0\0" \"bootargs=console=ttymxc0,115200 ubi.mtd=4 "  \"root=ubi0:rootfs rootfstype=ubifs "		     \CONFIG_BOOTARGS_CMA_SIZE \"mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),1m(misc),-(rootfs)\0"\"bootcmd=nand read ${loadaddr} 0x4000000 0x800000;"\"nand read ${fdt_addr} 0x5000000 0x100000;"\"bootz ${loadaddr} - ${fdt_addr}\0"
#else
.......................................

重新編譯 uboot源碼,生成的 u-boot.imx 文件備用。

2.? 內核鏡像 zImage 和 .dtb設備樹文件

Linux內核鏡像文件 zImage 與設備樹文件 也是 NXP官方的 Kernel源碼編譯生成的,是前面我們在 NXP官方 kernel源碼的基礎上做改動,最終編譯出的 nand-Flash版的? zImage和 設備樹文件 imx6ull-alientek-nand.dtb 。

zImage所在目錄: linux-imx-rel_imx_4.1.15_2.1.0_ga/arch/arm/boot

imx6ull-alientek-nand.dtb 所在目錄:/linux-imx-rel_imx_4.1.15_2.1.0_ga/arch/arm/boot/dts

這兩個文件 留待備用。

3.? 自制的根文件系統rootfs

要燒錄開發板上的 根文件系統,使用前面我制作的 rootfs。我所制作的 根文件系統rootfs 在 ubuntu系統下的 /linux/nfs_File 目錄下。

這里我們需要對 rootfs 進行打包,進入Ubuntu 中的 rootfs 目錄中,然后使用 tar 命令對其進行打包,命令如下:

wangtian@wangtian-virtual-machine:~/linux/nfs_File$ cd rootfs/
wangtian@wangtian-virtual-machine:~/linux/nfs_File/rootfs$ tar -cvjf rootfs.tar.bz2 *

完成以后會在 rootfs 目錄下生成一個名為 rootfs.tar.bz2 的壓縮包:
wangtian@wangtian-virtual-machine:~/linux/nfs_File/rootfs$ ls
中文測試  dev  hello    lib      mnt   root            sbin  tmp
bin       etc  hello.c  linuxrc  proc  rootfs.tar.bz2  sys   usr
wangtian@wangtian-virtual-machine:~/linux/nfs_File/rootfs$ 

三.? 更改待燒錄文件名

因為使用 NXP官方提供的 MfgTool工具進行燒寫,我所使用的開發板是 Nand-Flash版,所以,需要確認NXP的 MfgTool工具內部對應的 Nand-Flash版開發板所對應燒寫的四個文件是什么?即是哪個uboot文件,哪個內核鏡像 zImage,哪個設備樹文件以及哪個根文件系統。

注意:要燒寫我自制的 系統,就需要將自制的四個文件替換掉 MfgTool工具中對應 Nand-Flash版的四個文件!!!

1.? 確認 Nand-Flash版開發板對應的文件

主要替換下面兩個文件夾下的文件:

L4.1.15_2.0.0-ga_mfg-tools/mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/firmware

L4.1.15_2.0.0-ga_mfg-tools/mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/files

firmware 文件夾下替換三種文件:Uboot,zImage,xxx.dtb 設備樹文件

files文件夾下替換四種文件:Uboot,zImage,xxx.dtb 設備樹文件,文件系統rootfs

自制的文件準備好以后,還不能直接進行燒寫,必須對其進行重命名,否則的話 ucl2.xml 是識別不 出來的,前面講解 ucl2.xml 語法的時候已經說過了,將自制的文件分別改名為如下名字:即使左邊一列文件名改為右邊一列名字:

自制文件的名字重命名
u-boot.imx
u-boot-imx6ull14x14evk_nand.imx
zImage
zImage
imx6ull-alientek-emmc.dtb
zImage-imx6ull-14x14-evk-gpmi-weim.dtb
rootfs.tar.bz2
rootfs_nogpu.tar.bz2

注意:上面 NXP 官方對應 Nand-FLash版開發板的文件名,可以通過 MfgTool工具中結合 .vbs文件(mfgtool2-yocto-mx-evk-nand.vbs)與 ucl2文件可以確定。

自制的文件如下:

將以上四個文件改名后如下:

改名后文件分別替換 :

firmware 文件夾下替換三種文件:u-boot-imx6ull14x14evk_nand.imx,zImage,zImage-imx6ull-14x14-evk-gpmi-weim.dtb 設備樹文件

files文件夾下替換四種文件:Uboot,zImage,xxx.dtb 設備樹文u-boot-imx6ull14x14evk_nand.imx,zImage,zImage-imx6ull-14x14-evk-gpmi-weim.dtb 設備樹文件,文件系統rootfs_nogpu.tar.bz2

下一篇文章,學習使用 NXP官方提供的 MfgTool工具燒寫我自制的文件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214320.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214320.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214320.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【日志技術】附Logback入門教程

文章目錄 日志概論日志的體系Logback快速入門日志配置文件配置日志級別 日志概論 什么是日志?其實可以通過下面幾個問題來了解的。 系統系統能記住某些數據被誰操作,比如被誰刪除了?想分析用戶瀏覽系統的具體情況,比如挖掘用戶的…

一個簡單的Python自動化測試 logging 日志模塊,為何會難住一個工作6年的測試?

寫Python程序的時候, 我們經常需要寫日志, 以便調試程序,發現問題,以及查看程序的運行狀態。 Python自帶了logging模塊,可以將日志保存到.txt文件中, 也可以輸入到界面上。 我們希望日志有一定的格式, 比…

【性能優化】性能優化實戰

一、背景 在做code review的時候,經常會發現,因為開發習慣問題,很多研發人員喜歡在for循環中查詢數據庫。今天用一個真實例子,記錄一次查詢性能優化的例子 二、示例 代碼如下: classmethod fn_performance() def get_task_ins…

Linux常用調試工具gdb

程序編譯后,調試是十分重要的環節,如何更好更快的定位程序中的問題, 是加快程序開發進度的重要因素。Gdb 調試器是一款 GNU 開發組織并發布的 UNIX/Linux 下的程序調試工 具。GDB調試 編譯要點 對代碼進行編譯,注意一定要加上選項…

【C語言】【數據結構】自定義類型:結構體

引言 這是一篇對結構體的詳細介紹,這篇文章對結構體聲明、結構體的自引用、結構體的初始化、結構體的內存分布和對齊規則、庫函數offsetof、以及進行內存對齊的原因、如何修改默認對齊數、結構體傳參進行介紹和說明。 ? 豬巴戒:個人主頁? 所屬專欄&am…

Ubuntu——永久掛載/卸載硬盤

Ubuntu——永久掛載/卸載硬盤 一、掛載1. 查詢硬盤2. 格式化硬盤3. 掛載硬盤4. 開機自動掛載5. 查看掛載是否成功 二、取消掛載參考資料: 一、掛載 1. 查詢硬盤 sudo fdisk -l2. 格式化硬盤 # 格式化硬盤(/dev/sda)的文件系統,這里格式化為 ext4 系統…

面試經典150題(3-4)

leetcode 150道題 計劃花兩個月時候刷完,今天(第二天)完成了兩道(3-4)150: (26. 刪除有序數組中的重復項) 題目描述: 給你一個 非嚴格遞增排列 的數組 nums ,請你 原地 刪除重復出現的元素,使…

C#生成Token字符串

Token字符串來保證數據安全性,如身份驗證、跨域訪問等。但是由于Token字符串的長度比較長,可能會占用過多的空間和帶寬資源,因此我們需要生成短的Token字符串 方法一:使用Base64編碼 Base64編碼是一種常用的編碼方式&#xff0c…

測試:接口參數測試

接口參數測試是接口測試中非常重要的一部分,主要是為了驗證接口在不同參數輸入下的行為和響應。下面詳細介紹一下接口參數測試的相關內容: 參數必填與非必填測試:需要測試接口對必填參數和非必填參數的處理。對于必填參數,不提供…

【學習筆記】LLM for Education

ChatGPT has entered the classroom: how LLMs could transform education 前言IntroductionThe risks are realEmbracing LLMsIntroducing the AI tutorAugmenting retrievalWill it catch on?總結 前言 一篇來自Nature的文章,探討了教育行業的不同參與者&#x…

webSRc實現瀏覽器播放rtsp【海康】

先上代碼 <template><div>video的配置自己寫<video id"video" autoplay width"900" height"900"></video></div> </template><script> export default {name: index1,data() {return {webRtcServer: …

WampServer本地部署結合內網穿透實現公網訪問本地服務

文章目錄 前言1.WampServer下載安裝2.WampServer啟動3.安裝cpolar內網穿透3.1 注冊賬號3.2 下載cpolar客戶端3.3 登錄cpolar web ui管理界面3.4 創建公網地址 4.固定公網地址訪問 前言 Wamp 是一個 Windows系統下的 Apache PHP Mysql 集成安裝環境&#xff0c;是一組常用來…

ESP32-Web-Server編程-通過 Base64 編碼在網頁中插入圖片

ESP32-Web-Server編程-通過 Base64 編碼在網頁中插入圖片 概述 不同于上節 ESP32-Web-Server編程-在網頁中通過 src 直接插入圖片,本節引入 Base64 編碼來顯示圖片。 Base64 是一種用64個字符來編碼表示任意二進制數據的方法。任何符號都可以轉換成 Base64 字符集中的字符,…

在做題中學習(31):電話號碼的字母組合(全排列)

17. 電話號碼的字母組合 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;既然要排列組合&#xff0c;就得先根據數字字符取出來 所以先定義一個string類的數組通過下標取到每個數字對應的映射。 string _numsTostr[10]{"","","abc"…

聊聊AsyncHttpClient的KeepAliveStrategy

序 本文主要研究一下AsyncHttpClient的KeepAliveStrategy KeepAliveStrategy org/asynchttpclient/channel/KeepAliveStrategy.java public interface KeepAliveStrategy {/*** Determines whether the connection should be kept alive after this HTTP message exchange.…

進程的相關知識

進程基本概念&#xff1a;1、進程是程序的一次執行過程&#xff0c;進程是資源分配的基本單位&#xff1b;2、每個進程都會分配自己的0至3G的內存空間&#xff0c;這個0至3G的內存空間可以有多份&#xff0c;但是3G至4G的內核空間獨一份&#xff1b;3、進程其實是內核創建的&am…

gitee對接使用

1.創建一個文件夾 2.進入Gitee接受對方項目編輯 3.打開終端初始化一開始創建的文件夾 git init 3.1打開終端 3.2輸入git.init 4.克隆對方的項目 4.1進入Gitee復制對方項目的路徑 4.2在編輯器終端內克隆對方項目 git clone 網址 如此你的編輯器就會出現對方的項目 …

小紅書AI文章寫作工具,免費的小紅書AI寫作工具有哪些

社交媒體已經成為人們交流、分享生活和獲取信息的主要平臺之一。而在這眾多社交媒體中&#xff0c;小紅書以其獨特的社區氛圍和內容特色而備受矚目。如何更高效地進行小紅書文章創作&#xff0c;本文將深入研究小紅書文章AI寫作工具。 小紅書文章AI寫作工具背后的技術 隨著人工…

Java基于Rest Assured自動化測試接口詳解

前言 不知道大家的項目是否都有對接口API進行自動化測試&#xff0c;反正像我們這種小公司是沒有的。由于最近一直被吐槽項目質量糟糕&#xff0c;只能研發自己看看有什么接口測試方案。那么在本文中&#xff0c;我將探索如何使用 Rest Assured 自動化 API 測試&#xff0c;Re…

基于Java SSM框架實現寵物醫院信息管理系統項目【項目源碼】計算機畢業設計

基于java的SSM框架實現寵物醫院信息管理系統演示 java簡介 Java語言是在二十世紀末由Sun公司發布的&#xff0c;而且公開源代碼&#xff0c;這一優點吸引了許多世界各地優秀的編程愛好者&#xff0c;也使得他們開發出當時一款又一款經典好玩的小游戲。Java語言是純面向對象語言…