phyCORE-i.MX6 Android BSP包:BSP-Android-i.MX6-ALPHA1

核心板:i.mx6dl emmc 

               i.mx6q emmc

1、barebox

Android BSP包关于i.MX6DL emmc板的barebox镜像仍有些问题,用linux上的barebox替换。

i.mx6dl emmc barebox镜像:ftp://ftp.phytec.cn/i.MX6/BSP-Yocto-i.MX6-PD16.1.0/images/phyboard-mira-imx6-7/barebox.bin

i.mx6q emmc barebox镜像:ftp://ftp.phytec.cn/i.MX6/BSP-Yocto-i.MX6-PD16.1.0/images/phyboard-mira-imx6-5/barebox.bin

2、oftree

i.mx6dl emmc :

设备树文件:imx6dl-phytec-mira-rdk-emmc.dts

设备树文件需要进行以下修改:

diff --git a/arch/arm/boot/dts/imx6dl-phytec-mira-rdk-emmc.dts b/arch/arm/boot/dts/imx6dl-phytec-mira-rdk-emmc.dts
index a819e74..5c77fa8 100644
--- a/arch/arm/boot/dts/imx6dl-phytec-mira-rdk-emmc.dts
+++ b/arch/arm/boot/dts/imx6dl-phytec-mira-rdk-emmc.dts
@@ -18,6 +18,7 @@

 / {
        model = "Phytec phyBOARD-MIRA DualLite/SOLO Carrier-Board with emmc";
+       model-short = "miraq";                                                                 ##添加这一行
        compatible = "phytec,imx6dl-pbac06", "phytec,imx6qdl-pcm058", "fsl,imx6dl";

        chosen {


在BSP包的kernel/arch/arm/boot/dts添加该设备树文件,并修改arch/arm/boot/dts/Makefile

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 7ab93c0..3936768 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -114,6 +114,7 @@ dtb-$(CONFIG_ARCH_MXC) += \
        imx53-qsb.dtb \
        imx53-smd.dtb \
        imx6dl-phytec-mira-rdk-nand.dtb \
+       imx6dl-phytec-mira-rdk-emmc.dtb \                                                     ##增加这一行
        imx6dl-sabreauto.dtb \
        imx6dl-sabreauto-ecspi.dtb \
        imx6dl-sabreauto-flexcan1.dtb \

修改后需要重新编译内核即可。

i.mx6q emmc : 

设备树文件:imx6q-phytec-mira-rdk-emmc.dts  修改如下:

diff --git a/arch/arm/boot/dts/imx6q-phytec-mira-rdk-emmc.dts b/arch/arm/boot/dts/imx6q-phytec-mira-rdk-emmc.dts
index 8abfbed..d6c21fe 100644
--- a/arch/arm/boot/dts/imx6q-phytec-mira-rdk-emmc.dts
+++ b/arch/arm/boot/dts/imx6q-phytec-mira-rdk-emmc.dts
@@ -19,6 +19,7 @@

 / {
        model = "Phytec phyBOARD-MIRA Quad Carrier-Board";
+       model-short = "miraq";
        compatible = "phytec,imx6q-pbac06", "phytec,imx6qdl-pcm058", "fsl,imx6q";

        chosen {

修改后重新编译内核即可。

3、kernel

kernel image位置:kernel/arch/arm/boot/zImage

对于imx6q emmc核心板,内核需要打这个补丁:0001-mmc-core-Update-the-ext-csd.rev-check-for-eMMC5.1.patch

4、android system

修改BSP包的vendor/SIGMA/miraq/BoardConfig.mk文件,将系统镜像匹配为ext4格式,系统镜像默认为nand的ubifs格式

# sabresd_6dq default target for EXT4
BUILD_TARGET_FS ?= ext4                                                          #取消注释
include device/fsl/imx6/imx6_target_fs.mk                                        #取消注释

# uncomment below lins if use NAND
#TARGET_USERIMAGES_USE_UBIFS := true                                             #注释


_boardfiles := \
  $(_thisdir)/files/fstab.sd:root/fstab.${_hw}  \                                #将fstab.default:root修改为fstab.sd:root
  $(_thisdir)/files/init.rc:root/init.${_hw}.rc         \
  $(_thisdir)/files/init.usb.rc:root/init.${_hw}.usb.rc \
  $(_thisdir)/files/ueventd.rc:root/ueventd.${_hw}.rc   \
  \
  $(_thisdir)/files/audio_policy.conf:system/etc/audio_policy.conf \
  $(_thisdir)/files/audio_effects.conf:system/etc/audio_effects.conf \
  $(_thisdir)/files/dhcpcd.conf:system/etc/dhcpcd/dhcpcd.conf \
  $(_thisdir)/files/required_hardware.xml:system/etc/permissions/required_hardware.xml \
  $(_thisdir)/files/EP0700M09.idc:system/usr/idc/EP0700M09.idc \

修改vendor/SIGMA/miraq/files/fstab.sd文件,

/dev/block/mmcblk3p5  /system   ext4    ro                              defaults                                     # mmcblk0p5 --> mmcblk3p5
/dev/block/mmcblk3p8  /data     ext4    nosuid,nodev,nodiratime,noatime defaults                                     # mmcblk0p8 --> mmcblk3p8
/dev/block/mmcblk3p6  /cache    ext4    nosuid,nodev                    defaults                                     # mmcblk0p6 --> mmcblk3p6
/dev/block/mmcblk3p7  /device   ext4    nosuid,nodev                    defaults                                     # mmcblk0p7 --> mmcblk3p7

mmcblk0是sd卡的挂载目录,emmc的挂载目录是mmcblk3

修改后重新编译系统镜像

make clean                              #如果该BSP包之前编译过nand的镜像,需要先执行这步操作,否则跳过此步骤
make -j4

系统镜像编译完成后,ramdisk.img也更新了,所以需要重新编译内核镜像。

android 系统镜像的位置:bdir/android_imx/target/product/miraq/system.img

5、制作emmc镜像

android BSP包有一个可以生成SD卡镜像的工具:vendor/SIGMA/miraq/tools/gen_sd_img.sh,使用该工具来生成emmc的镜像。

先将gen_sd_img.sh, barebox.bin, oftree, zImage, system.img放在同一个目录下。

mkdir images
cp vendor/SIGMA/miraq/tools/gen_sd_img.sh images/
cp barebox.bin images/
cp kernel/arch/arm/boot/dts/imx6dl-phytec-mira-rdk-emmc.dtb images/
cp kernel/arch/arm/boot/zImage images/
cp bdir/android_imx/target/product/miraq/system.img images/

修改gen_sd_img.sh

#!/bin/bash
#
# 2016 (c) Matthias Rabe <matthias.rabe@sigma-chemnitz.de>
#

# base config

# images
export BASE_DIR=[images]                                                 #[images]对应改为images目录的路径

rm -f x.{1,6,7,8}.img ${DEST}

if [ `expr 0 + 0${1}` -le 0 ]; then
        echo "usage $0: <sd_size in gb>"
        exit 1;
fi

DEST="sd.img"
DEST_SIZE=`expr ${1} \* 900 \* 1024`

ZIMAGE=${BASE_DIR}/zImage                                                	#修改zImage的路径
SYS_IMG=${BASE_DIR}/system.img												#修改SYS_IMG的路径
BARE_IMG=${BASE_DIR}/barebox.bin											#修改barebox的路径
#BARE_ENV=${BASE_DIR}/barebox.env											#注释
OFTREE=${BASE_DIR}/imx6dl-phytec-mira-rdk-emmc.dtb							#修改oftree路径

修改后,执行

./gen_sd_img.sh 1

在当前目录下生成sd.img, 该镜像就是emmc的镜像,将该镜像复制到sd卡上。

6、烧写android镜像。

开发板开机进入到barebox, 插入有emmc镜像的SD卡,

detect mmc3
cp -v /mnt/mmc/sd.img /dev/mmc3
reboot

烧写完成后重启进入到barebox, 修改/env/boot/emmc

#!/bin/sh

[ -e /env/config-expansions ] && /env/config-expansions

global.bootm.image="/mnt/emmc/linuximage"                                                          # zImage --> linuximage
global.bootm.oftree="/mnt/emmc/oftree"
global.linux.bootargs.dyn.root="root=/dev/mmcblk3p2 rootflags='data=journal'"

修改后保存环境,就可以从emmc启动android系统了。

saveenv
boot