ここまで構築したGNUツールチェーン、EclipseおよびOpenOCDを組み合わせて、ターゲットにTOPPERSサンプルプロジェクトを転送および書き込みを行い、それをデバッグする方法を説明します。
プロジェクトの作成
「TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトのビルド」で作成した「OBJ」プロジェクトをEclipseのプロジェクトとして作成します。
前項でインストールしたEclipseを起動します。
アプリケーションメニューの「ファイル」から「新規」をクリックし、「既存コードでMakefileプロジェクト」をクリックします。
「新規プロジェクト」ダイアログが表示されます。
ここでは、各項目を以下の通りに入力、設定し、ダイアログ右下の「完了」をクリックします。
プロジェクト:<任意のプロジェクト名(ここでは「OBJ」)>
既存コードのロケーション:C:\cygwin64\home\<ユーザ名>\asp_1.9.2
インデクサー設定のツールチェーン:<なし>
Eclipseの画面左側の「プロジェクト・エクスプローラー」タブに<プロジェクト名>のディレクトリが表示され、その下に「asp_1.9.2」以下のディレクトリ構造が表示されていることを確認します。
プロジェクトのクリーンとビルド
Eclipseから「OBJ」プロジェクトをビルド/クリーンします。
Eclipseの画面右側の「アウトライン」タブを「Makeターゲット」タブに切り替えます。
すると、「プロジェクト・エクスプローラー」タブと同じように「Makeターゲット」タブに「OBJ」ディレクトリ構造が表示されます。
このツリーリストから「OBJ」を選択し、「新規Makeターゲット」ボタン(ツリーリスト上方の◎と+が合わさったようなアイコン)をクリックします。
「Makeターゲットの作成」ダイアログが表示されます。
まずは、プロジェクトのクリーンを行うMakeターゲットを作成します。
ここでは、各項目を以下の通りに入力し、ダイアログ下方の「OK」をクリックします。
ターゲット名:realclean
すると、「Makeターゲット」タブのツリーリストの「OBJ」ディレクトリ以下に「realclean」が追加されます。
次は、これをダブルクリックします。
Eclipseの画面下方の「コンソール」タブには、プロジェクトのクリーンが行われたことを示す表示が現れます。
これは、Cygwin上で「OBJ」ディレクトリの中で「$ make realclean」を実行したのと同じ動作をしたことを意味します。
同じ要領で、「depend」と「all」のMakeターゲットも作成します。
ターゲット名: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
ここで、ターゲットとPCをUSBケーブルで接続します。
正常に接続されると、PCはターゲットをディスクドライブとして認識します。
次に、アプリケーションメニューの「実行」から「外部ツール」をクリックし、「外部ツールの構成」をクリックします。
「外部ツール構成」ダイアログが表示されます。
ダイアログ左側のリストから「プログラム」の項目をダブルクリックします。
「外部ツール構成」ダイアログの表示が変わります。
「メイン」タブ内の「ロケーション」テキストボックスの右下の「変数」ボタンをクリックします。
「変数の選択」ダイアログが表示されます。
「変数を選択してください~」という表示の下のテキストボックスに「openocd」と入力します。
すると、変数リストには、この文字列に合致する変数が残ります。
リストの右下の「変数の編集」ボタンをクリックします。
「設定」ダイアログが表示されます。
「ストリング置換変数の作成と構成」リストの中から変数「openocd_path」の行をダブルクリックします。
「設定」ダイアログが表示されます。
「値」のテキストボックスには、OpenOCDがインストールされているディレクトリを入力します。すなわち、以下の文字列になります。
入力後は、「OK」ボタンをクリックします。
C:\cygwin64\usr\local\bin
「設定」ダイアログの「ストリング置換変数の作成と構成」リストで、変数「openocd_path」の値が正しく設定されていることを確認し、ダイアログ右下の「OK」ボタンをクリックします。
「変数の選択」ダイアログも、「OK」ボタンをクリックして閉じます。
「外部ツール構成」ダイアログに戻ります。
ここでは、各テキストボックスに以下の値を入力します。
入力後は、ダイアログ右下の「実行」ボタンをクリックし、ターゲットとの接続を試みます。
名前:OpenOCD
ロケーション:${openocd_path}\${openocd_executable}
作業ディレクトリ:${openocd_path}\..\share\openocd\scripts
引数:-s "${openocd_path}\..\share\openocd\scripts" -f board/nucleo_f401re.cfg
Eclipseの画面下方の「コンソール」タブに、以下のような表示が現れると、ターゲットとデバッガは正しく接続されたことを意味します。
ここで、一度Eclipseを終了します。
終了時に以下のような警告が表示されますが、「OK」ボタンをクリックし、強制的に終了させます。
以上で、デバッガの登録は完了です。
TeraTermの導入
teraterm-4.105.zipをダウンロードし、これを展開した「teraterm-4.105.exe」をダブルクリックします。
言語選択を「日本語」として選択すると以下の通りインストーラが起動します。
「同意する」を選択し、ダイアログ右下の「次へ」をクリックします。
何も変更せずに、「次へ」をクリックします。
何も変更せずに、「次へ」をクリックします。
何も変更せずに、「次へ」をクリックします。
何も変更せずに、「次へ」をクリックします。
何も変更せずに、「次へ」をクリックします。
「インストール」をクリックします。
インストールが開始されます。
インストールが終了すると以下の表示となります。「完了」をクリックします。
TeraTermを起動する前に、PCに接続されたターゲットのUSBシリアルが、どのポートで認識されているかを確認する必要があります。
Windowsからコントロールパネルを開き、「ハードウェアとサウンド」の項目をクリックします。
次に「デバイスマネージャー」の項目をクリックします。
開かれたデバイスマネージャーの「ポート(COMとLPT)」の項目で、ターゲットのポート名を調べます。
このPCでは、「COM3」として認識されています。
ポート名が判明したので、TeraTermを実行します。
「シリアル」を選択し、接続先として、調べたポート名を「ポート」コンボボックスで指定し。「OK」ボタンをクリックします。
次に、TeraTermのアプリケーションメニューから「設定」をクリックし、「シリアルポート」をクリックします。
「スピード」コンボボックスの設定を「115200」として、「現在の接続を再設定」ボタンをクリックします。
TeraTermは、このまま起動させておきます。
以上で、TeraTermの導入は完了です。
デバッガの設定
この時点で、「OBJ」プロジェクトはビルドされている必要があります。
「プロジェクトのクリーンとビルド」を参照し、「OBJ」プロジェクトをビルドしてください。
Eclipseの画面左側の「プロジェクト・エクスプローラー」タブのツリーリストから以下のファイルをダブルクリックします。
画面中央にソースコードが表示されますが、文字化けを起こしています。
<プロジェクト名>\OBJ\sample1.c
Eclipseのアプリケーションメニューの「プロジェクト」から「プロパティー」をクリックします。
「OBJのプロパティー」ダイアログが表示されます。
ダイアログ左側のツリーリストから「リソース」を選択します。
新たに表示された設定画面の「テキスト・ファイル・エンコード」のフレームで「その他」を選択し、その右側のコンボボックスにおいて、文字コードとして「MS932」を設定します。
設定が終わったらダイアログ右下の「適用」および「OK」ボタンを順にクリックします。
これにより、ソースコードの文字化けは解消されます。
次に、デバッガの設定を行います。
Eclipseのアプリケーションメニューの「実行」から「デバッグの構成」をクリックします。
「デバッグ構成」ダイアログが表示されます。
ダイアログ左側のツリーリストから「GDB OpenOCD Debugging」の項目をダブルクリックします。
すると、「OBJデフォルト」と名付けられた項目が新しく作成されます。
この項目に対し、以下の設定を入力します。
プロジェクト:<プロジェクト名>
C/C++アプリケーション:
C:\cygwin64\home\<ユーザ名>\asp_1.9.2\OBJ\asp.exe
ビルド構成:Use Active (Disable auto build)
次に、「デバッグ構成」ダイアログにおいて、現在の「メイン」タブから「デバッガ」タブに切り替えます。
新しく開かれた設定画面において、以下の設定を入力します。
設定が終わったらダイアログ右下の「適用」および「デバッグ」ボタンを順にクリックします。
これにより、「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
予め起動しておいたTeraTermにおいては以下のような表示が現れ、サンプルプログラム(「asp.exe」)が正常に動作していることが確認できます。
以上で、デバッガの設定は完了です。
サンプルプログラムのデバッグ
ターゲットのサンプルプログラム(「asp.exe」)の実行を止めるには、Eclipseのアプリケーションメニューの直下にある「終了」ボタンをクリックします。
ブレークポイントを設定し、ラインデバッギングを行うには、コンパイラの最適化を解除した方が分かりやすいです。
「OBJ」プロジェクトでは、デフォルトで最適化が設定されています(「-O2」)。
これを解除するには、環境変数を設定する必要があります。
Eclipseのアプリケーションメニューの「プロジェクト」から「プロパティー」をクリックします。
「OBJのプロパティー」ダイアログが表示されます。
ダイアログ左側のツリーリストから「C/C++ビルド」→「環境」を選択します。
新たに表示された設定画面右側の「追加」ボタンをクリックします。
「新規変数」ダイアログが表示されます。
以下の通りに入力します。
入力が終わったら、左下の「OK」ボタンをクリックします。
名前:OMIT_OPTIMIZATION
値:1
「OBJのプロパティー」ダイアログに戻ります。
「設定する環境変数」のグリッドに今追加した環境変数が表示されていることを確認し、「適用」および「OK」ボタンを順にクリックします。
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の画面が「C/C++モード」から「デバッグモード」へ切り替わり、指定したブレークポイントでプログラムが停止します。
Eclipseのアプリケーションメニューの直下にあるデバッグ用のボタンを使用することにより、プログラムの再開や、ステップイン/オーバーなどの操作を行うことができます。
以上で、デバッガの設定は完了です。
0 件のコメント:
コメントを投稿