|
概要 |
|
Sherpaは、WCU-24シリーズ専用の開発ツールで、アセンブラ ASEM-51、Cコンパイラ SDCC 及びエディタソフトを組込むことで簡易的な統合開発環境を実現できます。また、WCU-241にモニタソフトを書き込むことにより、デバッガの機能もご使用いただけます。ブレークポイントの設定によるデバッグ、1ラインアセンブル、逆アセンブル、ステップ実行などが可能です。
Sherpaは、WCU−24M マザーボードに付属するCDに入っています。 |
|
|
|
|
インストール |
|
WCU-24Mに付属するCDの中にある Sherpa フォルダをフォルダごとワークディレクトリにコピーします。例えば、C:\Sherpa にします。
アセンブラ、Cコンパイラ、プログラムライタ、エディタソフトをそれぞれインストールしてからSherpaの設定を行います。アセンブラはASEM-51、CコンパイラはSDCC、プログラムライタはPonyProgの項目をご覧ください。エディタソフトは任意のソフトを設定ください。
各ソフトのインストールが終了しましたら、Sherpaを起動します。C:\Sherpa\debug_monitor内の Sherpa をクリックします。ツール設定画面が表示されますので、各ソフトの置かれてあるフォルダから実行ファイルをセットします。各項目をダブルクリックするとファイル参照画面が現れます。実行ファイルまたはバッチファイルを選択します。 |
各項目はランチャとして起動します。パスは別途設定する必要があります。アセンブラの場合、次のようにバッチファイルを作ることでDOS窓を一旦止めて結果を見るようにすることができます。このとき、ツール設定のアセンブラソフトには、asm.batを指定します。 例えば、「c:\asme-51\asm.bat」 |
同様にSDCCもバッチファイルを作り、DOS窓をストップさせて結果を見るようにするには次のようになります。SDCCにオプションコマンドを付ける場合は、スペースを入れて、付加したいコマンド分だけ「%数字」を付けておきます。 |
オプション画面内の Output を選択して、HEXファイル作成にチェックを入れ、eeprepでHEXファイルの変換を自動的に行うようにユーザープログラムの項目も合わせて記入します。
eeprep.exeは、あらかじめどこかにダウンロードして置いておきます。
この設定では、test.asm をアセンブルして test.hex を生成し、その後 test.hexを testH.hex というnRF24E1用のヘッダデータの付いたファイルに変換する動作となります。 |
|
|
|
|
パスの設定 |
|
実行ファイルがどこからでも参照できるようにパスを設定します。
例えば、 ASEMW.EXE が C:\ASME-51 内、定義ファイル nRF24E1.MCU が C:\ASME-51\MCU内にある場合は次のように設定します。
コントロールパネル>システム からシステムのプロパティを開けて、詳細設定のタブ内にある環境変数をクリックします。xxのユーザー環境変数にパスを追加します。パスはセミコロン;で続けて追加することができます。
|
Cコンパイラを使用する場合、SDCC.exeがC:\sdcc\binにあり、定義ファイルnRF24E1.hがC:\sdcc\includeにある場合は同様に次のようになります。アセンブラと同時に使用する場合は、全てのパスをセミコロンでつなげるとOKです。 |
|
|
|
|
プロジェクト設定 |
|
※アセンブラ・コンパイラのツール設定とは異なり、エディットするファイル名の設定を行います。その他、COMポートやヘッダファイル生成用の項目もあります。
プロジェクト>新規を選択します。 |
サンプルプログラム tx_adc.a51 定義ファイル nRF24E1.MCU の置かれている場所を設定します。COMポートはご使用のポートを選択してください。 |
※ ディレクトリ・ファイル名にスペースが入らないようにしてください。 |
|
|
|
|
アセンブル |
|
コンパイル>アセンブラを実行するとアセンブラが立上がります。 |
エラーは、DOS窓上の結果を確認するかリストファイル(xx.lst)でも見ることができます。 |
|
|
|
|
Cコンパイラを使用するときのプロジェクト設定 |
|
ソースファイルに続いてオプション設定も記述することができます。 |
|
|
|
|
転送 |
|
アセンブルが問題なければHEXファイルをボードに転送します。
マザーボードにWCU-241をセットして電源を入れ、RS232Cケーブル(ストレート)でパソコンに接続します。 |
右下のスライドスイッチを「EEP WRITE」側にして書込み可能な状態にします。
(ベリファイエラーがでる場合は、CPUがEEPROMにアクセスし続けている可能性がありますのでジャンパーピンJP3をショートしてみてください)
SherpaのEEPROMを選択してPonyProgを起動します。 |
|
|
|
|
デバッガ機能について |
|
WCU-241へモニタプログラムを転送することでデバッガ機能を使用することができます。
プロジェクトを次のように設定して、HEXファイルの項目が「sherpa.hex」となるようにします。
HEXファイルのみを使用するため、ソースファイル、インクルードファイルは任意でOKです。 |
SherpaのEEPROMを選択してPonyProgを立上げ、プログラムを転送します。
上記転送の項目とPonyProgのページをご覧ください。
デバッガの使用には、シリアル通信が必要です。マザーボード右下のスライドスイッチを「com」側にして、JP1、JP2のジャンパーをショートしておく必要があります。
マザーボードの電源を入れて、PCと接続してSherpaのデバッグを選択します。 |
- メモリ読み出し
・ERAM
外部メモリ(nRF24E1に内蔵されている4kバイトのRAMですが、8051にならい、ここでは外部メモリと呼びます。)の内容を読み出します。画面右上に表示されます。
・IRAM
内部データメモリの内容を読み出します。画面右下に表示されます。
・SFR
特別機能レジスタ(Special Function Register)の内容を読み出し、画面左に表示します。
・Other SFRボタン
メモリ読み出し -> SFRで表示されない他のSFRを読みたいときに押してください。ダイアログが開き、アドレスを指定することで読み出せます。
- メモリ書き込み
・ERAM
外部メモリ(nRF24E1に内蔵されている4kバイトのRAMですが、8051にならい、ここでは外部メモリと呼びます。)にデータを書き込みます。
・IRAM
内部データメモリにデータを書き込みます。
・SFR
特別機能レジスタにデータを書き込みます。
- アセンブル
・アセンブル
指定したアドレスにコードを書き込む、一行アセンブラです。
・逆アセンブル
指定したアドレスの範囲を逆アセンブルし、画面右上に表示します。
- ブレークポイント
・設定
指定したアドレスにブレークポイントを設定します。
・解除
設定されたブレークポイントを解除します。
- 実行
・実行
指定されたアドレスから実行します。ブレークポイントが設定されているとそこで制御はSherpaに戻ります。
・ステップ実行
1命令ごとに実行し、実行後のSFRを表示します。
- HEXファイル->ERAM
コンパイル済みのHEXファイルを外部メモリ(nRF24E1に内蔵されている4kバイトのRAMですが、8051にならい、ここでは外部メモリと呼びます。)に読み込みます。プロジェクト設定で設定したファイルが読込まれます。
※ デバッガ使用時の注意事項
Sherpaではデバッグ・モニタ機能を実現するため下記のメモリを使用しています。 ERAM: 0x0000 から 0x0002 まで 3バイト 0x0DB0 から 0x0FFF まで 592バイト IRAM: 0xE1 から 0xFF まで 31バイト
ユーザプログラムでこの領域を書き換えられますと、Sherpaは正常に動作いたしません。また、R1レジスタもSherpaで使用しています。(ユーザの設定したバンクの)そのため、R1の値が保存されるIRAM(0x01,0x09,0x11または0x19)にはSherpaの内部の値が保存されています。ユーザのR1の値はIRAMの0xFAに保存されています。
ブレークポイント、ステップ実行の注意事項はヘルプファイルをご覧ください。
※ SDCC使用時の不具合情報
Sherpaは、プログラムをEEPROMに書き込むときにヘッダ情報を追加しています。その中に転送ブロック数(256バイトで1ブロック)を書くところがあります。HEXファイルの最終行のアドレスからこのブロック数を計算していますが、SDCCではリンクするライブラリをユーザプログラムの後ろに追加しているようで、最終行が最終アドレスになっていません。そのため、ブロック数の情報が小さくなり、全てのコードがRAMへ転送されないため、動作がおかしくなる場合があるようです。
<対策>
1. Nordic社のeeprepを使用する。
このソフトはまじめにバイト数をカウントしているようで、正常に動作します。
2. SherpaからPonyProgが起動したとき、PonyProgで
Edit -> Edit Buffer enabled とし、
0x02番地の値を最終アドレスのブロック数に書き換えます。
例えば、0xA12までのプログラムの場合、0Aを書きます。
|
|
|
|