news 2026/4/18 2:29:51

【系统移植篇】系统烧写

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【系统移植篇】系统烧写

文章目录

  • 【系统移植篇】系统烧写
    • 1 环境准备
    • 2 固化系统到SD卡
    • 2 固化系统到EMMC

【系统移植篇】系统烧写

1 环境准备

下载burn文件夹:

通过网盘分享的文件:burn 链接: https://pan.baidu.com/s/1NnxOFErna5NIzGdePpi0XQ?pwd=pzs6 提取码: pzs6

该文件夹的目录如下:

burn/ ├── boot_sources # 存放的是需要烧录到系统的源文件。当然这里也可以使用大家自己编译好的内容 │ ├── imx6ull-alientek-emmc.linux.dtb # dtb文件 │ ├── imx6ull-alientek-emmc.linux.zImage # zImage文件 │ ├── imx6ull-alientek-emmc.rootfs # rootfs压缩包,可以为zip或者tar.gz格式 │ └── imx6ull-alientek-emmc.uboot.imx # uboot的imx文件 ├── imx_512mb_ivtdcd_table.bin # 512MB的IVT头 ├── imx6ull_mk_emmc_boot.sh # 烧录EMMC脚本 ├── imx6ull_mk_sd_boot.sh # 烧录SD卡脚本 └── imx6ull_mk_uboot.sh # 生成uboot烧录文件脚本

注:dtb文件、zImage文件、rootfs压缩包和uboot文件都可以替换为自己的。

2 固化系统到SD卡

  1. burn文件夹存放到虚拟机内。

  2. (optional)如果要使用自己编译的u-boot.bin文件,则需要执行如下命令生成可烧录的u-boot.imx:

    pzs@pzs-jammy:~/linux/burn$ ./imx6ull_mk_uboot.sh -512m u-boot.bin ./boot_sources/imx6ull-alientek-emmc.uboot.imx # 假设你的u-boot.bin存放到burn目录下
  3. 将SD卡插入到读卡器内并且插入到虚拟机内

  4. 烧录SD卡

    pzs@pzs-jammy:~/linux/burn$ sudo ./imx6ull_mk_sd_boot.sh -d /dev/sdb -u boot_sources/imx6ull-alientek-emmc.uboot.imx -z boot_sources/imx6ull-alientek-emmc.linux.zImage -t boot_sources/imx6ull-alientek-emmc.linux.dtb -r boot_sources/imx6ull-alientek-emmc.rootfs Preparing SD card for boot, this will take a few minutes. Please be patient! ************************************************************ * WARNING: This will erase all data on /dev/sdb. * * Do not unplug /dev/sdb during the operation! * * Press <Enter> to continue... * ************************************************************ # 这一步需要按下回车键执行烧录 Device '/dev/sdb' cleared successfully! Creating partitions on /dev/sdb... Formatting /dev/sdb1... mkfs.fat 4.2 (2021-01-31) mkfs.fat: Warning: lowercase labels might not work properly on some systems Formatting /dev/sdb2... mke2fs 1.46.5 (30-Dec-2021) /dev/sdb2 contains a ext3 file system labelled 'rootfs' last mounted on /tmp/tmp.vh1FppsRHw on Sun Dec 7 22:54:28 2025 Creating filesystem with 7540480 4k blocks and 1888656 inodes Filesystem UUID: 4a880f79-31ee-4e3f-90e5-1c9ca143a418 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done Partitions created successfully! Writing Uboot to /dev/sdb... Uboot written to /dev/sdb successfully! zImage written to /dev/sdb successfully! dtb written to /dev/sdb successfully! Mounting /dev/sdb2... Extracting filesystem to /dev/sdb2... Detected gzip format. Extracting using gunzip... Unmounting /dev/sdb2... Rootfs written to /dev/sdb successfully! SD card boot system burning is complete! Cleaning up...
  5. 将SD卡重新插回开发板上,并且设置为从SD卡启动
    拨码方式为: 10000010

  6. 设置uboot环境变量

    进入uboot终端:

    # 设置显示屏 => setenv panel TFT7016 => saveenv Saving Environment to MMC... Writing to MMC(0)... done => reset # 重启板子后就可以看到NXP的logo标志了 # 设置网络地址 => setenv ipaddr 192.168.137.3 => setenv ethaddr b8:ae:1d:01:00:00 => setenv gatewayip 192.168.137.1 => setenv netmask 255.255.255.0 => setenv serverip 192.168.137.2 => saveenv => ping 192.168.137.1 # 测试是否能够ping通主机 FEC1 Waiting for PHY auto negotiation to complete..... done Using FEC1 device host 192.168.137.1 is alive => ping 192.168.137.2 # 测试是否能够ping通虚拟机 Using FEC1 device host 192.168.137.2 is alive # 设置boot启动命令 => fatls mmc 0:1 #查看一下我们存放的zImage和dtb文件 5517536 imx6ull-alientek-emmc.linux.zimage 36346 imx6ull-alientek-emmc.linux.dtb => ext4ls mmc 0:2 #查看一下我们存放的rootfs <DIR> 4096 . <DIR> 4096 .. <DIR> 16384 lost+found <DIR> 4096 root 37806000 ubuntu-base-16.04.6-base-armhf.tar.gz <DIR> 4096 var <DIR> 4096 bin <DIR> 4096 proc <DIR> 4096 lib <DIR> 4096 usr <DIR> 4096 run <DIR> 4096 boot <DIR> 4096 etc <DIR> 4096 opt <DIR> 4096 srv <DIR> 4096 home <DIR> 4096 sbin <DIR> 4096 media <DIR> 4096 sys <DIR> 4096 dev <DIR> 4096 tmp <DIR> 4096 mnt ==> setenv bootcmd 'mmc dev 0; fatload mmc 0:1 80800000 imx6ull-alientek-emmc.linux.zimage; fatload mmc 0:1 83000000 imx6ull-alientek-emmc.linux.dtb; bootz 80800000 - 83000000' # 设置boot命令的值 ==> setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait rw' => saveenv => boot # 使用boot命令启动Linux内核
  7. 验证结果

    启动系统后查看根文件的挂载路径,发现是在mmcblk1p1下就代表我们当前的系统已经成功从SD卡中启动了。

    pzs@alientek_imx6ul:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT mmcblk1rpmb 179:64 0 512K 0 disk mmcblk1boot0 179:32 0 4M 1 disk mmcblk1boot1 179:48 0 4M 1 disk mmcblk0 179:0 0 28.8G 0 disk |-mmcblk0p1 179:1 0 64M 0 part -mmcblk0p2 179:2 0 28.8G 0 part / mmcblk1 179:16 0 7.3G 0 disk |-mmcblk1p1 179:17 0 32M 0 part -mmcblk1p2 179:18 0 7.3G 0 part ``

2 固化系统到EMMC

  1. burn文件夹存放到开发板内。

  2. 从SD卡启动。

  3. 烧录EMMC

    # 烧录前需要安装的工具列表: ## 必要软件 pzs@alientek_imx6ul:~$ sudo apt-get install parted udev dosfstools ## 安装mmc-utils, 由于ubuntu16.04上没有,因此需要手动安装 root@alientek_imx6ul:/home/pzs/mmc-utils# wget http://ftp.cn.debian.org/debian/pool/main/m/mmc-utils/mmc-utils_0+git20180327.b4fe0c8c-1_armhf.deb root@alientek_imx6ul:/home/pzs/mmc-utils# dpkg -i mmc-utils_0+git20180327.b4fe0c8c-1_armhf.debr # 烧录镜像 pzs@alientek_imx6ul:~$ sudo ./imx6ull_mk_emmc_boot.sh -d /dev/mmcblk1 -u boot_sources/imx6ull-alientek-emmc.uboot.imx -z boot_sources/imx6ull-alientek-emmc.linux.zImage -t boot_sources/imx6ull-alientek-emmc.linux.dtb -r boot_sources/imx6ull-alientek-emmc.rootfs
  4. 设置拨码开关从EMMC启动

    固化完成后,将拨码开关拨至 eMMC 启动方式 10100110,启动系统即可。

  5. 设置uboot环境变量

    # 设置显示屏 => setenv panel TFT7016 => saveenv Saving Environment to MMC... Writing to MMC(0)... done => reset # 重启板子后就可以看到NXP的logo标志了 # 设置网络地址 => setenv ipaddr 192.168.137.3 => setenv ethaddr b8:ae:1d:01:00:00 => setenv gatewayip 192.168.137.1 => setenv netmask 255.255.255.0 => setenv serverip 192.168.137.2 => saveenv => ping 192.168.137.1 # 测试是否能够ping通主机 FEC1 Waiting for PHY auto negotiation to complete..... done Using FEC1 device host 192.168.137.1 is alive => ping 192.168.137.2 # 测试是否能够ping通虚拟机 Using FEC1 device host 192.168.137.2 is alive # 设置boot启动命令 => fatls mmc 1:1 #查看一下我们存放的zImage和dtb文件 5517536 imx6ull-alientek-emmc.linux.zimage 36346 imx6ull-alientek-emmc.linux.dtb => ext4ls mmc 1:2 #查看一下我们存放的rootfs <DIR> 4096 . <DIR> 4096 .. <DIR> 16384 lost+found <DIR> 4096 opt <DIR> 4096 unit_tests <DIR> 4096 etc <DIR> 4096 home <DIR> 4096 sbin <DIR> 4096 bin <DIR> 4096 proc <DIR> 4 096 boot <DIR> 4096 usr <DIR> 4096 mnt <DIR> 4096 media <DIR> 4096 lib <DIR> 4096 dev <DIR> 4096 sys <DIR> 4096 run <DIR> 4096 var <DIR> 4096 tmp ==> setenv bootcmd 'mmc dev 0; fatload mmc 1:1 80800000 imx6ull-alientek-emmc.linux.zimage; fatload mmc 1:1 83000000 imx6ull-alientek-emmc.linux.dtb; bootz 80800000 - 83000000' # 设置boot命令的值 ==> setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw' => saveenv => boot # 使用boot命令启动Linux内核
  6. 验证结果

    启动系统后查看根文件的挂载路径,发现是在mmcblk1p2下就代表我们当前的系统已经成功从EMMC中启动了。

    pzs@alientek_imx6ul:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT mmcblk1rpmb 179:64 0 512K 0 disk mmcblk1boot0 179:32 0 4M 1 disk mmcblk1boot1 179:48 0 4M 1 disk mmcblk0 179:0 0 28.8G 0 disk |-mmcblk0p1 179:1 0 64M 0 part `-mmcblk0p2 179:2 0 28.8G 0 part mmcblk1 179:16 0 7.3G 0 disk |-mmcblk1p1 179:17 0 32M 0 part `-mmcblk1p2 179:18 0 7.3G 0 part /
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 8:24:58

全栈项目:汽车租赁系统

基于Vue 3和Node.js的汽车租赁管理系统设计与实现 1. 项目概述 1.1 项目背景 汽车租赁系统是一个面向现代化汽车租赁业务的全栈Web应用平台。随着共享经济的发展和人们出行方式的多样化&#xff0c;汽车租赁服务成为了一个快速增长的市场。本系统旨在为用户提供便捷、高效的…

作者头像 李华
网站建设 2026/4/17 16:25:47

【企业级Agent安全配置】:Docker环境下99%的人都忽略的5大安全隐患

第一章&#xff1a;企业级Agent安全配置的核心挑战在现代分布式系统架构中&#xff0c;Agent作为连接终端节点与中央管理平台的关键组件&#xff0c;承担着数据采集、指令执行和状态上报等核心职责。然而&#xff0c;随着攻击面的不断扩展&#xff0c;企业级Agent的安全配置面临…

作者头像 李华
网站建设 2026/4/18 1:10:19

Comsol 超构表面远场偏振态绘制那些事儿

Comsol绘制超构表面远场偏振态 动量空间远场偏振far field polarization 绘制教程。 C点 V点识别 Comsol 超构表面动量空间参数图绘制在超构表面的研究领域中&#xff0c;利用 Comsol 绘制远场偏振态以及动量空间相关参数图是非常重要的工作。今天就来跟大家唠唠这其中的门道…

作者头像 李华
网站建设 2026/4/17 7:45:53

1.19 UGUI的准备数据流程

1.UGUI准备数据的流程a.PostLateUpdate.PlayerUpdateCanvases- 作用: 这是Unity在每帧的晚期更新(LateUpdate)之后, 专门用于更新所有Canvas(UI画布)的系统函数; 它负责驱动整个UI渲染流程- 详细流程: 它会调用Canvas.SendWillRenderCanvases(), 从而触发一系列UI更新操作, 包括…

作者头像 李华
网站建设 2026/4/17 8:34:12

MCP SC-400量子加密实战指南(从零到企业级安全架构)

第一章&#xff1a;MCP SC-400量子安全配置实务概述在当前量子计算快速发展的背景下&#xff0c;传统加密体系面临前所未有的破解风险。MCP SC-400作为新一代量子安全通信协议标准&#xff0c;旨在提供抗量子攻击的安全配置框架&#xff0c;保障关键基础设施与敏感数据的长期安…

作者头像 李华
网站建设 2026/4/16 11:40:51

JavaEE进阶——MyBatis动态SQL与图书管理系统实战

目录 MyBatis 进阶详解与图书管理系统实战 第一部分&#xff1a;核心知识点深度解析 1. 什么是动态 SQL&#xff1f;为什么需要它&#xff1f; 2. 动态 SQL 标签详解&#xff08;文档核心点扩展&#xff09; 2.1 标签&#xff1a;最常用的判断逻辑2.2 标签&#xff1a;万能…

作者头像 李华