一.i.MX8QM Xen 双系统
1.1 功能简介
Xen是由剑桥大学计算机实验室开发的一个开源项目。是一个直接运行在计算机硬件之上的用以替代操作系统的软件层,它能够在计算机硬件上并发的运行多个操作系统 , 对 Resource, Memory, Pad 等硬件资源进行划分和管理 ,Xen Hypervisor有多种 Type for 嵌入式系统 ,Desktop ,Service等 ,在嵌入式平台使用的是下列 Type-1 结构
1.2 功能应用
基于 NXP i.MX8QM 的 Xen Hypervisor可用于双系统的开发 ,在 i.MX8 上可同时运行仪表和中控娱乐系统
二.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 |
2.4 在local.conf 中加入 Xen
使用bitbake 命令进行编译 :
$ bitbake fsl-image-validation-imx |
编译完成后将在下面的路径中生成目标文件 :
build-wayland_8qm_mipi/tmp/deploy/images/imx8qmmek |
生成目标文件 :
fsl-image-validation-imx-imx8qmmek.sdcard |
三.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 |
3.2 下载 NXP Android 官方软件包
在 NXP 官网https://www.nxp.com/ 搜索P9.0.0_2.0.0_GA
选择 P9.0.0_2.0.0_GA_ANDROID_SOURCE 打开 :
对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 |
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 目录下看到编译生成的镜像问题
四.参考文档
【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
五.预告
通过 “ 基于 NXP i.MX8QM Xen 双系统 环境搭建 ”这篇博文 ,相信大家已经了解了搭建 Xen 双系统的环境的过程 , 接下来将对 “ 基于 NXP i.MX8QM Xen 双系统运行 ”的内容和 “ 基于 NXP i.MX8QM Xen 双系统 GPU 资源分配 ”进行讲解
敬请期待 !
评论