使用MfgTool烧写前需准备的文件

2023-12-09 05:04
文章标签 使用 准备 烧写 mfgtool

本文主要是介绍使用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工具烧写我自制的文件。

这篇关于使用MfgTool烧写前需准备的文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/472555

相关文章

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

关于pandas的read_csv方法使用解读

《关于pandas的read_csv方法使用解读》:本文主要介绍关于pandas的read_csv方法使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录pandas的read_csv方法解读read_csv中的参数基本参数通用解析参数空值处理相关参数时间处理相关

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

SpringBoot条件注解核心作用与使用场景详解

《SpringBoot条件注解核心作用与使用场景详解》SpringBoot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键,本文将系统梳理所有常用的条件注... 目录引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、@ConditionalOn

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳