【系统移植篇】系统烧写

文章目录

  • 【系统移植篇】系统烧写
    • [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卡

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

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

    sh 复制代码
    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卡

    sh 复制代码
    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终端:

    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内核
  7. 验证结果

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

    sh 复制代码
    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

    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
  4. 设置拨码开关从EMMC启动

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

  5. 设置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内核
  6. 验证结果

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

    sh 复制代码
    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 小时前
长耗时接口异步改造总结
前端·git·后端
中文很快乐2 小时前
java后端好习惯---新手养成记
java·开发语言·开发好习惯·踩坑日志·新手养成
Acc1oFl4g2 小时前
Java安全之SpEL表达式注入入门学习
java·学习·安全
武哥聊编程2 小时前
【从0带做】基于Springboot3+Vue3的生态养殖管理系统
java·学习·vue·毕业设计·springboot
隔山打牛牛2 小时前
如何实现jvm中自定义加载器?
java
by__csdn2 小时前
JavaScript性能优化实战:异步与延迟加载全方位攻略
开发语言·前端·javascript·vue.js·react.js·typescript·ecmascript
阿里嘎多学长2 小时前
2025-12-11 GitHub 热点项目精选
开发语言·程序员·github·代码托管
牛三金2 小时前
魔改-隐语PSI通信,支持外部通信自定义
服务器·前端·算法
菜鸟233号2 小时前
力扣106 从中序与后序遍历序列构造二叉树 java实现
java·算法·leetcode