SPRESENSEではじめるマルチコア開発


図

マルチコア・プログラミングを習得する一番の近道は、ASMP向けのアプリケーションを実際に設計・開発することです。配布されているサンプル・アプリケーション(ソースコード)を実行することも非常に良い学習方法です。本初心者講座では、入手性に優れ、設計次第で演算性能を極限まで追求できる、ソニーのSPRESENSE™を活用し、マルチコア・プログラミングの真に迫ります。

それでは、マルチコア・プログラミングのファースト・ステップ、開発環境の構築から始めましょう。「開発環境Spresense SDKのインストール・アプリケーションの実行」「デバッガの準備」「実行中のASMP構成の全コアの状態を見る」方法を紹介いたします。

図

▼目次

Spresense SDKの特徴

Spresense SDKは、ASMPアーキテクチャのSpresenseを簡単かつディープに開発できる開発環境です。Spresense SDKは大別して4個の機能を提供します(図1)。①ASMPの各コア用の実行ファイルを生成・実行するための「ビルドツール」。②実行中の全コアの状態・プログラムの実行位置を可視化するための「デバッガ」。③接続された各種デバイス(LCD、マイク、センサーなど)を制御するための「デバイスドライバ」。④「RTOS(NuttX)」がCPUコアやタスクを制御する機能を提供。これら4つの機能で構成されています。

なお、「デバッガ」は、デバッグ用ハードウェアであるICEデバッガ(デバッグプローブ:別売)を制御する機能「OpenOCD」と、ユーザーの操作を支援するインタフェース機能「gdb」から構成されています。

図
図1:Spresense SDKの構成

統合開発環境(IDE)とSpresenseの連携

Spresense SDKは、Visual Studio CodeやEclipse IDEに代表される統合開発環境(IDE)と連携することができます。IDEを使うことにより、ソースコードの効率的な編集機能や、コンフィグレーション機能、GUIによる簡単操作機能が利用可能です。

サンプル・アプリケーションの概要

今回は、Spresense SDKを利用し、最も単純なサンプル・アプリケーション「Hello, World!」をビルドし実行する手順を紹介いたします。非常に簡単なアプリケーションですが、裏ではRTOSやハードウェア制御(デバイスドライバ)が実行されています(図2)。RTOSやデバイスドライバの関係性が判ると、よりハイレベルなアプリケーションも設計しやすくなるでしょう(図3)。

図
図2:「Hello, World!」の裏側

図
図3:複数の機能を統合した、リモート温度監視システムの例

Spresense SDKのインストールと、アプリケーションの実行方法

まず、Spresense SDKをインストールし、アプリケーションを実行する手順を紹介いたします。Spresense SDKはLinuxだけでなく、WindowsやmacOSにも対応したマルチプラットフォーム・ソフトウェアです。ここではWindows環境を取り上げました。なお、本手順は2019年8月末時点の内容となります。最新のSpresense SDKに対応する手順や、詳細な手順は「Spresense SDK チュートリアル」をご参照ください。


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

統合開発環境(IDE)とデバッガを使って、CPU内部状態を確認する

最後に、デバッガを活用して実行中のCPUコアが、どのプログラム(ファイル・行番号・位置)を、どのような状態(メモリ・レジスタ)で実行しているかを覗いてみましょう。ここではEclipse IDEとSpresense SDKの連携を紹介いたします。なお、本手順は2019年8月末時点の内容となります。最新のSpresense SDKに対応する手順や、詳細な手順は「Spresense SDK デベロッパーガイド」をご参照ください。


まとめ

以上の手順でSpresenseを使ってASMP対応のアプリケーションを開発する準備が整いました。次回いよいよマルチコア・マルチタスクで動作するプログラムの設計方法と、ソースコードの書き方について紹介いたします。是非、ご期待ください。