news 2026/6/12 23:00:14

【系统移植篇】系统烧写

作者头像

张小明

前端开发工程师

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/6/12 3:12:24

2026年全套Java面试合集,终于整理完了!

一、Java并发面试题 1、 ThreadLocal 1.1 谈谈你对ThreadLocal的理解&#xff1f; ThreadLocal的作用主要是做数据隔离&#xff0c;填充的数据只属于当前线程&#xff0c;变量的数据对别的线程而言是相对隔离的。它不是针对程序的全局变量&#xff0c;只是针对当前线程的全局…

作者头像 李华
网站建设 2026/6/12 22:24:41

数字孪生技术有哪些实际应用?

数字孪生&#xff0c;作为一种将物理实体或系统在其全生命周期内&#xff0c;通过数据驱动在虚拟空间中构建动态镜像的技术&#xff0c;正深刻改变着众多行业的运作模式。它不仅是一个简单的三维模型&#xff0c;更是一个集成了实时数据、模拟分析、预测决策能力的综合系统。随…

作者头像 李华
网站建设 2026/6/12 21:37:11

我为什么要离开家乡,来北京打拼?(说说我自己的故事...)

建了一个新号&#xff1a;1. 讲职场与第二曲线&#xff1b;2. 聊自己的故事&#xff0c;内心的感悟。谢谢大家&#xff0c;听我的故事。希望对大伙也有帮助。最近做了一个新产品&#xff1a;70天&#xff0c;每天30分钟&#xff0c;短视频行动营&#xff08;第二曲线最佳选择&a…

作者头像 李华
网站建设 2026/6/9 20:08:50

如何在 LTspice放置 .op data 并能够设置显示的小数点个数?

简 介&#xff1a; 本文介绍了在LTspice中格式化.op数据标签的方法。通过使用round函数可以设置显示数据的小数点位数&#xff0c;使仿真结果更加简洁直观。具体操作是右键点击.op数据标签&#xff0c;使用round函数调整小数位数。这种方法能有效优化电路静态偏置量的显示效果&…

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

Wan2.2-T2V-A14B支持长时间序列生成吗?实测60秒连续输出

Wan2.2-T2V-A14B支持长时间序列生成吗&#xff1f;实测60秒连续输出 在影视制作、广告创意和虚拟内容生产领域&#xff0c;一个长期悬而未决的难题是&#xff1a;AI能否真正理解“时间”&#xff1f; 不是简单拼接几帧画面&#xff0c;也不是靠后期插值强行延长视频&#xff…

作者头像 李华