• imx6ull烧写系统固件


    1. 裸板

    1.1 Windows中使用mfgtool

    参考《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.6.pdf》-第三十九章 系统烧写

    • mfgtool是NXP提供的专门给I.MX系列CPU烧写系统的软件;
    • 烧写的系统文件在Profiles文件夹内;
    • 使用.vbs文件配置烧写的芯片等;
    • mfgtool是用usb otg口先把uboot、linux kernel、 .dtb(设备树)烧录到DDR中,然后再在DDR中启动系统,对emmc或nandflash进行烧写完整的系统(包括rootfs);

    1.2 ubuntu中使用脚本烧录

    参考《【正点原子】I.MX6U用户快速体验V2.3.pdf》第二章-2.2.2使用脚本固化系统

    • 拷贝开发板光盘 A-基础资料->5、开发工具->4、正点原子 MFG_TOOL 出厂固件烧录工具->mfgtool->Profiles->Linux->OS Firmware->files 整个文件夹到 Ubuntu 虚拟机;
    • 执行files文件夹里面的imx6mksdboot.sh脚本文件,将系统烧录到sd卡,这个过程很漫长(烧录过一遍,第一次烧录时经常失败,第二次烧录了半个小时左右才成功);
    • sd卡的系统固化成功后,将第一步中的files文件夹拷贝到sd卡的系统中;
    • 执行imx6mkemmcboot.sh脚本将系统烧录到emmc;
    • 执行imx6mknandboot.sh脚本将系统烧录到nandflash;
      注意:三个脚本都有特定命令格式,即烧录时候要指定设备,烧录地址,ddr大小等

    2. 板卡存在系统

    2.1 板卡拥有完整的系统(主要介绍更新系统到nand-flash)

    参考《【正点原子】I.MX6U 开发板文件拷贝及固件更新参考手册V1.2.pdf》-第二章I.MX6U更新固件

    2.1.1 更新uboot到nandflash
    • 开启板卡进入到linux系统
    • 将u-boot.imx传到开发板里(最方便的即使scp命令,但是这个要配置开发板的网络。简单直接的方法是用sd卡或U盘)
    • 查看系统分区情况cat /proc/mtd
    • 擦除u-boot分区flash_erase /dev/mtd0 0 0;
    • 烧录imx到nandflash里面kobs-ng init -x -v --chip_0_device_path=/dev/mtd0 u-boot-imx6ull-14x14-ddr256-nand.imx
      注意这里使用的是kobs-ng命令,并不是nandwrite命令,那是因为i.mx6ull要求nand对应的uboot可执行文件还要另外包含BCB和DBBT,kogs-ng会完成BCB和DBBT的添加;
      (详情参考《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.6.pdf》-30.4.8NAND操作命令-nand write命令)
    • 同步一下,sync
    2.1.2 更新设备树到nandflash
    • 将设备树文件xxx.dtb传到开发板里
    • 查看系统分区情况cat /proc/mtd
    • 擦除设备树分区 flash_erase /dev/mtd3 0 0
    • 使用nandwrite命令将不通屏幕尺寸的设备树烧写到mtd3不通偏移地址中(详情翻阅原文)
    • 烧写完执行同步命令sync
    2.1.3 更新内核到nandflash
    • 将内核文件zImage传到开发板里
    • 查看系统分区情况cat /proc/mtd
    • 擦除内核分区 flash_erase /dev/mtd4 0 0
    • 烧写内核nandwrite -p /dev/mtd4 /home/root/zImage
    • 执行同步命令sync
    2.1.4 更新文件系统和内核模块到nandflash
    • 使用sd卡启动linux
    • 将文件系统压缩包rootfs.tar.bz2和内核模块压缩包modules.tar.bz2传到sd卡的系统目录下
    • 之后的步骤比较多,概括起来就是:擦除mtd5分区->将文件系统压缩包和内核模块压缩包解压到对应分区目录下
    2.1.5 更新系统固件到emmc和sd卡
    • 这两个操作方法比较接近,也没有擦除操作,更像是直接替换文件(删除复制粘贴)
    • 详情可以参考原文

    2.2 板卡只烧录了uboot(基于nand-flash)

    参考《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.6.pdf》第三十章 30.4 u-boot命令使用

    2.2.1 烧录内核

    参考(30.4.8 nand操作命令)

    • 使用nfs或tftp命令将系统固件下载到开发板的DRAM中
    • 擦除对应分区nand erase 0x620000 0x800000
    • 将DRAM中缓存的zImage写到nand中 nand write 0x87800000 0x620000 0x800000
    2.2.2 烧录设备树

    参考(30.4.8 nand操作命令)

    • 使用nfs或tftp命令将系统固件下载到开发板的DRAM中
    • 擦除对应分区:nand erase 0x520000 0x100000
    • 将DRAM中缓存的设备树写到nandflash中:nand write 0x87800000 0x520000 0x100000
    2.2.3 emmc和sd的板卡也支持在uboot中烧写系统

    详情可参考30.4.5 EMMC和SD卡操作命令

  • 相关阅读:
    在Android中实现动态应用图标
    Transformer学习
    C++菜鸟日记2
    装运采购订单增强
    Selenium自动化最佳实践技巧等你来学
    云积天赫AI营销:重塑品牌营销新生态
    Ubuntu 18.04安装搜狗输入法后无法显示中文
    51. N 皇后
    Databend 开源周报第 110 期
    盲人盲杖:科技革新,助力视障人士独立出行
  • 原文地址:https://blog.csdn.net/qq_25355591/article/details/127650133