スケーラブルな組み込み製品に最適なi.MX 8Mアプリケーション・プロセッサ・ファミリ
組み込み市場で定評のあるi.MX 6ファミリの後継であるi.MX 8M ファミリは2017年リリース以来、よりリーズナブルなi.MX 8M Miniやi.MX 8M Nanoが加わりさらにラインナップを拡充しています。本ウェビナーではi.MX 8Mファミリの特徴と利点について最新情報を交えてご紹介します。
組み込み市場で定評のあるi.MX 6ファミリの後継であるi.MX 8M ファミリは2017年リリース以来、よりリーズナブルなi.MX 8M Miniやi.MX 8M Nanoが加わりさらにラインナップを拡充しています。本ウェビナーではi.MX 8Mファミリの特徴と利点について最新情報を交えてご紹介します。
VIA Technologies社は、Arm SoCを搭載した組み込みボードの新製品「VAB-950」を発売した。VAB-950は、MediaTek社のSoC「i500」を搭載する。このSoCは、CPUコアやGPUコアに加えて、ニューラルネットワークの処理を高速に実行するAI処理専用のプロセッサコア(AIアクセラレータ)を内蔵する。
今回は、産業向けアプリケーションのPoCをイメージし、SPRESENSE SDKに同梱されたサンプル・アプリケーションである「マルチコアを使った録音プログラム(Audio Recorder)」を改変し、「自身で設計した信号解析アルゴリズムを実行するサブコアと連携」、高速かつ高精度に周辺状況を分析できるアプリケーションの開発方法を紹介いたします。
SPRESENSEは汎用CPU(サブコアであるCortex-M4)上でWAVやMP3を処理できる「ソフトウェア・エンコーダ/デコーダ」機能を提供しています。ソフトウェア・エンコーダ/デコーダをサブコア上で実行することにより、システムの根幹を担うメインコアに負荷をかけることなく音声処理を実現。また、サブコアは汎用CPUであることから、WAVやMP3の処理をしていない間でも他のタスクを処理するコアとして活用することができます。
今回の初心者講座では、サブコアの内部状態や処理対象となったデータの断片を、順序付けてメインコアへと送出できる『リングバッファ』について紹介いたします。なお、今回紹介する機能に対応したC言語のソースコードはGitHubにて公開しています。解説だけでなく、ソースコード・リーディングも活用し、コア間の連携方法への理解を深めましょう。
今回の初心者講座マルチコア編では「関数を呼び出したから、動いた」よりも、さらに一歩先へと踏み込んだ、マルチコアの真髄にフォーカス。サブコアがプログラムを開始する仕組みから、データの交換や同期(コア同士の連携)の方法、プログラムを高速化する際に注意すべきポイントなど、様々な設計技術を紹介いたします。
今回の初心者講座では、どのように処理するか・並列化していくかを学ぶ前段階として、どのようなデータを(What)、どのようにして(How)どこに収集すべきか(Where)を解説いたします。今回の内容を学習することで、IoTシステムの要となる「画像データ」や「音声データ」といったマルチメディアデータの取り扱い方法への理解も深まるでしょう。
マルチコア・プログラミングのファースト・ステップ、開発環境を構築から始めましょう。「開発環境SPRESENSE SDKのインストール」「アプリケーションの実行」「デバッガの準備」「実行中のASMP構成の全コアの状態を見る」方法を紹介いたします。
身の回りにある組み込みシステムは、複数のタスク(機能ブロック)の繋ぎ合わせにより実現されています。統合されているタスクには、画像解析、通信管理、組み込みAIによるデータの分析など、さまざまな物があります。今回の初心者講座は、複数のタスクを連携させる「マルチタスクの設計」方法と、タスクとタスクを結ぶために情報を交換するための領域「リソース」の管理方法について、ソニーのSPRESENSEを例として紹介します。