できるCCS⑦ [ デバッグ編 その1 ]

今回はデバッグに関わるビルドコンフィグレーションとTarget Configuration Fileの設定をご紹介し、その後いよいよプロジェクトのデバッグへ踏み出していきたいと思います。 それでは参りましょう!

ビルドコンフィギュレーション

ビルドコンフィギュレーションは、その内容を変更することで、コンパイルオプションの変更やプリプロセッサの設定を行うことが可能になります。今後デバッグをしたり最適化を行う際に重要な設定となりますので、よく理解しておきましょう。

 まず、プロジェクト上で右クリックし、「Properties」をクリックしてください。表示されたウィンドウの「General → Configuration」で、各種コンフィギュレーション毎の設定を確認することが可能です。

ビルドコンフィギュレーションはデフォルトで「Debug」と「Release」が用意されており、 「プロジェクト右クリック → Build Configurations → Set Active」により、使用するビルドコンフィギュレーションを切り替えることが可能です。

さて、この「Debug」と「Release」、何が違うのでしょうか?
実は、この2つのビルドコンフィギュレーションでは「Optimization Level」が異なります。「Debug」は「Optimization Level」が低い設定であるのに対し、「Release」は高めに設定されています(簡単に言えば、「Release」は最適化のコンパイルオプションが有効になっているビルドコンフィギュレーションとなります)。
そのため、シンボル等のデバッグ情報が削除されていたり、コード実行順序等が記載したCコード通りではないことがあり、一般的にデバッグしにくい環境になります。そのため、まずは「Debug」ビルドコンフィギュレーションを使用して作成したコードが正常に動作することを確認した上で、「Release」ビルドコンフィギュレーションを使用すると良いでしょう。

独自にビルドコンフィギュレーションを作成するには

ユーザー独自のビルドコンフィギュレーションを作成することも可能です。
作成するには、「Manage Configurations」をクリックし、「New」からご希望のコンフィギュレーション名を指定し、さらに、コピー元となるコンフィギュレーションを選択して「OK」をクリックしてください。

よく使うプロジェクト・プロパティの解説

ここからはプロジェクト・プロパティでよく使う項目をご紹介していきます。
「CCS General」では、一般的な設定を行うことになりますが、その内容としては「New CCS Project」の時と同じ項目となります。

コンパイラに関する設定はこちらになります。よく使う項目としては以下のとおりです。 (この例ではC6000系のコンパイラとなります。ご使用のデバイスによって表示や内容が異なりますのでご注意ください。)

リンカーに関する設定はこちらになります。よく使う項目としては以下のとおりです。 (この例ではC6000系のリンカーとなります。ご使用のデバイスによって表示や内容が異なりますのでご注意ください。)

Target Configuration Fileとは

Target Configuration Fileとは、PCとデバイス(ターゲット)を接続するために必要となるファイルとなります。
簡単にいえば、「何のエミュレータを使用して、何のデバイスを使用するのか?」を設定するためのファイルです。

*インポートしたサンプルプログラムや、「Project → New CCS Project」による新規プロジェクト作成時の入力項目によっては、すでにTarget Configuration Fileが作成されていることがあります。拡張子「*.ccxml」のTarget Configuration Fileが、既にProject Explorer内に存在するかご確認ください。

Target Configuration Fileの作成方法

それではTarget Configuration Fileを作成していきましょう。
はじめに「View → Target Configurations」をクリックしてください。

画面右側にTarget Configurationsのウインドウが現れますので、「New Target Configuration File」ボタンをクリックしてください。 その後、「File name」を入力し(※拡張子「.ccxml」は必須です)、「Finish」をクリックしてください。

ご使用のエミュレータを「Connection」より選択し、ご使用のボード(あるいはデバイス)を「Board or Device」より選択してください。

「Save」をクリックしTarget Configuration Fileを保存します。PC/エミュレータ/ターゲットボード間の接続を確認し、ターゲットボードに(必要に応じてエミュレータにも)電源を入れた後 、「Test Connection」をクリックして接続の状態を確認してください。 確認後はTest Connectionウィンドウを閉じます。

「Advanced」タブより、各コア毎にGELスクリプトの設定が可能です。 「Browse」をクリックし、スクリプト用のGELファイルを選択後、「Save」をクリックしてください。
*CCSv8をデフォルトのパスにインストールしてのご使用の場合、GELファイルはC:\ti\ccsv8\ccs_base\emulation\gelまたはC:\ti\ccsv8\ccs_base\emulation\boardsにあります。ご使用のデバイスあるいはEVMごとにGELファイルが提供されていますので、適切なGELファイルを選択してご使用ください。

GELファイルとは

前項で「GELファイル」という言葉がでてきましたね。ここで少し解説をしておきます。

GEL(General Extension Language)ファイルは、C言語ライクなスクリプトとなっており、接続しているデバイス上でエミュレートする機能を提供しています。

1つ例を考えてみましょう。今、外部メモリ(例えばDDR3等)がターゲットデバイスに接続されているものとします。そして、CCSでロードしようとしているプログラムは外部RAMにロードされると仮定します。
この時、外部メモリを初期化しないでCCSからプログラムをロードすると、正しくデータを展開することができません。そのためロード前には、必ず外部メモリを初期化する作業が必要になります。
このようなとき、GELの「OnTargetConnect」のハンドラを使用すると便利です。このハンドラの中で外部メモリの初期化を記述することで、ターゲットデバイスにコネクトしたと同時に外部メモリの初期化を行うことが可能となります。

既存のGELファイルを実際に覗いてみてください。きっと「OnTargetConnect」ハンドラでいろいろと処理をしているはずです。また、その他いろいろなハンドラがあるのも確認できるでしょう。

GELの文法やAPIの詳細は、CCSのメニューの「Help → Help Contents」の「Code Composer Studio Help → Tasks → Automating Tasks with General Extension Language(GEL)」に記載がありますのでご確認ください。

デバッガの起動

では作成したTarget Configuration Fileを用いて、いよいよデバッガを起動してみましょう。

先程作成したTarget Configuration Fileは「Target Configurations」ウインドウ内の「User Defined」から アクセスできます。 作成したファイル上で右クリックし、「Launch Selected Configuration」をクリックしてください。

CCSの画面が「CCS Debug」のパースペクティブに移動します。この画面がDebug時の基本的な画面となります。

ツールバーのアイコンはエディット画面のものよりも数が増えていますね。

それではデバイスにコネクトしてみましょう。
「Debug」タブ内には接続可能なターゲットのデバイスが表示されます。(マルチコアデバイスの場合は複数の接続先が表示されます。)
その中の一つ(あるいはControlキーを押しながら複数)を選択し、「Connect Target」ボタンをクリックしてください。

マークが切り替わり、「ーーー(Suspended)」の表示となりましたら接続完了です!
ConsoleウインドウにはGELファイルのOnTargetConnectの実行ログが表示されていますね。

次に、ターゲットのデバイスにプログラムのロードを行います。
Loadボタンの▼をクリックし、Load ProgramまたはReload Programをクリックしてください。

「Reload Program」は現在Loadしてあるプログラムを再ロードします。
「Load Program」を選択した場合は、Browse projectより、*.outファイルを選択して「OK」をクリックし、ロードしてください。

必要なプログラムをロード後、「Resume」ボタンをクリックするとプログラムが実行されます。

まとめ

今回はデバッガの起動までをご紹介させていただきました。デバッグへの第一歩、踏み出せましたでしょうか?
CCSではデバッグ時に便利な機能が用意されています。次回はそのご紹介をしていきますので、より深いデバッグの世界を見ていきましょう。

できるCCSはコチラから