一、i.MX8QM Xen 双系统
1.1 功能简介
Xen 是由剑桥大学计算机实验室开发的一个开源项目。是一个直接运行在计算机硬件之上的用以替代操作系统的软件层,它能够在计算机硬件上并发的运行多个操作系统 , 对 Resource, Memory, Pad 等硬件资源进行划分和管理 ,Xen Hypervisor 有多种 Type for 嵌入式系统 ,Desktop ,Service 等 ,在嵌入式平台使用的是下列 Type-1 结构
如下图 1 是 Xen Hypervisor 嵌入式系统 Type 图:
1.2 功能应用
基于 NXP i.MX8QM 的 Xen Hypervisor 可用于双系统的开发 ,在 i.MX8 上可同时运行仪表和中控娱乐系统
如下图 2 是 仪表和中控娱乐系统图
二、i.MX8QM Yocto 环境搭建 For Xen
Xen 可以支持多个 Linux 系统同时运行 ,也可以支持 Linux + Android 的方式 ,我们接下来要实现是 Linux + Android 方式来实现双系统 ,目前支持 Xen 方式的芯片有 i.MX 8QuadMax 和 QuadXPlus ,我们
将在 i.MX 8QuadMax EVM 板上搭建 Yocto For Xen
2.1 安装 Host Package
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat libsdl1.2-dev
i.MX layers host packages for a Ubuntu 12.04 or 14.04 host setup
$ sudo apt-get install libsdl1.2-dev xterm sed cvs subversion coreutils texi2html \
docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils \
libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc
2.2 通过 Repo 的方式来创建 Yocto Project
$ mkdir imx-yocto-bsp
$ cd imx-yocto-bsp
$ repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b
imx-linux-sumo -m imx-4.14.98-2.0.0_ga.xml
$ repo sync
2.3 fsl-setup-release.sh 设置
$ DISTRO=fsl-imx-wayland MACHINE=imx8qmmek source fsl-setup-release.sh -b build-wayland_8qm_mipi
PS : build-wayland_8qm_mipi 为自定义文件夹目录 ,可以根据自己的习惯命名平台 MACHINE=imx8qmmek 选择的是 IMX8QM
以上内容参考 i.MX_Yocto_Project_User's_Guide.pdf 3.1 Host Package 及 3.2 Setting up the repo utility
2.4 在 local.conf 中加入 Xen
以上内容参考 i.MX_Yocto_Project_User's_Guide.pdf 5.6.11 Building Xen
使用bitbake 命令进行编译 :
$ bitbake fsl-image-validation-imx
编译完成后将在下面的路径中生成目标文件 :
build-wayland_8qm_mipi/tmp/deploy/images/imx8qmmek
生成目标文件 :
fsl-image-validation-imx-imx8qmmek.sdcard
如下图 3 所示,为 Yocto 生成的目标文件截图:
三.i.MX8QM Android 环境搭建 For Xen
NXP 推荐的 Ubuntu 版本为 16.04 64bit version ,JDK 版本是 openjdk-8-jdk ,编译的安卓版本是 : Android Pie 9.0
3.1 安装 Andriod 编译过程中需要的相关软件包
$ sudo apt-get install uuid uuid-dev
$ sudo apt-get install zlib1g-dev liblz-dev
$ sudo apt-get install liblzo2-2 liblzo2-dev
$ sudo apt-get install lzop
$ sudo apt-get install git-core curl
$ sudo apt-get install u-boot-tools
$ sudo apt-get install mtd-utils
$ sudo apt-get install android-tools-fsutils
$ sudo apt-get install openjdk-8-jdk
$ sudo apt-get install device-tree-compiler
$ sudo apt-get install gdisk
$ sudo apt-get install liblz4-tool
$ sudo apt-get install m4
$ sudo apt-get install libz-dev
以上内容参考 Android_User's_Guide.pdf 2.1 Setting up your computer
3.2 下载 NXP Android 官方软件包
在 NXP 官网 https://www.nxp.com/ 搜索 P9.0.0_2.0.0_GA
如图 4 Android 工具包下载网站:
选择 P9.0.0_2.0.0_GA_ANDROID_SOURCE 打开 :
如图 5 是 Android 工具包下载网站:
对 imx-p9.0.0_2.0.0-ga.tar.gz 进行解压 :
$ tar xzvf imx-p9.0.0_2.0.0-auto-ga.tar.gz
获取 repo 文件 :
$ mkdir ~/bin $ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ export PATH=${PATH}:~/bin
对镜像源进行修改 :
$ vim ~/bin/repo
执行下载 Android Code 脚本
$ cd ~/imx-p9.0.0_2.0.0-ga
$ source imx_android_setup.sh
编译过程中会出现错误 :Failed to connect to android.googlesource.com port 443: Connection timed out
把 imx-p9.0.0_2.0.0-ga/android_build/.repo/manifests/aosp-p9.0.0_2.0.0-ga.xml 文件,
“ fetch ” 由 Google 的地址改为清华的 :
重新执行脚本文件后等待 Android 的程序下载完成
$ source imx_android_setup.sh
3.3 i.MX8QM Android Source Code 编译
$ source imx_android_setup.sh
$ lunch mek_8q_car-userdebug
$ make -j4
进入到 android_build 文件目录 ,使用以下命令对 Android 系统进行编译
PS :如果 lunch 选择 mek_8q-userdebug 则不能产生 Xen 工程需要的文件
由于使用 mek_8q_car-userdebug ,查看 device/fsl/imx8q/mek_8q/ BoardConfig.mk 发现编译涉及到 M4 部分的内容
由于涉及到 M4 部分的编译 ,需要下载 gcc-arm-none-eabi , 并设置 ARMGCC_DIR 的路径 ,编译过程中会有多处地方用到 ARMGCC_DIR , ARMGCC_DIR 的路径设置可以参考下面的设置 :
在 Host PC 目录下的 /etc/profile 文件里面指定 ARMGCC_DIR 的路径
编译结束后会在 out/target/product/mek_8q 目录下看到编译生成的镜像问题
如图 6 所示:Android 编译生成目标文件:
通过 这篇博文 ,相信大家已经知道要怎么搭建 Xen 双系统的环境了 , 接下来将对 “ 基于 NXP i.MX8QM Xen 双系统运行 ”的内容和 “ 基于 NXP i.MX8QM Xen 双系统 GPU 资源分配 ”进行讲解
同时,如果需进一步的技术交流讨论,请关注我“飞车侠”,并给我留言,我看到后会尽快回复~
四.参考文档
【1】 i.MX Yocto Project User's Guide , NXP Semiconductor ,Rev. L4.14.98-2.0.0_ga, 04/2019 ,Document Number: IMXLXYOCTOUG
【2】 Android™ User's Guide ,NXP Semiconductor ,Rev. P9.0.0_2.1.0-AUTO-ga, 04/2019 ,Document Number: AUG
评论