Phytec中国的wiki
support@phytec.cn
热线:0755-61802110-803
i.mx7 是使用emmc设备, 本文档操作方法是从sdcard启动进入linux系统, 在linux系统中对emmc设备进行分区和烧写.
扩大sdcard的分区大小
bsp包增加parted软件包:
IMAGE_INSTALL_append = " parted"
完成后, 底板启动进入sdcard的linux系统.
先对sdcard的最后一个分区进行扩展:
https://wiki.phytec.com/pages/viewpage.action?pageId=106957160#phyCOREi.MX6eMMC烧写linux镜像/phyCOREi.MX6eMMCflashlinuximage-扩大eMMC文件系统
烧写EMMC
把emmc的uboot, kernel, oftree, rootfs四个镜像文件复制到/home/root/images目录下.
烧写脚本:
flash_emmc.sh
#!/bin/sh if [ `expr 0 + 0${1}` -le 0 ]; then echo "usage $0: <sd_size in gb>" exit 1; fi # base config DEST=/dev/mmcblk2 DESTP=${DEST}p MNTPOINT=/mnt/sd DEST_SIZE=`expr ${1} \* 900 \* 1024` # images BASE_DIR=/home/root/images # 镜像目录 UBOOT=${BASE_DIR}/u-boot.imx # uboot ZIMAGE=${BASE_DIR}/zImage-imx7d-phyboard-zeta-001.bin # kernel OFTREE=${BASE_DIR}/zImage-imx7d-phyboard-zeta-001.dtb # oftree ROOTFS=${BASE_DIR}/fsl-image-validation-imx-imx7d-phyboard-zeta-001.tar.bz2 # rootfs # size BOOT_SPACE_ALIGNED=$(expr 8192 + 4096 - 1) BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % 4096) # set LED D12 blink 5 times # 烧写指示LED, 可更换为其他GPIO echo 12 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio12/direction for i in 1 2 3 4 5 do echo 1 > /sys/class/gpio/gpio12/value sleep 0.5 echo 0 > /sys/class/gpio/gpio12/value sleep 0.5 done # start rm -rf ${MNTPOINT} mkdir -p ${MNTPOINT} umount ${DESTP}* echo Wipe emmc device dd if=/dev/zero of=${DEST} bs=1024 count=0 seek=${DEST_SIZE} dd if=/dev/zero of=${DEST} bs=512k count=32 conv=fsync echo Create Partitions sfdisk -u S ${DEST} << EOF 1 : start=8192,size=$(expr 2 \* ${BOOT_SPACE_ALIGNED}),Id=c 2 : start=$(expr 2 \* 4096 + 2 \* ${BOOT_SPACE_ALIGNED}),Id=83 EOF echo Flash Uboot dd if=${UBOOT} of=${DEST} conv=notrunc seek=2 bs=512 echo Flash Kernel/Devicetree yes | mkfs.vfat ${DESTP}1 mount ${DESTP}1 ${MNTPOINT} cp ${ZIMAGE} ${MNTPOINT}/zImage cp ${OFTREE} ${MNTPOINT}/oftree umount ${MNTPOINT} echo Flash ROOTFS yes | mkfs.ext4 ${DESTP}2 mount ${DESTP}2 ${MNTPOINT} tar xmf ${ROOTFS} -C ${MNTPOINT} umount ${MNTPOINT} #LED D12 on echo 1 > /sys/class/gpio/gpio12/value
./flash_emmc.sh 4 # 参数值为emmc的大小
自动烧写
自动烧写的就是在linux中做一个自启动服务
在/lib/systemd/system目录下创建flash-emmc.service
flash-emmc.service
[Unit] Description=Flash Emmc Service [Service] Type=simple ExecStart=/home/root/images/flash_emmc.sh 4 SuccessExitStatus=2 [Install] WantedBy=multi-user.target
使能自动烧写
systemctl start flash-emmc.service
Overview
Content Tools
Activity
Tasks