チュートリアル - 組込みソフトウェア入門
Contents
このチュートリアルは、C++、C と/または アセンブリや、組み込みプログラミング、更に、Altium Designer で利用できる TASKING ツールの基本知識をお持ちの方を対象としております。このチュートリアルでは、エンベデッドプロジェクトにソースファイルを追加、作成、編集する方法、そしてどの様に組込みアプリケーションを構築するかが記載されています。更にエンベデッド ソフトウェアプロジェクトは FPGA プロジェクトのサブプロジェクトとして扱われ、これが構築された後にソフトプロセッサコアや実行ファイルを FPGA デバイスへダウンロードする方法も記載されています。
このチュートリアルでは、C ソース内に Hello World のプログラムを使用したサンプルプロジェクトを使用します。
組込みソフトウェアツール
Altium Designer に含まれる TASKING 組込みソフトウェアツールでは、PowerPC、TSK3000、MicroBlaze、Nios II、ARM 等のソースコード記述、コンパイル、アセンブル、リンクといった工程を実行できます。下図は、TASKING のツールセットの全てのコンポーネントと各工程の入力と出力ファイルを表しています。
C++ コンパイラ、C コンパイラ、アセンブラ、リンカ、デバッガは、対象のプロセッサコアに依存しています。
下記は、TASKING ツールセットで使用するファイルタイプのリストです。
拡張子 | 説明 |
---|---|
ソース ファイル |
|
.cpp | C++ コンパイラに入力する C++ ソースファイル |
.c | C コンパイラに入力する C ソースファイル |
.ic | C++ コンパイラで生成された中間 C ソースファイル |
.asm | コード化された アセンブラ ソースファイル |
.src | マクロを含まない C コンパイラで生成されたアセンブラソースファイル |
.lsl | リンカスクリプトファイル |
オブジェクト ファイル |
|
.obj | アセンブラで生成されたリロケータブル・オブジェクトファイル |
.lib | オブジェクトファイルをアーカイブ |
.abs | リンカの一部であるロケータで作成される ELF/DWARF 2 アブソリュート・オブジェクトファイル |
.hex | インテル Hex フォーマットのアブソリュート・オブジェクトファイル |
リストファイル |
|
.lst | アセンブラ・リストファイル |
.map | リンカ・マップファイル |
.mcr | MISRA-C レポートファイル |
.mdf | メモリ定義ファイル |
組込みプロジェクトの作成
Altium Designer で作業するには、まずプロジェクトを作成する必要があります。プロジェクトにより、ソースファイルや出力されたファイルを管理することができます。組込みソフトウェアの場合、Embedded Software project を作成する必要があります。
新規の組込みソフトウェアプロジェクトを作成するには:
- メニューから File»New»Project»Embedded Project を選択するか、Files パネルの New の項目で Blank Project (Embedded) をクリックします。このパネルが表示されていない場合は、Design Manager パネルの下にある Files タブをクリックしてください。
- Projects パネルに新規のプロジェクトファイル Embedded_Project1.PrjEmb が表示されます。
- File»Save Project As を選択して、新規のプロジェクトファイル(拡張子.PrjEmb)の名称を変更します。ハードディスク内のプロジェクトの保存先を指定します。ファイル名 GettingStarted.PrjEmb を入力し、Save をクリックします。
新しいソースファイルをプロジェクトへ追加
新しいソースファイル (C、アセンブラ、その他のテキストファイル) をプロジェクトに追加するには下記の手順で行います:
- Projects パネルの GettingStarted.PrjEmb を右クリックして、Add New to Project»C File を選択します。新しい C ソースファイル C_Source1.c が Projects パネル内の Source Documents と言うフォルダの下で、Embedded Software project に追加されます。テキストエディタが開き入力できる状態になります。
必要なソースコードを入力します。このチュートリアルでは下記のコードを入力します:
#include
void printloop(void) { int loop; for (loop=0; loop<10; loop++) { printf("%i\n",loop); } } void main(void) { printf("Hello World!\n"); printloop(); } - File»Save As を選択してソースファイルを保存します。ソースファイルを保存したいハードディスク内の適当な場所に移動し、ファイル名を入力する項目に hello.c と入力して Save をクリックします。
- Projects パネルでプロジェクト GettingStarted.PrjEmb を右クリックし、Save Project を選択してプロジェクトを保存します。
プロジェクトは次のように表示されます:
既存のソースファイルをプロジェクトに追加
既存のソースファイルをプロジェクトに追加したい場合、下記の手順で行います:
- Projects パネルでプロジェクト名を右クリックし、Add Existing to Project を選択します。Choose Documents to Add to Project ダイアログが表示されます。
- プロジェクトへ追加したいファイルを選択し、Open をクリックします。
- ソースファイルがプロジェクトに追加され、Projects パネルに表示されます。ファイル名をダブルクリックするとテキストエディタでファイルの中身を確認したり編集したりすることができます。
- プロジェクトを保存します (Projects パネルのプロジェクト名を右クリックし Save Project を選択します)。
組込みプロジェクトオプションの設定
Altium Designer の組込みプロジェクトには組込みオプションの一式があります。プロジェクトにファイルを追加しアプリケーションを記述 (この例では hello.c) したら、次のステップで組込みアプリケーションを構築します:
- デバイス(ターゲットプロセッサ)の選択(ツールセットの選択)
- ツールセット内の C++/C コンパイラ、アセンブラ、リンカ等のツールオプションを指定 (異なるツールセットは異なるオプションを持つことがあります)。
デバイス(ターゲットプロセッサ)の選択
組込みプロジェクトでは、最初に組込みプロジェクトをビルドしようとするデバイスを指定する必要があります:
- Projects パネルの GettingStarted.PrjEmb を右クリックして、Project Options を選択します。または、メニューから Project»Project Options を選択します。
Options for Embedded Project ダイアログが表示されます。
- Compiler Options タブで Device を選択します。このドロップダウンリストの内容はインストールするプラグインに依存します。製造ベンダ、または互換製品を選択できます。製造ベンダからデバイスを選択した場合は、正しいプロセッサタイプが自動的に選択されます。互換製品を選択した場合、ターゲットプロセッサのタイプを手動で指定する必要があります。
ターゲットプロセッサのタイプを手動で指定するには、以下の通りです(互換デバイスのみ): - ダイアログ左側の Processor の項目を拡張し、Processor Definition を選択します。
- パネルの右側の General の項目を拡張し、Processor を正しいターゲットプロセッサに設定します。
- OK をクリックして、新しいデバイスを選択します。
ツールオプションの設定
プロジェクト内のファイルに共通な組込みオプションと、特定のオプションを設定することが出来ます。
プロジェクトオプションの設定
- Projects パネルの GettingStarted.PrjEmb を右クリックして、Project Options を選択します。または、メニューから Project»Project Options を選択します。
Options for Embedded Project ダイアログが表示されます。
- パネルの左側の C Compiler の項目を拡張します。ここには、いくつかのページがあり C コンパイラの設定ができます。各ツールの項目にある Miscellaneous ページの Command line options フィールドで、オプションの設定がどのようにコマンドラインに変換されたか確認できることに注意してください。
- ダイアログの右側で各オプションの値を設定します。これを全てのページで行います。
- アセンブラとリンカのような他のツールについてもステップ 2 と 3 を繰り返し設定します。
- 設定が終了したら OK をクリックします。
Altium Designer は組込みプロジェクトのオプションに基づき、組込みアプリケーションをビルドするときに使用される makefile を作成します。
個々のドキュメントオプションの設定
- Projects パネルの hello.c を右クリックして Document Options を選択します。または、メニューから Project»Document Options を選択します。Options for Document ダイアログが表示されます。
ステップ 2 から 5 まではプロジェクトオプションの設定と同じです。Options for Embedded Project ダイアログの Files With Options タブで、どのファイルがプロジェクト・オプションと違う設定をしているか表示されます。このタブのファイル名を右クリックすると、個々のファイルから、または個々のファイルへオプションをコピーできるメニューが表示されます。
組込みアプリケーションのビルド
以上で、組込みアプリケーションをビルドする準備ができました。
- Project » Compile Embedded Project GettingStarted.PrjEmb を選択するか、 ボタンをクリックします。
TASKING プログラム・ビルダは組込みプロジェクト内で、旧式の、または前回のビルドから変更があった組込みプロジェクトのファイルのコンパイル、アセンブル、リンクとロケートを行います。生成されるファイルはアブソリュート・オブジェクトファイル GettingStarted.abs です。 - Output パネル(View»Workspace Panels»System»Output)にビルド結果が表示されます。
ソースファイルのコンパイル
単一のソースファイルをコンパイルしたい時は下記の手順で行います:
- コンパイルしたいソースファイル (hello.c) 名を右クリックし Compile Document hello.c を選択します。または、テキストエディタでファイルを開いて Project»Compile Document hello.c を選択します。
- Messages パネルを開いて、コンパイル中に発生したエラーを確認します。View»Workspace Panels»System»Messages を選択するか、System»Messages を Panels タブから選択します。
- ソースファイルでエラーがあれば修正し、プロジェクトファイルを保存します。
アプリケーション全体のリビルド
個々のファイルの日付と無関係に組込みアプリケーションをビルドしたい場合、下記の手順で再コンパイルできます:
- Project»Recompile Embedded Project GettingStarted.PrjEmb を選択します。
- TASKING プログラム・ビルダは組込みプロジェクトの全てのソースファイルのコンパイル、アセンブル、リンクとロケートを行います。
以上でオブジェクトファイル GettingStarted.abs のデバッグを行うことができます。
組込みアプリケーションのデバッグ
組込みアプリケーションのビルドが終了したら、完成したアブソリュート・オブジェクトファイルをシミュレータでデバッグすることができます。
デバッグを開始するには、1 つ、または複数のソース行を実行しなくてはなりません:
- ソースレベル、またはインストラクションレベルの step オプション (Debug » Step Into, Step Over) を選択し、ソースをステップさせるか、Debug»Run を選択してシミュレーションを実行します。青の行は現在の実行位置を表します。
レジスタ、ローカル変数、メモリ、ブレークポイント等の詳細情報を確認するワークスペースパネルを開くには:
- View»Workspace Panels»Embedded»(a_panel) を選択します。
デバッグを終了するには:
- Debug»Stop Debugging を選択します。
ブレークポイントの設定
組込みソースファイルを開いている状態でブレークポイントを設定することができます。ブレークポイントを設定することのできる行には小さい青い点が表示されています:
- ソース行の左の余白をクリックすることでブレークポイントをオン/オフすることができます。
ブレークポイントには赤い十字の入った丸印が表示され、行が赤でマークされます。
ブレークポイントのプロパティを変更するには:
- ブレークポイントを右クリックして Breakpoint Properties を選択します。
ブレークポイントを無効、または有効にするには:
- ブレークポイントを右クリックし Disable Breakpoint (または、Disable されている時は Enable Breakpoint) を選択します。Disable されているブレークポイントは緑でマークされます。
Breakpoint Panel で Disable されているブレークポイントも含め全てのブレークポイントとそのプロパティを確認することができます:
- View»Workspace Panels»Embedded»Breakpoints を選択します。
式の評価
式を評価する方法は、オブジェクトファイルのデバッグ情報に依存します。また、最適化レベルはデバッグの容易さに影響を及ぼします。Evaluate パネルを使用して式の評価を行うことができます。
- View»Workspace Panels»Embedded»Evaluate を選択し Evaluate パネルを開きます。
- edit 欄に評価したい式を入力し Evaluate をクリックします。式とその値は Evaluate パネル下部に表示されます。コード中の変数が変更される度に Evaluate ボタンをクリックします。
式を連続してウォッチするには、watch を設定してください: - Add Watch を選択します。
新しい式とその値が Watches パネルに表示されます。Watches パネルの値が、コードの実行に従って連続的に更新されます。
もう 1 つの方法: Debug»Add Watch を選択し、式を入力して OK をクリックします。
出力の確認
組込みアプリケーションによって生成された出力を表示することができます。必ずデバッグモードになっている必要があります。Output パネルを開くには:
- View»Workspace Panels»System»Output を選択します。
Output パネルが開き、組込みアプリケーションの出力が表示されます。
メモリの確認
メモリの内容を表示できます。様々なメモリウィンドウを開くことができます。デバッグモードである必要があることに注意してください。選択したターゲットプロセッサに依存して、メモリウィンドウのタイプを開くことができます。
例えば、メインメモリウインドウを開く手順は以下のとおりです:
- View»Workspace Panels»Embedded»Main を選択します。メインメモリウインドウが開きメモリの内容を表示します。
- edit 欄に確認したいメモリの先頭アドレスを入力します。