IoTデバイス向けのデバッグツールおよび技術に関するプロフェッショナルガイド
DigiKeyの北米担当編集者の提供
2021-03-23
ソフトウェアとハードウェアがうまく調和しなければならない組み込みシステムの開発は、一見最もシンプルなモノのインターネット(IoT)デバイスであっても、非常に複雑で困難なものになります。そのため、何か問題が発生した場合は必然的に、デバッグにかかる時間が数時間ではなく、数週間から数ヶ月に及ぶこともあります。そのような遅延により、開発コストが増加し、製品を予定通りに市場投入することが妨げられ、製造スケジュールが遅延し、サプライチェーンや事業計画が破壊されます。
デバッグにかかる時間を短縮してプロジェクトを軌道に乗せるための最善の方法は、ハードウェアデバッグツールと無償で提供されるソフトウェアを組み合わせて、システムの性能や問題が発生している場所を把握することです。そのため、プロでも愛好家でも、作業に適したツールを持つことは、迅速かつ正確に作業を完了させるうえで大いに役立ちます。
この記事では、IoTデバイスのデバッグや性能分析に使用できる開発ツールやソフトウェアについて説明します。IoTデバイスの例としてSTMicroelectronicsの開発ボードを使用し、SEGGER Microcontroller Systemsのツールとソフトウェアを使用してシステムの分析とデバッグを行います。また、デバッグ時間を最小限に抑え、IoTプロジェクトをスケジュール通りに実現するためのいくつかのヒントやコツについても解説します。
デバッグのための一般的なIoTデバイス
IoTデバイスは、スマートホームから産業用監視制御まで、ほぼすべての産業で普及しています。さまざまなアプリケーションがある中で、IoTデバイスが持つ一般的なコンポーネントがいくつかあります。これには次のようなものが含まれます。
- マイクロプロセッサ
- 接続用の無線機
- センサ
開発者は、デバッグ技術を探求したり、アプリケーションコードの一部をテストしたりするために、自分のボードをカスタムスピンしたいとは思わないでしょう。なぜなら、時間がかかりすぎるからです。その代わりに、STMicroelectronicsのITノード用B-L4S5I-IOT01Aディスカバリキットのような低コストの開発ボードに取り組むほうが賢明です。これは、一般的なIoTデバイスに見られるほぼすべてのものを備えています(図1)。
図1:STMicroelectronicsのITノード用B-L4S5I-IOT01Aディスカバリキットには、IoTデバイスに通常必要とされるすべてのコンポーネントが含まれています。(画像提供:STMicroelectronics)
このボードには、120MHzで動作するArm® Cortex®-M4マイクロコントローラであるSTM32L4S5VIT6が搭載されています。これは、最大2メガバイトのフラッシュと640キロバイトのRAMによりサポートされています。今回の演習の目的として重要なのは、このボードにはWi-Fiと多数のセンサが搭載されており、模擬IoTテストデバイスを素早く構築するために使用できることです。
プロ仕様のデバッグ用ハードウェアツール
ほぼすべての開発ボードにオンボードJTAG/SWDインターフェースが搭載されているため、開発者が自分でプログラマを用意する必要はありません。その代わり、すぐに開発ボードで作業することができます。これはマーケティング目的において素晴らしいことですが、実際のエンジニアリングにおいてはそうではありません。多くの場合、オンボードデバッガは大幅に縮小されたバージョンであり、使用可能なブレークポイントの数やインターフェースのボーレートなどの制限があります。初心者にはこれらの制限は大したことがないように思えるかもしれませんが、ブレークポイントが無制限であれば、ブレークポイントを何度も有効にしたり無効にしたりする必要がなくなりますし、アプリケーションのトレースには高速のボーレートが必要です(トレースについては、ソフトウェアツールのセクションで詳しく説明しています)。
プロフェッショナルなデバッグ体験を提供できるツールはいくつかありますが、ツール自体はソリューションの半分に過ぎません。ツールには、優れたソフトウェアによるサポートが必要です。ハードウェアとソフトウェアの両面で優れたツールセットの1つが、SEGGER J-Linkシリーズです。このシリーズは、学生や愛好家から本格的なプロまで、ほぼすべてのタイプの開発者に向けてデバッガバージョンを用意しています。
これまでの経験から、一般の開発者にとって最も便利と思われるのが、J-Link BaseとJ-Link Ultra+という2つのモデルです(図2)。これら2つのユニットのフォームファクタは同じですが、J-Link Ultra+は、RAMへのより高速なダウンロード速度(1.0MB/sではなく3MB/s)とより高速なSWDインターフェース速度(30MHzではなく100MHz)を開発者に提供します。開発者がアプリケーションをトレースして、性能やRTOSの動作を把握したり、システムをデバッグしたりする際には、この高速化が大きな違いをもたらします。
図2:SEGGERのJ-Link Ultra+は、50MHzのターゲットインターフェースを通じて、向上したデバッガ体験を開発者に提供します。(画像提供:SEGGER Microcontroller Systems)
J-LinkとB-L4S5I-IOT01A開発ボードの優れた点は、Tag-ConnectのTC2050-IC-NLケーブルとTC2050-CLIP-3PACKリテーナクリップを介して、両者を接続できることです。これらにより、「ネイルパッド」を介して開発ボードにデバッガを接続することができます(図3)。J-Linkの20ピンコネクタをTC-2050ケーブルの10ピンコネクタに合わせる必要がある場合があります。これに使用できるオプションとしては、8.06.04 J-Link 10ピンニードルアダプタがあります。
図3:B-L4S5I-IOT01A開発ボードにおいて、Tag-Connectケーブルアセンブリは、針のむしろのようなプリント基板フットプリント(右)を介して接続できます。(画像提供:STMicroelectronics)
開発者がハードウェア側でこのパスを閉じたら、ソフトウェアツールを使用してアプリケーションの分析とデバッグを行うことができます。
プロ仕様のデバッグ用ソフトウェアツール
SEGGERのJ-Linkツールとかなり相性の良いソフトウェアツールには、意外にもSEGGERが提供していないものが多くあります。以下では、それらの無料ツールをいくつか紹介し、開発者が各ツールをソフトウェアのデバッグにどのように利用できるかを説明します。
最初は、J-Scopeです。J-Scopeは、変数の値を時間経過とともに表示するオシロスコープのようなツールです。開発者は1つの変数を監視することも、数十個の変数を監視することもできます。ただし、監視する変数の数が増えれば増えるほど、サンプルバッファがオーバーフローしてデータが失われるまでに取得できるサンプル数は少なくなります。
変数は、コンパイラが出力するELFファイルをJ-Scopeに提供することで選択されます。これにより、読み取るべきメモリロケーションが提供され、開発者はサンプルレートを設定して、変数が時間とともにどのように変化するかを監視することができます。3変数のトレースの簡単な例を、図4に示します。
図4:J-Scopeは、アプリケーションがリアルタイムで動作している間、J-Linkを通じて変数を監視することができます。(画像提供:SEGGER Microcontroller Systems)
次は、Ozoneです。Ozoneは、デバッガインターフェースであり、パフォーマンスアナライザでもあります。開発者はELFファイルをツールに読み込み、ソースレベルのデバッグを行うことができます。ブレークポイントを設定し、コードを更新することができます。開発者にとって特に便利な機能は、命令のトレースを行い(ハードウェアがサポートする場合)、どんなアセンブリコードやCコードのステートメントが実行されたかを特定することができることです。これは、HiL(ハードウェアインループ)テストのコードカバレッジを検証する際に特に便利です。
Ozoneはまた、開発者がシステムの性能を分析し(図5)、時間経過とともに変数を可視化するのにも役立ちます。このツールは、J-Scopeのような機能をより統合化された方法で提供します。また、消費電力を監視したり、これらのイベントをすべて1箇所にまとめて同期させたりするために使用することもできます。
図5:Ozoneは、コードカバレッジやRTOSに対応したデバッグに加えて、アプリケーションがリアルタイムで動作している間、J-Linkを通じて変数をトレースするために使用できます。(画像提供:SEGGER Microcontroller Systems)
3つ目のツールは、SystemViewです。SystemViewにより、開発者はRTOSシステムのランタイム動作を分析することができます。タスクの切り替えはトレースバッファに記録され、デバッガを通じてSystemViewに報告されます(図5)。SystemViewはこの情報を、開発者がコンテキストスイッチを見てシステムの性能を測定できるように表示します。これも、システムを可視化して、バグなどの問題点を発見するための優れた方法です。
図6:SystemViewがRTOSへのリンクを提供することにより、開発者はタスクの性能を測定し、RTOSがいつ何をしているかを可視化することができます。(画像提供:SEGGER Microcontroller Systems)
組み込みシステムをデバッグするためのヒントとコツ
IoTデバイスをデバッグするには、ハードウェアとソフトウェアの両面で適切なツールを用意する必要があります。開発者がデバッグに費やす時間を最小限に抑えるには、この2つの要素が揃っている必要があります。デバッグを成功させるには、開発者が留意すべき以下のような「ヒントとコツ」があります。
- インターフェースのボーレートを最大化するプロ仕様のデバッガを使用します。システムから取得可能な有用なデータの量は、そのデータをいかに早く受け取ることができるかによって変わります。速度が遅いと、デバッグセッションが長くなります。
- 開発サイクルの早い段階で、デバッグソフトウェアをセットアップします。開発者は、問題が発生するまでデバッグツールのセットアップを待つべきではありません。
- 開発の初めからトレースツールを使用します。これにより、開発者はシステムの性能を監視し、ソフトウェアの変更がどのように影響するかを即座に把握することができます。
- テスト中にシステムのコードカバレッジを把握するために、命令トレーシングやプログラムカウンタのサンプリングを活用します。テストされていない条件付き分岐やコードには、バグが存在します。
- リアルタイム転送(RTT)ライブラリなどの高速転送プロトコルを活用して、データをチップ外に出します。
これらの「ヒントとコツ」に従えば、IoTデバイスの開発に取り組む際に大幅に時間を節約でき、悩み事が減ることでしょう。
結論
IoTデバイスのソフトウェアは複雑化していますが、だからといって、プロや愛好家の開発者がシステムのデバッグに終始する必要はありません。プロ仕様の開発ツールやソフトウェアを使用することで、開発者は単にシステムをデバッグするだけでなく、システムの性能を分析して向上させるために必要な洞察を得ることができます。これらのツールに投資することで、デバッグにかかる時間を大幅に短縮し、プロジェクトを合理的な時間内に稼働させて市場に送り出すことができるのです。
免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。


