Phytec中国的wiki
support@phytec.cn
热线:0755-61802110-803
eMMC的空间一般比较大,如果直接生成一个eMMC大小的镜像,则烧写比较慢,本文使用Linux系统来对eMMC进行操作,分别写入Android各个分区,从而提高了烧写的速度。
phyCORE-i.MX6 emmc支持Android 这个文档中有写到i.mx6 emmc android镜像是通过gen_sd_flash.sh 这个脚本来制作一个完整的sdcard镜像,
gen_sd_flash.sh 脚本可以指定参数制作不同大小的sdcard镜像文件,执行./gen_sd_flash.sh 4 可以制作出4GB大小的sdcard镜像,./gen_sd_flash.sh 8 制作出8GB大小的sdcard镜像,使用这个方法制作的镜像可以刚好设配emmc设备容量,但是会导致一个问题,烧写这个镜像的时候选择从sd卡拷贝到emmc时,sd卡fat32格式下无法存放大于4GB的文件,而如果选择从tftp拷贝到emmc的话,由于镜像文件太大,可能导致传输不成功。
所以推荐使用另外一种方式来烧写emmc android镜像,先做一个带有linux系统的SD卡,设置核心板从SD卡启动,进入到linux之后执行gen_sd_flash.sh 脚本直接写入emmc的设备文件。
SD卡镜像制作
镜像地址:ftp://ftp.phytec.cn/file_exchange/images/phytec-headless-image-phyboard-mira-imx6-5.sdcard 这个镜像已经增加了gen_sd_flash.sh 执行所需的所有应用软件,
这个镜像也可以通过编译LINUX BSP包得到的,在Linux BSP 包的build/conf/local.conf 文件中增加以下软件 即可
IMAGE_INSTALL_append = " mtools util-linux dosfstools tftp-hpa coreutils"
参考 制作SD卡启动盘 / how to make bootable sd card 教程来制作SD卡。
制作SD卡后,开发板设置从SD卡启动,进入barebox 中修改环境
barebox$ nv linux.bootargs.mmcblk=mmcblk.perdev_minors=18 barebox$ saveenv
默认的Linux系统只能辨认到7个分区,传入mmcblk.perdev_minors=18 这个参数可以辨别最多到18区,而android 镜像中需要将emmc分成8个区。
修改barebox后进入Linux系统,首先需要对SD卡文件系统扩大,参考 http://www.phytec.de/documents/l-814e-3-imx6-bsp-manual/#Resize_the_ext4_Root_Filesystem
SD卡文件系统扩大后,在/home/root/目录下新建mx6q_emmc目录,进入mx6q_emmc目录下可以通过tftp传输android系统所需的镜像文件barebox.bin, zImage, oftree,system.img,
root@phyboard-mira-imx6-5:~/mx6q_emmc# tftp 192.168.1.253 tftp> get barebox.bin tftp> get imx6q-phytec-mira-rdk-emmc.dtb tftp> get zImage tftp> get system.img tftp> q
主机tftp服务器配置参考:https://wiki.phytec.com/pages/viewpage.action?pageId=66489092#id-开发板从网络启动/bootboardfromnetwork-主机安装配置tftp服务器
然后也是通过tftp下载emmc镜像的执行脚本:gen_sd_img.sh ,这个脚本对emmc设备做了相应的修改,直接写emmc设备,而不是生成镜像文件。
DEST=/dev/mmcblk3 #这里已经是对应操作emmc设备了
下载脚本后执行
chmod +x gen_sd_img.sh ./gen_sd_img.sh 8 # 8GB emmc ./gen_sd_img.sh 4 # 4GB emmc
脚本执行完成后,设置从emmc启动,可以看到emmc已经写入了android系统,并且文件系统已经达到最大容量。