Phytec中国的wiki
support@phytec.cn
热线:0755-61802110-803
barebox中烧写镜像
这种方式是在barebox中写入eMMC的完整镜像文件,由于无法在barebox中对eMMC进行分区操作,烧写后的文件系统大小是受image文件大小限制,无法达到eMMC设备存储大小,需要在烧写完成后进入linux扩大文件系统。
本章节参考https://www.phytec.de/cdocuments/?doc=KxNtCQ#L818e.A7AM335xBSPManual-UpdatingeMMCfromNetwork
开发板启动进入barebox,在barebox中执行以下命令烧写
barebox$ detect mmc1 barebox$ cp -v /mnt/tftp/[sdcard] /dev/mmc1 # 从tftp中烧写镜像 barebox$ cp -v /mnt/mmc/[sdcard] /dev/mmc1 # 从sdcard中烧写镜像
[sdcard] 表示对应machine的sdcard镜像,可从ftp://ftp.phytec.cn或者通过bsp包编译后得到。
选择从tftp中烧写镜像,主机tftp配置可参考:https://wiki.phytec.com/pages/viewpage.action?pageId=66489092#id-开发板从网络启动/bootboardfromnetwork-主机安装配置tftp服务器
在开发阶段,如果只需要更新barebox, 内核或者设备树,可直接使用以下命令对MLO, barebox, 内核和设备树进行更新。
更新MLO和barebox
barebox$ barebox_update -t MLO.emmc /mnt/tftp/MLO barebox$ barebox_update -t mmc1 /mnt/tftp/barebox.bin barebox$ cp /dev/zero /dev/mmc1.barebox-environment
更新内核和设备树
barebox$ ls /mnt/mmc1.0 barebox$ cp /mnt/tftp/[zImage] /mnt/mmc1.0/zImage barebox$ cp /mnt/tftp/[oftree] /mnt/mmc1.0/oftree
Linux 中烧写eMMC镜像
这种方式是使开发板从SD卡启动或者从网络启动进入到linux, 然后在linux直接对eMMC设备进行分区操作,再把barebox, 内核,设备树和文件系统直接写入对应的eMMC分区,通过这种方式烧写进eMMC的linux系统,文件系统可用空间已经达到最大,无需再对eMMC执行扩大文件系统操作。
sd卡镜像制作
由于烧写eMMC镜像需要对eMMC设备进行分区和格式化,默认的ftp上的镜像缺少一些工具,需要通过bsp包编译得到。
在BSP包的build/conf/local.conf 文件中增加以下软件
IMAGE_INSTALL_append = " util-linux dosfstools coreutils"
编译完成后,参考 制作SD卡启动盘 / how to make bootable sd card 教程制作sd卡。
开发板设置从sd卡启动,进入linux,此时需要先对sd卡文件系统进行扩大,参考以上扩大eMMC文件系统操作,对sdcard文件系统进行扩大,其中sdcard设备对应的是/dev/mmcblk0
烧写eMMC设备
扩大文件系统后,新建images目录,通过tftp下载镜像文件
root@phycore-emmc-am335x-1:~# mkdir images root@phycore-emmc-am335x-1:~# tftp -g -r barebox.bin 192.168.1.253 root@phycore-emmc-am335x-1:~# tftp -g -r MLO 192.168.1.253 root@phycore-emmc-am335x-1:~# tftp -g -r zImage-phycore-emmc-am335x-1.bin 192.168.1.253 root@phycore-emmc-am335x-1:~# tftp -g -r zImage-am335x-phycore-emmc-eeprom-rtc-spi.dtb 192.168.1.253 root@phycore-emmc-am335x-1:~# tftp -g -r phytec-qt5demo-image-phycore-emmc-am335x-1.tar.gz 192.168.1.253
烧写eMMC镜像脚本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 export DEST=/dev/mmcblk1 export DESTP=${DEST}p export MNTPOINT=/mnt/sd export DEST_SIZE=`expr ${1} \* 900 \* 1024` # images export BASE_DIR=/home/root/images # 镜像目录 export BARE_IMG=${BASE_DIR}/barebox.bin # barebox export MLO=${BASE_DIR}/MLO # MLO export ZIMAGE=${BASE_DIR}/zImage-phycore-emmc-am335x-1.bin # kernel export OFTREE=${BASE_DIR}/zImage-am335x-phycore-emmc-eeprom-rtc-spi.dtb # oftree export ROOTFS=${BASE_DIR}/phytec-qt5demo-image-phycore-emmc-am335x-1.tar.gz # 文件系统 # start rm -rf ${MNTPOINT} mkdir -p ${MNTPOINT} 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=16 conv=fsync echo Create Partitions sfdisk -u S ${DEST} << EOF 1 : start= 8192, size= 16384, Id=c 2 : start= 24576, Id=83 EOF echo set part 1 boot on parted -s ${DEST} set 1 boot on echo Flash Barebox/MLO and Kernel/Devicetree yes | mkfs.vfat ${DESTP}1 mount ${DESTP}1 ${MNTPOINT} cp ${MLO} ${MNTPOINT}/MLO cp ${BARE_IMG} ${MNTPOINT}/barebox.bin cp ${ZIMAGE} ${MNTPOINT}/zImage cp ${OFTREE} ${MNTPOINT}/oftree umount ${MNTPOINT} echo Flash Rootfs yes | mkfs.ext4 ${DESTP}2 mount ${DESTP}2 ${MNTPOINT} tar xf ${ROOTFS} -C ${MNTPOINT} umount ${MNTPOINT}
脚本加可执行权限,执行脚本完成后,eMMC设备也对应烧入了linux系统。
root@phycore-emmc-am335x-1:~# chmod +x flash_emmc.sh root@phycore-emmc-am335x-1:~# ./flash_emmc.sh 4 # 4GB emmc root@phycore-emmc-am335x-1:~# ./flash_emmc.sh 8 # 8GB emmc
如果需要开机自动烧写的话,可参考开机自启动一个应用/系统服务 / start a service or application when boot 写一个自启动服务。
从eMMC启动进入Linux,查看磁盘使用情况
root@phycore-emmc-am335x-1:~# df -h Filesystem Size Used Available Use% Mounted on /dev/root 6.8G 259.0M 6.2G 4% / devtmpfs 871.0M 0 871.0M 0% /dev tmpfs 1005.2M 0 1005.2M 0% /dev/shm tmpfs 1005.2M 8.3M 996.9M 1% /run tmpfs 1005.2M 0 1005.2M 0% /sys/fs/cgroup tmpfs 1005.2M 0 1005.2M 0% /tmp tmpfs 1005.2M 4.0K 1005.2M 0% /var/volatile
文件系统已经达到最大。