TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトのデバッグ


ここまで構築したGNUツールチェーン、EclipseおよびOpenOCDを組み合わせて、ターゲットにTOPPERSサンプルプロジェクトを転送および書き込みを行い、それをデバッグする方法を説明します。


プロジェクトの作成

TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトのビルド」で作成した「OBJ」プロジェクトをEclipseのプロジェクトとして作成します。

前項でインストールしたEclipseを起動します。

アプリケーションメニューの「ファイル」から「新規」をクリックし、「既存コードでMakefileプロジェクト」をクリックします。

Eclipseの「既存コードでMakefileプロジェクト」メニュー


「新規プロジェクト」ダイアログが表示されます。

ここでは、各項目を以下の通りに入力、設定し、ダイアログ右下の「完了」をクリックします。


プロジェクト:<任意のプロジェクト名(ここでは「OBJ」)>

既存コードのロケーション:C:\cygwin64\home\<ユーザ名>\asp_1.9.2

インデクサー設定のツールチェーン:<なし>

「新規プロジェクト」ダイアログ


Eclipseの画面左側の「プロジェクト・エクスプローラー」タブに<プロジェクト名>のディレクトリが表示され、その下に「asp_1.9.2」以下のディレクトリ構造が表示されていることを確認します。

プロジェクト・エクスプローラー - 1


プロジェクトのクリーンとビルド

Eclipseから「OBJ」プロジェクトをビルド/クリーンします。

Eclipseの画面右側の「アウトライン」タブを「Makeターゲット」タブに切り替えます。

「Makeターゲット」タブ


すると、「プロジェクト・エクスプローラー」タブと同じように「Makeターゲット」タブに「OBJ」ディレクトリ構造が表示されます。

このツリーリストから「OBJ」を選択し、「新規Makeターゲット」ボタン(ツリーリスト上方の◎と+が合わさったようなアイコン)をクリックします。

「新規Makeターゲット」ボタン


「Makeターゲットの作成」ダイアログが表示されます。

まずは、プロジェクトのクリーンを行うMakeターゲットを作成します。

ここでは、各項目を以下の通りに入力し、ダイアログ下方の「OK」をクリックします。


ターゲット名:realclean

「Makeターゲットの作成」ダイアログ


すると、「Makeターゲット」タブのツリーリストの「OBJ」ディレクトリ以下に「realclean」が追加されます。

次は、これをダブルクリックします。

「realclean」ターゲット


Eclipseの画面下方の「コンソール」タブには、プロジェクトのクリーンが行われたことを示す表示が現れます。

これは、Cygwin上で「OBJ」ディレクトリの中で「$ make realclean」を実行したのと同じ動作をしたことを意味します。

「コンソール」タブ - 1

同じ要領で、「depend」と「all」のMakeターゲットも作成します。


ターゲット名:all

ターゲット名:depend

「all」と「depend」ターゲット


今後「OBJ」プロジェクトをビルドするときは「depend」、「all」の順に、クリーンするときは「realclean」のMakeターゲットをダブルクリックすれば良いことになります。


ST-LINK USBドライバーのインストール

ターゲットに内蔵されているデバッガーである「ST-LINK」のUSBデバイスドライバーをインストールします。

ダウンロードはこちらのページから。

お手数ですが、ユーザー登録しなければダウンロードできませんのでご注意を。

ダウンロードさえできれば、インストーラーの指示に従って作業を進めてください。


デバッガの登録

まず、nucleo_f401re.cfgをダウンロードし、以下のディレクトリにコピーしておきます。

これは、OpenOCDがターゲットに接続するために必要な設定ファイルです。


C:\cygwin64\usr\local\share\openocd\script\board

「nucleo_f401re.cfg」設定ファイル


ここで、ターゲットとPCをUSBケーブルで接続します。

USBケーブルで接続したターゲット


正常に接続されると、PCはターゲットをディスクドライブとして認識します。

ディスクドライブとして認識されたターゲット


次に、アプリケーションメニューの「実行」から「外部ツール」をクリックし、「外部ツールの構成」をクリックします。

Eclipseの「外部ツールの構成」メニュー


「外部ツール構成」ダイアログが表示されます。

ダイアログ左側のリストから「プログラム」の項目をダブルクリックします。

「外部ツール構成」ダイアログ - 1


「外部ツール構成」ダイアログの表示が変わります。

「メイン」タブ内の「ロケーション」テキストボックスの右下の「変数」ボタンをクリックします。

「外部ツール構成」ダイアログ - 2


「変数の選択」ダイアログが表示されます。

「変数を選択してください~」という表示の下のテキストボックスに「openocd」と入力します。

すると、変数リストには、この文字列に合致する変数が残ります。

リストの右下の「変数の編集」ボタンをクリックします。

「変数の選択」ダイアログ - 1


「設定」ダイアログが表示されます。

「ストリング置換変数の作成と構成」リストの中から変数「openocd_path」の行をダブルクリックします。

「設定」ダイアログ - 1


「設定」ダイアログが表示されます。

「値」のテキストボックスには、OpenOCDがインストールされているディレクトリを入力します。すなわち、以下の文字列になります。

入力後は、「OK」ボタンをクリックします。


C:\cygwin64\usr\local\bin

「変数の編集」ダイアログ


「設定」ダイアログの「ストリング置換変数の作成と構成」リストで、変数「openocd_path」の値が正しく設定されていることを確認し、ダイアログ右下の「OK」ボタンをクリックします。

「設定」ダイアログ - 2


「変数の選択」ダイアログも、「OK」ボタンをクリックして閉じます。

「変数の選択」ダイアログ - 2


「外部ツール構成」ダイアログに戻ります。

ここでは、各テキストボックスに以下の値を入力します。

入力後は、ダイアログ右下の「実行」ボタンをクリックし、ターゲットとの接続を試みます。


名前:OpenOCD

ロケーション:${openocd_path}\${openocd_executable}

作業ディレクトリ:${openocd_path}\..\share\openocd\scripts

引数:-s "${openocd_path}\..\share\openocd\scripts" -f board/nucleo_f401re.cfg

「外部ツール構成」ダイアログ - 3


Eclipseの画面下方の「コンソール」タブに、以下のような表示が現れると、ターゲットとデバッガは正しく接続されたことを意味します。

「コンソール」タブ - 2


ここで、一度Eclipseを終了します。

終了時に以下のような警告が表示されますが、「OK」ボタンをクリックし、強制的に終了させます。

「ワークベンチをクローズしています」ポップアップ


以上で、デバッガの登録は完了です。


TeraTermの導入

teraterm-4.105.zipをダウンロードし、これを展開した「teraterm-4.105.exe」をダブルクリックします。

言語選択を「日本語」として選択すると以下の通りインストーラが起動します。

同意する」を選択し、ダイアログ右下の「次へ」をクリックします。

TeraTermのインストーラ - 1


何も変更せずに、「次へ」をクリックします。

TeraTermのインストーラ - 2


何も変更せずに、「次へ」をクリックします。

TeraTermのインストーラ - 3


何も変更せずに、「次へ」をクリックします。

TeraTermのインストーラ - 4


何も変更せずに、「次へ」をクリックします。

TeraTermのインストーラ - 5


何も変更せずに、「次へ」をクリックします。

TeraTermのインストーラ - 6


インストール」をクリックします。

インストールが開始されます。

TeraTermのインストーラ - 7


インストールが終了すると以下の表示となります。「完了」をクリックします。

TeraTermのインストーラ - 8


TeraTermを起動する前に、PCに接続されたターゲットのUSBシリアルが、どのポートで認識されているかを確認する必要があります。

Windowsからコントロールパネルを開き、「ハードウェアとサウンド」の項目をクリックします。

コントロールパネル - ハードウェアとサウンド


次に「デバイスマネージャー」の項目をクリックします。

コントロールパネル - デバイスマネージャー


開かれたデバイスマネージャーの「ポート(COMとLPT)」の項目で、ターゲットのポート名を調べます。

このPCでは、「COM3」として認識されています。

デバイスマネージャー


ポート名が判明したので、TeraTermを実行します。

シリアル」を選択し、接続先として、調べたポート名を「ポート」コンボボックスで指定し。「OK」ボタンをクリックします。

TeraTerm - 「新しい接続」ダイアログ


次に、TeraTermのアプリケーションメニューから「設定」をクリックし、「シリアルポート」をクリックします。

TeraTerm - 「シリアルポート」メニュー


「スピード」コンボボックスの設定を「115200」として、「現在の接続を再設定」ボタンをクリックします。

TeraTerm - 「シリアルポート設定と接続」ダイアログ


TeraTermは、このまま起動させておきます。

以上で、TeraTermの導入は完了です。


デバッガの設定

この時点で、「OBJ」プロジェクトはビルドされている必要があります。

プロジェクトのクリーンとビルド」を参照し、「OBJ」プロジェクトをビルドしてください。

Eclipseの画面左側の「プロジェクト・エクスプローラー」タブのツリーリストから以下のファイルをダブルクリックします。

画面中央にソースコードが表示されますが、文字化けを起こしています。


<プロジェクト名>\OBJ\sample1.c

プロジェクト・エクスプローラー - 2


Eclipseのアプリケーションメニューの「プロジェクト」から「プロパティー」をクリックします。

Eclipseの「プロパティー」メニュー - 1


「OBJのプロパティー」ダイアログが表示されます。

ダイアログ左側のツリーリストから「リソース」を選択します。

新たに表示された設定画面の「テキスト・ファイル・エンコード」のフレームで「その他」を選択し、その右側のコンボボックスにおいて、文字コードとして「MS932」を設定します。

設定が終わったらダイアログ右下の「適用」および「OK」ボタンを順にクリックします。

これにより、ソースコードの文字化けは解消されます。

「OBJのプロパティー」ダイアログ - 1


次に、デバッガの設定を行います。

Eclipseのアプリケーションメニューの「実行」から「デバッグの構成」をクリックします。

Eclipseの「デバッグ構成」メニュー


「デバッグ構成」ダイアログが表示されます。

ダイアログ左側のツリーリストから「GDB OpenOCD Debugging」の項目をダブルクリックします。

すると、「OBJデフォルト」と名付けられた項目が新しく作成されます。

この項目に対し、以下の設定を入力します。


プロジェクト:<プロジェクト名>

C/C++アプリケーション:

                                C:\cygwin64\home\<ユーザ名>\asp_1.9.2\OBJ\asp.exe

ビルド構成:Use Active (Disable auto build)

「デバッグ構成」ダイアログ - 1


次に、「デバッグ構成」ダイアログにおいて、現在の「メイン」タブから「デバッガ」タブに切り替えます。

新しく開かれた設定画面において、以下の設定を入力します。

設定が終わったらダイアログ右下の「適用」および「デバッグ」ボタンを順にクリックします。

これにより、「OBJ」プロジェクトのプログラムのバイナリ「asp.exe」がターゲットに転送され、実行されます。


<OpenOCD Setup>

実行可能ファイル:${openocd_path}/${openocd_executable}

Config options:

-s "${openocd_path}\..\share\openocd\scripts" 

-f board/nucleo_f401re.cfg


<GDB Client Setup>

実行可能ファイル:

C:\Program Files (x86)\GNU Tools ARM Embedded\7 2017-q4-major\bin\arm-none-eabi-gdb.exe

「デバッグ構成」ダイアログ - 2


予め起動しておいたTeraTermにおいては以下のような表示が現れ、サンプルプログラム(「asp.exe」)が正常に動作していることが確認できます。

TeraTermにおけるサンプルプログラムの表示


以上で、デバッガの設定は完了です。


サンプルプログラムのデバッグ

ターゲットのサンプルプログラム(「asp.exe」)の実行を止めるには、Eclipseのアプリケーションメニューの直下にある「終了」ボタンをクリックします。

Eclipseの「終了」ボタン


ブレークポイントを設定し、ラインデバッギングを行うには、コンパイラの最適化を解除した方が分かりやすいです。

「OBJ」プロジェクトでは、デフォルトで最適化が設定されています(「-O2」)。

これを解除するには、環境変数を設定する必要があります。

Eclipseのアプリケーションメニューの「プロジェクト」から「プロパティー」をクリックします。

Eclipseの「プロパティー」メニュー - 2


「OBJのプロパティー」ダイアログが表示されます。

ダイアログ左側のツリーリストから「C/C++ビルド」→「環境」を選択します。

新たに表示された設定画面右側の「追加」ボタンをクリックします。

「OBJのプロパティー」ダイアログ - 2


「新規変数」ダイアログが表示されます。

以下の通りに入力します。

入力が終わったら、左下の「OK」ボタンをクリックします。


名前:OMIT_OPTIMIZATION

値:1

「環境変数」ダイアログ


「OBJのプロパティー」ダイアログに戻ります。

「設定する環境変数」のグリッドに今追加した環境変数が表示されていることを確認し、「適用」および「OK」ボタンを順にクリックします。

「OBJのプロパティー」ダイアログ - 3


Eclipseの画面を「デバッグモード」から「C/C++モード」に変更します。

Eclipseの画面右上のボタンで切り替えができます。「C/C++」ボタンをクリックします。

Eclipseの「C/C++」ボタン


コンパイラの最適化を解除する環境変数を設定しましたが、これを適用するには、「OBJ」プロジェクトをリビルドする必要があります。

プロジェクトのクリーンとビルド」で示したとおり、画面右側の「Makeターゲット」タブで、「realclean」、「depend」および「all」をそれぞれ順にダブルクリックし、「OBJ」プロジェクトをリビルドします。

これにより、コンパイラによる最適化が行われていない「asp.exe」が作成されます。

試しに、ブレークポイントを設定してみます。Eclipseの画面左側の「プロジェクト・エクスプローラー」タブのツリーリストから以下のファイルをダブルクリックします。


<プロジェクト名>\OBJ\sample1.c

(「<プロジェクト名>\sample\sample1.c」ではないことに注意!)


開かれた「sample1.c」のソースコードの300行目付近、行番号の更に左側をダブルクリックし、ブレークポイントを設定します。

ブレークポイントの設定


次に、デバッガを起動します。

Eclipseのアプリケーションメニューの直下にある虫のアイコンの右側をクリックして現れるメニューから「OBJデフォルト」をクリックします。

Eclipseの「OBJデフォルト」メニュー


Eclipseの画面が「C/C++モード」から「デバッグモード」へ切り替わり、指定したブレークポイントでプログラムが停止します。

ブレークポイントでプログラムが停止


Eclipseのアプリケーションメニューの直下にあるデバッグ用のボタンを使用することにより、プログラムの再開や、ステップイン/オーバーなどの操作を行うことができます。

以上で、デバッガの設定は完了です。

Eclipseのデバッグ操作ボタン


<「TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトで遊ぼう」に続く>

0 件のコメント:

コメントを投稿

BSD 4-Clause License

  名称:「四条項BSDライセンス」(BSD-4-clause) タイプ: ・コピーレフト…× ・ライセンス文の掲示…〇 ・コピーライト(著作権)の掲示…〇 ・その他…〇 原文: Copyright (c) <year>, <copyright holde...