使用UUU工具烧录并分区(GPT)

uuu_version 1.2.39

# Please Replace below items with actually file names
# @_flash.bin | boot loader
# @_Image | kernel image, arm64 is Image, arm32 it is zImage
# @_board.dtb | board dtb file
# @_initramfs.cpio.gz.uboot | mfgtool init ramfs
# @_rootfs.tar.bz2 | rootfs
# @_uTee.tar | optee image, put dummy _uTee.tar file here if platform is not MX6/MX7*

# 前面这些SDP SDPS SDPU SDPV命令应该是用于下载bootloader的 但是具体下载到哪里就不清楚了 查了uuu工具的wiki也没找到对应说明。
# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ
SDP: boot -f flash.bin

# This command will be run when ROM support stream mode
# i.MX8QXP, i.MX8QM
SDPS: boot -f flash.bin

# These commands will be run when use SPL and will be skipped if no spl
# SDPU will be deprecated. please use SDPV instead of SDPU
# {
SDPU: delay 1000
SDPU: write -f flash.bin -offset 0x57c00
SDPU: jump
# }

# These commands will be run when use SPL and will be skipped if no spl
# if (SPL support SDPV)
# {
SDPV: delay 1000
SDPV: write -f flash.bin -skipspl
SDPV: jump
# }

# use uboot burn bootloader to eMMC
# becaue difference chip, offset is difference
# you can use kernel to do that for specific boards
FB: ucmd setenv fastboot_dev mmc

# emmc_dev是u-boot内环境变量 默认值为0
FB: ucmd setenv mmcdev ${emmc_dev}
FB: flash bootloader flash.bin

# 判断是否存在名为emmc_ack的环境变量 如果不存在则设置为0
FB: ucmd if env exists emmc_ack; then ; else setenv emmc_ack 0; fi;

# mmc partconf 用于设置emmc的启动分区 设置后会自动保存
# mmc partconf <dev> <boot_ack> <boot_partition> <partition_acces>
# 设置boot1为引导分区 对应emmc的boot0分区
# 这个是个关键 如果你想修改启动的位置 可以参考imx8qxp数据第5章:System Boot
FB: ucmd setenv emmc_cmd mmc partconf ${emmc_dev} ${emmc_ack} 1 0

# 判断环境变量emmc_skip_fb是否是yes 如果不是执行emmc_cmd
FB: ucmd if test "${emmc_skip_fb}" != "yes"; then run emmc_cmd; fi

# mmc bootbus <dev> <bus_width> <reset_boot_bus_width> <boot_mode>
# 设置位宽 启动模式
FB: ucmd setenv emmc_cmd mmc bootbus ${emmc_dev} 2 2 1;
FB: ucmd if test "${emmc_skip_fb}" != "yes"; then run emmc_cmd; fi

# 下载内核 设备树 initrd文件系统
FB: ucmd setenv fastboot_buffer ${loadaddr}
FB: download -f Image
FB: ucmd setenv fastboot_buffer ${fdt_addr}
FB: download -f fsl-imx8qxp-nushine.dtb
FB: ucmd setenv fastboot_buffer ${initrd_addr}
FB: download -f fsl-image-mfgtool-initramfs-imx_mfgtools.cpio.gz.u-boot
#FB: ucmd setenv bootargs console=${console},${baudrate} earlycon=${earlycon},${baudrate}
# 传入内核 initrd文件系统 设备树 在内存中的地址 然后启动内核
# initrd是一个专门用于烧录文件的ramfs
FB: acmd ${kboot} ${loadaddr} ${initrd_addr} ${fdt_addr}

# 通过内核命令行获取emmc编号
# 等待emmc设备节点
FBK: ucmd while [ ! -e /dev/mmcblk*boot0 ]; do sleep 1; echo "wait for /dev/mmcblk*boot* appear"; done;

# 查找emmc设备编号, 如果你的平台有两个以上的emmc, 需要用命令确定使用哪个emmc
# echo dev number >/tmp/mmcdev
FBK: ucmd dev=`ls /dev/mmcblk*boot*`; dev=($dev); dev=${dev[0]}; dev=${dev#/dev/mmcblk}; dev=${dev%boot*}; echo $dev > /tmp/mmcdev;

# 清除存在的MBR分区 与emmc的特性有关
FBK: ucmd mmc=`cat /tmp/mmcdev`; dd if=/dev/zero of=/dev/mmcblk${mmc} bs=512 count=1

# 创建分区 MBR分区最多创建4个 可以使用GPT分区创建更多的分区
# 例子如下

#GPT分区:分配大小分别为p1:32M p2:2G p3:32M, L应该表示linux系统,H应该表示linux home系统。
FBK: ucmd mmc=`cat /tmp/mmcdev` ;PARTSTR=$'label:gpt\n,32M,H,*\n,2048M,L,-\n,32M,L,-\n,32M,L,-\n,1M,L,-\n,1024M,L,-\n,,L,-\n'; echo "$PARTSTR" | sfdisk --force /dev/mmcblk${mmc}

#MBR分区,最多只能分4个区,分区大小为:P1:起始位置10M,大小500M,0c(fat32文件系统) P2:起始位置600M,剩余所有空间大小,83(linux文件系统)
#FBK: ucmd mmc=`cat /tmp/mmcdev`; PARTSTR=$'10M,500M,0c\n600M,,83\n'; echo "$PARTSTR" | sfdisk --force /dev/mmcblk${mmc}

FBK: ucmd mmc=`cat /tmp/mmcdev`; dd if=/dev/zero of=/dev/mmcblk${mmc} bs=1k seek=4096 count=1
FBK: ucmd sync


# 下列代码可用于烧录mjloader 不过对于不同的平台有不同的偏移地址 seek需要修改一下
#FBK: ucmd mmc=`cat /tmp/mmcdev`; echo 0 > /sys/block/mmcblk${mmc}boot0/force_ro
#FBK: ucp flash.bin t:/tmp
#FBK: ucmd mmc=`cat /tmp/mmcdev`; dd if=/tmp/flash.bin of=/dev/mmc${mmc}boot0 bs=1K seek=32
#FBK: ucmd mmc=`cat /tmp/mmcdev`; echo 1 > /sys/block/mmcblk${mmc}boot0/force_ro

# 下面的代码用于烧录Image和dtb
FBK: ucmd mmc=`cat /tmp/mmcdev`; while [ ! -e /dev/mmcblk${mmc}p1 ]; do sleep 1; done
# 格式化对应分区
FBK: ucmd mmc=`cat /tmp/mmcdev`; mkfs.vfat /dev/mmcblk${mmc}p1
FBK: ucmd mmc=`cat /tmp/mmcdev`; mkdir -p /mnt/fat
# 挂载到/mnt/fat
FBK: ucmd mmc=`cat /tmp/mmcdev`; mount -t vfat /dev/mmcblk${mmc}p1 /mnt/fat
# 烧录Image和dtb
FBK: ucp Image t:/mnt/fat
FBK: ucp fsl-imx8qxp-nushine.dtb t:/mnt/fat
#FBK: ucp _uTee.tar t:/tmp/op.tar
#FBK: ucmd tar -xf /tmp/op.tar -C /mnt/fat
FBK: ucmd umount /mnt/fat

# 下面的代码用于烧录rootfs
# 格式化对应分区
FBK: ucmd mmc=`cat /tmp/mmcdev`; mkfs.ext3 -F -E nodiscard /dev/mmcblk${mmc}p2
FBK: ucmd mkdir -p /mnt/ext3
# 挂载到/mnt/ext3
FBK: ucmd mmc=`cat /tmp/mmcdev`; mount /dev/mmcblk${mmc}p2 /mnt/ext3
FBK: acmd export EXTRACT_UNSAFE_SYMLINKS=1; tar -jx -C /mnt/ext3
FBK: ucp imx8qxpmek-4.14-obu-rootfs.tar.bz2 t:-
FBK: Sync
FBK: ucmd umount /mnt/ext3
FBK: DONE
————————————————

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值