NEONアプリ構築編
GstreamerというLinuxのパッケージを利用して、GPUを持たないi.MX 6SoloXでムービーを動かします。モジュールの組み込み方から動かし方までわかります。
GstreamerというLinuxのパッケージを利用して、GPUを持たないi.MX 6SoloXでムービーを動かします。モジュールの組み込み方から動かし方までわかります。
LinuxとRTOSの連携デモをお見せします。コア間通信のしくみが分かれば、他のOSにも応用ができそうです。見た目は地味ですが、重要な差異化技術です。
i.MX 6SoloXのCortex-M4側にRTOSであるMQXを実装します。パッケージのダウンロードから、サンプルデモアプリをバイナリ化するまでの流れが掴めます。
組み込みLinuxが初めてでも、i.MX 6SoloXでLinuxを動かせます。Linuxパッケージ「YOCTO」を使ったちょっといつもと違うビルド方法も体験できます。
NXPのi.MX 6SoloXは、Cortex-A9とCortex-M4のヘテロ構成SoCです。この記事では、組み込みOSの代表として、Cortex-A9にYocto Linuxを実装し、Cortex-M4にはMQX(RTOS)を実装し、LinuxとRTOSの共存するシステムの構築方法を紹介します。また、Linuxのカーネルからの構築方法や、コア間通信、NEONによるG-Streamアプリ(ソフトウェアビデオデコーダー)などの実装方法も併せて解説します。
割り込みは、タスクとは独立して実行される処理です。そこで、T-Kernelにおける割り込みの利用方法に加えて、実行時のコンテキストの違いから生じる動作の違い、割り込みハンドラの作成方法や動作の詳細を説明します。
今回は、タスク例外コード0のタスク例外の利用例を示します。例外コードが0以外のタスク例外については longjmp() などを用いて復帰処理なども行うことができ、これをあわせて利用することで柔軟な例外処理が可能となりますが、複雑なので本記事では省略します。
可変長メモリプールは、任意のサイズのメモリブロックを管理するための機能です。固定長メモリプールは、固定サイズのメモリブロックを管理するための機能です。メモリブロックのサイズが固定である以外は、基本的に可変長メモリプールと同じ機能です。
ランデブが成立すると、ランデブを呼出したタスクから受け付けたタスクへ、呼出メッセージが渡されます。具体的には、呼出側タスクがtk_cal_porで指定したmsg以下の領域のcmsgszバイトが、受付側タスクがtk_acp_porで指定したmsg以下の領域にコピーされます。