マルチコア・プログラミングを習得する一番の近道は、ASMP向けのアプリケーションを実際に設計・開発することです。配布されているサンプル・アプリケーション(ソースコード)を実行することも非常に良い学習方法です。本初心者講座では、入手性に優れ、設計次第で演算性能を極限まで追求できる、ソニーのSPRESENSE™を活用し、マルチコア・プログラミングの真に迫ります。
それでは、マルチコア・プログラミングのファースト・ステップ、開発環境の構築から始めましょう。「開発環境SPRESENSE SDKのインストール・アプリケーションの実行」「デバッガの準備」「実行中のASMP構成の全コアの状態を見る」方法を紹介いたします。
目次
SPRESENSE SDKの特徴
SPRESENSE SDKは、ASMPアーキテクチャのSPRESENSEを簡単かつディープに開発できる開発環境です。SPRESENSE SDKは大別して4個の機能を提供します(図1)。①ASMPの各コア用の実行ファイルを生成・実行するための「ビルドツール」。②実行中の全コアの状態・プログラムの実行位置を可視化するための「デバッガ」。③接続された各種デバイス(LCD、マイク、センサーなど)を制御するための「デバイスドライバ」。④「RTOS(NuttX)」がCPUコアやタスクを制御する機能を提供。これら4つの機能で構成されています。
なお、「デバッガ」は、デバッグ用ハードウェアであるICEデバッガ(デバッグプローブ:別売)を制御する機能「OpenOCD」と、ユーザーの操作を支援するインタフェース機能「gdb」から構成されています。
統合開発環境(IDE)とSPRESENSEの連携
SPRESENSE SDKは、Visual Studio CodeやEclipse IDEに代表される統合開発環境(IDE)と連携することができます。IDEを使うことにより、ソースコードの効率的な編集機能や、コンフィグレーション機能、GUIによる簡単操作機能が利用可能です。
サンプル・アプリケーションの概要
今回は、SPRESENSE SDKを利用し、最も単純なサンプル・アプリケーション「Hello, World!」をビルドし実行する手順を紹介いたします。非常に簡単なアプリケーションですが、裏ではRTOSやハードウェア制御(デバイスドライバ)が実行されています(図2)。RTOSやデバイスドライバの関係性が判ると、よりハイレベルなアプリケーションも設計しやすくなるでしょう(図3)。
SPRESENSE SDKのインストールと、アプリケーションの実行方法
まず、SPRESENSE SDKをインストールし、アプリケーションを実行する手順を紹介いたします。SPRESENSE SDKはLinuxだけでなく、WindowsやmacOSにも対応したマルチプラットフォーム・ソフトウェアです。ここではWindows環境を取り上げました。なお、本手順は2019年8月末時点の内容となります。最新のSPRESENSE SDKに対応する手順や、詳細な手順は「SPRESENSE SDK チュートリアル」をご参照ください。
SPRESENSE SDK の使い方|Sony Developer World
ICEデバッガの準備:NXP LPC-Link2
SPRESENSEはICEデバッガ接続端子としてSPRESENE Extension Board上にハーフピッチ10pinのSWD端子を備えています。この端子にCMSIS-DAP準拠のデバッガを接続することにより、PCからのデバッグ、つまりはSPRESENSEの内部状態を解析することができます。ここでは安価で入手しやすいLPC-Link2のセットアップ手順を紹介いたします。なお、2019年8月現在、SPRESENSE SDKは下記のICEデバッガに対応しています。
- NXP LPC-Link2
- Keil UNLINK2
CMSIS-DAP 準拠デバッグアダプタ|SPRESENSE SDK 開発ガイド LPC-Link 2 Configuration Tool|NXP Community
統合開発環境(IDE)とデバッガを使って、CPU内部状態を確認する
最後に、デバッガを活用して実行中のCPUコアが、どのプログラム(ファイル・行番号・位置)を、どのような状態(メモリ・レジスタ)で実行しているかを覗いてみましょう。ここではEclipse IDEとSPRESENSE SDKの連携を紹介いたします。なお、本手順は2019年8月末時点の内容となります。最新のSPRESENSE SDKに対応する手順や、詳細な手順は「SPRESENSE SDK デベロッパーガイド」をご参照ください。
Eclipse IDEでのデバッグ方法|SPRESENSE SDK 開発ガイド SPRESENSE SDK + Visual Studio Codeに関する情報はこちら
まとめ
以上の手順でSPRESENSEを使ってASMP対応のアプリケーションを開発する準備が整いました。次回いよいよマルチコア・マルチタスクで動作するプログラムの設計方法と、ソースコードの書き方について紹介いたします。是非、ご期待ください。
SONY SPRESENSE
SPRESENSEは、Arm Cortex-M4コア(FPU機能搭載)を6コア搭載したシングルボードコンピュータです。マルチコアによる豊富な演算能力をはじめ、魅力的なペリフェラルを多数搭載しながら、電池のみでも駆動できる超低消費電力な製品です。本格的なエッジコンピューティングを是非ご体験ください。システムの試作はもちろん、PoC、製品化にもご活用いただけます。
開発者向けサイトを見る Switch-Scienceで購入する
APS学習ボード(SPRESENSE™ Extension Board用)
APS学習ボード(SPRESENSE™ Extension Board用)は、初心者講座の内容をはじめ、SPRESENSE SDKの提供するオーディオ入力機能やLCDドライバをはじめとする各種機能を、回路設計をすることなく簡単にお試しいただけるよう開発したAPSオリジナルの評価基板です。Web記事と併せてお楽しみください。
取扱説明書|APS学習ボード Switch-Scienceで購入する(ボード単体) Switch-Scienceで購入する(部品キット)
こちらも是非
“もっと見る” マルチコア|SPRESENSE編
SPRESENSE×Neural Network Console:第4回|推論モデルを最適化し、エッジAIによるオリジナルの音声識別システムを構築する
今回の初心者講座では、SPRESENSEの「ハイレゾオーディオ入力」と「DNNRT機能」により「Neural Network Console」で生成したディープニューラルネットワーク(DNN)の推論モデルを統合。エッジ単体で完結するオリジナルの音声識別システムを構築する技法を解説いたします。
SPRESENSE×Neural Network Console:第3回|オーディオ解析に必要な学習用データを採取し、PC上で学習・推論を実行する
今回の初心者講座では、SPRESENSEに搭載されたハイレゾオーディオ入力を活用し、環境音を録音し、ディープニューラルネットワークによる音声分類に不可欠な学習用データと検証用データを生成する方法について解説します。また、PC上で動作するNeural Network Consoleによって生成した推論モデルをエッジ・デバイスへ統合するために解決すべき課題を紹介します。
SPRESENSE×Neural Network Console:第2回|異常検知に活用できるニューラルネットワークで波形の扱い方を学ぶ
SPRESENSEのDNNRT機能が扱うことのできるデータは画像だけでなく、産業分野を中心に人気が高まっている「異常検知・故障予知」に活用できる加速度センサーや大気圧センサーなどから収集した波形データも解析することができます。さらにSPRESENSEに内蔵されたハイレゾオーディオ録音機能も周辺環境を可聴域の波形データとして記録することができる優れたセンサーとして利用可能です。そこで、今回の初心者講座では、まず簡単な波形データの解析方法を例に、DNNRT機能から波形データを扱うシステムの構築方法について解説。DNNRT機能を活用した製品開発に必要となる技術を紹介いたします。