文章目录
- 【系统移植篇】系统烧写
-
- [1 环境准备](#1 环境准备)
- [2 固化系统到SD卡](#2 固化系统到SD卡)
- [2 固化系统到EMMC](#2 固化系统到EMMC)
【系统移植篇】系统烧写
1 环境准备
下载burn文件夹:
通过网盘分享的文件:burn
链接: https://pan.baidu.com/s/1NnxOFErna5NIzGdePpi0XQ?pwd=pzs6 提取码: pzs6
该文件夹的目录如下:
sh
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卡
-
将
burn文件夹存放到虚拟机内。 -
(optional)如果要使用自己编译的u-boot.bin文件,则需要执行如下命令生成可烧录的u-boot.imx:
shpzs@pzs-jammy:~/linux/burn$ ./imx6ull_mk_uboot.sh -512m u-boot.bin ./boot_sources/imx6ull-alientek-emmc.uboot.imx # 假设你的u-boot.bin存放到burn目录下 -
将SD卡插入到读卡器内并且插入到虚拟机内
-
烧录SD卡
shpzs@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... -
将SD卡重新插回开发板上,并且设置为从SD卡启动
拨码方式为: 10000010

-
设置uboot环境变量
进入uboot终端:
sh# 设置显示屏 => 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内核 -
验证结果
启动系统后查看根文件的挂载路径,发现是在mmcblk1p1下就代表我们当前的系统已经成功从SD卡中启动了。
shpzs@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
-
将
burn文件夹存放到开发板内。 -
从SD卡启动。
-
烧录EMMC
sh# 烧录前需要安装的工具列表: ## 必要软件 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 -
设置拨码开关从EMMC启动
固化完成后,将拨码开关拨至 eMMC 启动方式 10100110,启动系统即可。
-
设置uboot环境变量
sh# 设置显示屏 => 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内核 -
验证结果
启动系统后查看根文件的挂载路径,发现是在mmcblk1p2下就代表我们当前的系统已经成功从EMMC中启动了。
shpzs@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 /