組み込みOS(Linux/MQX/Android)をi.MXに実装してみた

実験の概要

NXPのi.MX 6SoloXは、Cortex-A9とCortex-M4のヘテロ構成SoCです。この記事では、組み込みOSの代表として、Cortex-A9にYocto Linuxを実装し、Cortex-M4にはMQX(RTOS)を実装し、LinuxとRTOSの共存するシステムの構築方法を紹介します。また、Linuxのカーネルからの構築方法や、コア間通信、NEONによるG-Streamアプリ(ソフトウェアビデオデコーダー)などの実装方法も併せて解説します。

組み込みOSとは

組み込みOSは、パソコンなどに使用されているOSと違い、限られたハードウェア環境や資源で最大限の効率を発揮するように作られたOSですが、実に多くの種類が存在してきました。

この記事では、組み込みOSの代表として、「Yocto Linux」「Android」「MQX(RTOSとして)」をi.MX 6SoloXに実装する方法をご紹介します。他にも、組み込みOSの種類は多いです。APSでは、組み込みOSを扱っている他のコンテンツも用意しているので、参考にしてみてください。

2018年時点でのNXPのサイトでは、MQXに代わりFreeRTOSの実装に変更されています。つまり、i.MX 6SoloXのCortex-M4で動かせるRTOSは、今回紹介しているMQX以外にも対応できるということなので、ITRON系や独自のOSも組み込むことが可能なのです。

参考RTOSコンテンツ

i.MX 6SoloX SABRE board

i.MX 6SoloX SABRE boardi.MX 6SoloX SABRE board

今回の実験室で使用したボードMCI.MX 6SOLOX-SDB(i.MX 6SoloX SABRE board 以下、i.MX 6SoloX-SDB)は、下記から入手可能です。

ボードの入手はこちらから

ボードサイズも大きく、様々なペリフェラルが搭載されています。また、3軸の加速度センサーや3軸の磁気センサーも搭載されているため、IoTアプリケーションをM4で処理をしながら、Cortex-A9のLinuxでクラウドに接続するシステム構成も簡単に構築することができます。

LinuxとRTOSを共存させるための課題が多く語られるようになりましたが、i.MX 6SoloXはすでにその答えとなり、具体的な課題への手法を提示しています。

今回の動画で紹介している内容

  • ボードの紹介
  • CA9でLinuxを動かしながら、M4でMQXを動かします。
  • ヘテロの動作説明として、コア間通信を実装し動かします。
  • NEONの説明として、Linuxのソフトウェアビデオデコーダーを再生しています。

関連する実験室の内容

Linux 環境構築手順

組込みLinuxが初めてでも、i.MX 6SoloXでLinuxを動かせますLinuxパッケージ「YOCTO」を使ったちょっといつもと違うビルド方法も体験できます。「知っていて当然」な所も端折らず説明!

RTOS(MQX)環境構築手順

i.MX 6SoloXのCortex-M4側にRTOSであるMQXを実装します。パッケージのダウンロードから、サンプルデモアプリをバイナリ化するまでの流れが掴めます。

ヘテロ環境準備手順

LinuxとRTOSの連携デモをお見せします。コア間通信のしくみが分かれば、他のOSにも応用ができそうです。見た目は地味ですが、重要な差異化技術です。

NEONアプリ構築編

GstreamerというLinuxのパッケージを利用して、GPUを持たないi.MX 6SoloXで、ムービーを動かします。モジュールの組込み方から動かし方までわかります。

Android構築編

Android 4.4.3である「KitKat」のパッケージを i.MX 6SoloXに実装して、Webブラウザを動かしてみました。本物の「KitKat」を食べながら、Android OSをお試しください。まずは、パッケージのダウンロードから始めましょう!