記事

IoTへの挑戦 Raspberry PiでWindows 10 IoT Coreを動かす(6)

VisualStudio 2015のデバッガの機能を利用してBlinkyの動きを見る
 前回でBlinkyのプログラムを起動して、Raspberry Pi2 model BのGPIOの5番ピンでLEDを点滅させることができました。
 今回は、VisualStudio 2015のデバッガの機能を利用してプログラムがどのように動いているのか確認します。

サンプル・プロジェクトBlinkyを開く
 前回テストしたBlinkyのプロジェクトを開いて、MainPage.xaml.csのソース・ファイルを開くと次のようになります。

iot01-8c3701b2.png

 デバッグ・モードでステップ動作を行うためには、ブレークポイントを設定する必要があります。ブレークポイントを設定してデバッグ・モードでプログラムをスタートすると、プログラムを実行し、ブレークポイントに達するとその命令を実行する前にプログラムを中断し、プログラムの実行状況を確認することができます。

ブレークポイントの設定 
 プログラムを中断する場所を選択し、メニューバーのデバッグを選択すると、次に示すようにドロップダウン・リストが表示されます。
 ソース・プログラムのデバッグで中断する場所を選択し、ドロップダウン・リストの「ブレークポイントの設定/解除 (G) F9」を選択すると、ブレークポイントが設定されます。

iot02-8f4b18da.png

 中断する場所を設定し、F9ボタンを押してブレークポイントを設定することもできます。

iot03-592a1f79.png

 メイン・プログラムの最初の命令と、タイマのイベントごとに呼び出されるTimer_Tick()関数の入り口に設定します。関数の入り口の範囲を示す の位置にもブレークポイントを設定できます。

iot04-fd086ea2.png


デバッグを開始
 ブレークポイントの設定が終わったら、次はデバッグの開始です。メニューバーのデバッグ>デバッグの開始、またはツールバーの右向きの緑色の三角のアイコンをクリックしてデバッグを開始します。しばらくするとデバッグ・モードが開始されます。同時に、次に示すように最初のブレークポイントでプログラムの実行が中断します。

iot05-d2eede45.png

ステップ動作を行う
 ステップ動作を行うために、メニューバーのデバッグを選択すると、次に示すようにデバッグ・モードでの各種の機能を選択できるリストが表示されます。

iot06-9c6612f2.png

 このリスト中でもよく利用される次の機能についてはツールバーにアイコンとして設定されています。

機能 動作内容
続行 デバッグの開始、中断したデバッグを再開し続行する
すべての中断 プログラムを停止せずデバッグを中断する
デバッグの停止 デバッグを停止する
再起動  現在のデバッグ セッションが停止し、デバッガのスタートアップ プロジェクトを再起動する
ステップイン 関数を呼び出す場合、その関数の内部の最初の処理を行い中断する。それ以外は次の命令が実行され中断する
ステップオーバー 関数を呼び出す場合、呼び出した関数の処理を行った後中断する。それ以外は次の命令が実行され中断する
ステップアウト 関数内の残りの命令を実行し、関数の呼び出し元に戻り中断する

 今回は、「ステップイン」アイコンをクリックしてプログラムの実行の様子を確認していきます。

iot07-856c793f.png

 ステップインのアイコンをクリックすると、InitializeComponent();を実行し次の命令の前に黄色い矢印が表示されます。

iot08-c37410af.png


 ステップインで各行の命令を実行していくと、1行ずつ順番に黄色い矢印が進んでいきます。次に示すように、gpioの初期化の関数を呼び出す命令の行まで進みました。InitGPIO()が汎用入出力ポートの初期化関数です。

iot09-d59b9ea3.png

 関数を呼び出す命令でステップインを実行すると、次に示すようにInitGPIO()関数の最初に制御が移ります。
 この関数内では、GPIOのポートを出力に設定し、出力の設定値をHIGHにしています。

image019-f2e2182f.png


 GPIOの初期化の後はタイマを起動します。その後は次に示すシステムが用意したフォームをアクティブにして表示する処理を行います。この処理が行われるとWindowの画面が表示されます。

image021-286876ac.png

 メインの処理はタイマを起動したらあとは何もすることがなくなります。LEDの点滅は500msごとに起動されるTimer_Tick() 関数で行います。フォームの表示後はタイマによりTimer_Tick() 関数が呼び出され、デバッガもその関数に制御が移ります。ステップイン操作で1行ずつ動作を確認することができます。

image023-7ebb5503.png


タイマから呼び出される処理
 500msごとに起動されるTimer_Tick() 関数は最初に、GPIOに出力する設定値pinValueの値がHIGHか確認します。
 HIGHならLOWを設定し出力します。HIGHでないときはHIGHを設定しディジタル・ポートに出力しLEDを点滅します。

image025-f029ab05.png

image027.png

 今回は、VisualStudio2015のデバッグ処理でプログラムを1命令ずつ実行し、LEDの点滅を確認しました。デバッグ・モードで命令の実行の中断時には、その時点の変数の値の様子が確認できます。次回確認してみます。

(2016/2/15 V1.0)

<神崎康宏>


バックグラウンド

デバッグ;ここで用いているプログラムBlinkyは、マイクロソフトが用意しているので、正常に動きます。したがって、デバッグの必要はありません。今回は、デバッグの操作の基本であるブレークポイントの使い方を説明しています。

連載メニュー IoTへの挑戦 Raspberry PiでWindows 10 IoT Coreを動かす

(1) 5千円台のマイコン・ボードRaspberry PiでWindows10が動く

(2) Windows 10 IoT Coreのダウンロードとインストール

(3) Windows 10 IoT Core Dashboardが開発基地

(4) 無償で使える開発ツールVisual Studio2015のインストール

(5) Visual StudioでLEDを点灯するサンプル・プログラムを動かす

(6) VisualStudio 2015のデバッガの機能を利用してBlinkyの動きを見る

(7) Blinkyプロジェクトの中身を見る

(8) 押しボタン・スイッチの検出を行うプログラムをテスト

(9) デバッガを使ってPushButtonの処理内容を確認

(10) UIをもたないでバックグラウンドで実行されるプログラム

(11) ボタンとLED点滅の新規プロジェクトの作成