news 2026/8/22 0:07:45

【系统移植篇】系统烧写

作者头像

张小明

前端开发工程师

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/8/21 4:20:46

网络安全工作必须有证吗?

在网络安全行业&#xff0c;证书常被视为入行的 “敲门砖”&#xff0c;尤其是对零基础求职者而言&#xff0c;它能快速证明专业能力、增加面试竞争力。但实战经验、技术功底同样是企业招聘的核心考量&#xff0c;不少资深从业者凭借项目经历也能站稳脚跟&#xff0c;所以证书并…

作者头像 李华
网站建设 2026/8/21 23:49:32

MySQL进阶篇——存储结构,索引

索引非常重要MySQL体系结构1、存储引擎&#xff08;MySQL默认InnoDB&#xff09;1、InnoDB&#xff1a;高可靠性和高性能的通用存储引擎存储数据&#xff0c;建立索引&#xff0c;更新/查询数据&#xff0c;基于表设置。--创建表时指定存储引擎 create table 表名(字段 字段类型…

作者头像 李华
网站建设 2026/8/21 15:56:15

BepInEx模组开发终极指南:5步搞定Unity游戏插件框架

想要为Unity游戏开发插件却不知从何入手&#xff1f;BepInEx作为业界领先的Unity游戏插件框架&#xff0c;支持Mono、IL2CPP和.NET多种运行时环境&#xff0c;让模组开发变得简单高效。本指南将带你从零开始&#xff0c;通过系统化的步骤和实用的解决方案&#xff0c;彻底掌握B…

作者头像 李华
网站建设 2026/8/20 21:24:39

算法题 数据流中的第 K 大元素

数据流中的第 K 大元素 问题描述 设计一个找到数据流中第 k 大元素的类&#xff08;class&#xff09;。注意&#xff0c;这是指在已排序的顺序中处于第 k 个位置的元素&#xff0c;而不是第 k 个不同的元素。 请实现 KthLargest 类&#xff1a; KthLargest(int k, int[] nums)…

作者头像 李华
网站建设 2026/8/21 17:29:41

告别模糊卡顿!Wan2.2-T2V-A14B实现高分辨率视频流畅生成

告别模糊卡顿&#xff01;Wan2.2-T2V-A14B实现高分辨率视频流畅生成 在短视频当道、内容为王的时代&#xff0c;一个品牌能否快速产出高质量宣传素材&#xff0c;几乎直接决定了它的市场响应速度。可现实是&#xff0c;传统视频制作流程冗长&#xff1a;脚本、拍摄、剪辑、调色…

作者头像 李华