i.MX8 系列 | 上手必备攻略 - Xen 双系统环境搭建

一、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 

 

 

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

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

评论