基于 NXP i.MX8QM Xen 双系统 环境搭建

一.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 资源分配 ”进行讲解

 

     敬请期待 !

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论