PARTNER-ETU RTE100TP
  開発環境設定メモ



開発環境
ETUでのシステムコール
100TPでのシステムコール
ETUのバーチャルリンク機能
パートナーでの時間測定
スローモーション実行(無限ステップ実行)
ユーザプログラム実行中のトレース条件の変更(RT-100-TP)
RTE100TPで、トレースを見ようー(V832編)!!
N−wire裏技(V832)


PARTNER小技集


ETUモデル32を42ピンROMプローブで動かす


PCMCIA+WindowsNT4.0で使用する場合の注意







ETUMIPS版 FAQ


ETU 8086(V30)版 FAQ

























開発環境

 N−wire ICE  PARTNER−ETU (京都マイクロコンピュータ社)

             RTE−100−TP    (株式会社マイダス・ラボ社)

 GNUベースコンパイラ exeGcc      (京都マイクロコンピュータ社)

 ターゲット       RT−V832−PC  (株式会社マイダス・ラボ社)

 購入につきましては、NECの各特約店(CPUを売っているところ)にて扱っています。



















パートナーのシステムコールを使おう!!

 パートナーETUは、exeGccの関数を用いて、システムコールが可能です。

  さすがに、コンパイラーとディバッガの作成者が同じだけのことはあります。

 サンプルプログラム "printf"を使うもの

    #include <stdio.h>

    main()

    {

   printf("test ok"); 

  }

 その他のファイルは、sprintfの時と同じです。



 PARTNER−ETUにダウンロード後、コマンドウインドウで

  >sysc __sysc_et

   と、入力する。

  printf関数を実行後、コマンドウインドウ上に"test ok"が出力されます。

 同様に、getch等が使えます。




 Release 2.0 (Ver 2.9のもの) の場合

 シスコールの使い方は少し違います。

  まず、プログラムをメイクするときはVLINKをOFFにする。
  メイクしたプログラムダウンロード後、パートナーのコマンドウインドウで
   >sysc auto リターンとする。


C++を使う場合

 コンパイラとディバッガのバーチャルリンクの設定をONにして
 シスコールを利用しましょう。
  詳しくは次章。。


 以上。。。









ETUのバーチャルリンク機能

  シスコール?をおもいっきり進化させた?機能のとしてバーチャルリンクが使えます。
 何をやるかというと、ターゲットのプログラムとホストパソコン上のハードウェア資源を
 仮想的に接続する機能です。

 やり方 (V5432の場合)

    cfg ファイルの編集
      取りあえず、以下の3カ所を修正しておきましょう。
       JTAG		     VLINK
       JMONITOR ADDRESS     	a0000800
        MONITOR CODE ADDRESS	 BFC00800
     ROM1 TYPE		  416
         ROM1 ADDRESS		BFC00000

    VLINKでは、モニタ領域の一部をポートとして使用するため
    ROMプローブは必須です。また、エミュレーション領域をcfgファイルで
      指定する必要があります。

    exeGCCの設定
     VLINKを使用するにチェックする


  あとは・・・
   exeGCCをインストールしたところにあるtypeディレクトリのプログラムを
   makeして実行させる。



























マイダス・ラボ社のICEでもシスコールが使えるぞ!!

 N-Wire ICE (RTE-100-TP)でのシスコール

 exeGccを用いた場合、RTE-100-TP上のPARTNERで、

 シスコール(ディバッガのコマンドウインドウ上でキャラクタを出力すること)が可能です。

 手順

  ディバッガに付属している サンプルプログラム"syscall.c"を用います。

   つまり、プログラムをリンクする際、このsyscall.cを加えて下さい。

  パートナー起動後、コマンドウインドウで

   >sysc syscall

    とする。

  シスコールを行う関数としては、以下のものが登録されています。

     rpt_putc: 	1文字出力システムコール関数

    rpt_key: 	1文字入力システムコール関数

    rpt_puts: 	文字列出力システムコール関数

    rpt_gets: 	文字列入力システムコール関数

  これらを用いたサンプルプログラムは、ここです。

  以上。。。。

  














パートナーので、時間を測定しよう!!

 N−wireのパートナーでは、プログラムのGOからブレークまでの

 実行時間の自動表示ができないです。

  そこで、次のマクロを作成すると、GOからブレークポイントまでの時間計測ができます。

   まず、コマンドウインドウで、下記のように入力して下さい。

    >{chkgo  リターン

   そーすると、?が出てくるので、後は、下記に従って下さい。

	>{chkgo

 	?bp fffffe30

	?time

	?g main ,/w     (main まで実行している間は、コマンドを受け付けない)

	?time

	?}

   {}で、囲んだところが、マクロとなります。

 マクロの実行

  >chkgo  リターン

 今回は、mainからタイマー割り込みが入るまでの時間を表示しました。


 以上です。。。。













スローモーション実行

 マクロを使ってステップ実行を連続して行っているだけです。

  >while{(1)
  >t
    >}













ユーザプログラム実行中のトレース条件の変更(RT-100-TP)

  RT-100-TPでは、実行中に(ブレークせずに)トレース条件の変更はできません。
 そこで、ユーザプログラムを一時的に止めてトレース条件を変更し、
 再度ユーザプログラムを実行する方法を、ICEのコマンドからのバッチ処理で  
 実現させました。

 (内容)
  ノーマルなトレースを行った後、一時的にブレークし、
  データトレース表示のみに切り替えた場合です。
 (具体的な方法)
  プログラムのブレーク直後に、パソコン側の時計を表示し、
  トレース結果をファイルに出力します。
    (マイダスさんのICEは、プログラム実行中は
      トレース結果を表示できないためです。)
  その後、トレース条件を変更し、プログラムをRUNさせた後に、
  パソコン側の時計を表示しました。
 (結果)
  両者の時間の差をとって、バッチ処理の結果としました。
  約1sくらいですが、実行毎に0.5s位の範囲で結果が異なります。
  つまり、パソコンの状態に大きく依存しています。

   使ったバッチプログラム time.mcr


















モデル32を42ピンROMプローブで動かす

42ピンプローブには、アドレス信号がA0〜A19までしか無いため、
16ビットバス幅のROMを2個とした場合、
1MBytes*2*2個で最大容量が4MBytesまでしか確保できません。

32ビットバス幅のROMを使用しても、同様に4MByteまでしか確保できません。

回避策として
STD16bitROMプローブを使う方法がおすすめですが、それ以外の方法
としては、ROMプローブの付線作業を行う方法があります。
ハードウェアマニュアルの付録4 ROMプローブコネクタ
を参考にして下さい。
ETUのアドレスの最上位 A20 の信号(6番)を、ROMプローブのLROM
側フラットケーブルやケーブルが接続しているROMプローブの基板部分の
コネクタ(LROM側6番ピン)の足から引き出して、ターゲットに接続すれば
可能です。
 40ピンROMプローブだと、ROMプローブのA19とA20の二本を接続すれば
同様に使用できます。
当然ですが、CS信号を作っているデコーダを改造して、CSを出す
範囲を広げておかないとダメですよ。


  参考図

















PCMCIA+WindowsNT4.0で使用する場合の注意

●制限事項
 WindowsNT4.0でPC-Cardインターフェースを使用する場合、インターフ
 ェースのアドレスが0x220番地に割り振られる場合にのみ使用可能です。
 アドレスが0x220番地以外に割り振られた場合、動作致しません。

●アドレスの確認方法
 割り振られているアドレスの確認方法は以下のとおりです。

  ・コントロール・パネルのPCカード(PCMCIA)アイコンをダブルクリック
  ・表示されたダイアログの「KMC/MEC ICE-IF 1.0」を選んで、プロパティ
   ボタンを押す
  ・表示されたダイアログのリソース・タブを選択
  ・I/O範囲として「220-227」と表示されていれば動作可能。

●回避策(参考)
 I/Oの0x220番地が空いていれば、PC-Cardはその番地に割り振られます。0x220
 番地に割り振られないのは、他のデバイスがそのI/Oアドレスに割り付いている
 からです。
 そこで、どのデバイスが0x220番地に割り付いているか調べなければなりません。
 「スタート」→「プログラム」→「管理ツール」→「Windows NT 診断プログラ
 ム」で起動されたダイアログの、リソース・タブを選び、「I/Oポート」ボタン
 を押すと、I/O割り付けされているデバイスが表示されます。ここで、0x220番地
 に割り付いているデバイスを探します。ただし、ドライバが組み込まれていない
 場合など、割付けされていても表示されないデバイスもあります。
 通常、0x220にはサウンド機能が割り当てられることが多いようです。

 デバイスが特定でき、そのデバイスを物理的に外す事ができる場合、そのデバ
 イスを一度外してから、PC-Cardを接続し、WindowsNTを起動すると、PC-Cardが
 0x220に割り付くはずです。この状態で、外していたデバイスを元に戻しても、
 PC-Cardが0x220に割り付いたままなれば、それで使用できます。
 また、ぶつかっているデバイスがパソコンの内蔵デバイスの場合、BIOSの設定で
 そのデバイスのアドレスを指定できる機能がある場合が多いようです。そのよう
 な場合、BIOSの設定は通常「Plug and Play」とか「自動」とかになっていると
 思いますので、それを固定アドレスで0x220以外に割り当てます。
 以上の操作により、0x220に割り付いていたデバイスのアドレスが変わった場合、
 ドライバの設定(I/Oアドレスの設定)を変えなければならない場合があります
 のでご注意ください。






























PARTNER小技集

・ソース表示からアセンブラに切り換えた時に、
 表示している関数から表示する。
 (実際には、PCからの表示になる。)

  CTRL+F3 にて可能です。


・トレースウィンドウでデータを保存

   コマンドウインドウで
  >> ファイル名
  >td
    *
    >q
    >>
   上記の操作をマクロで行えば、可能です。


・コードウィンドウから1ラインアセンブル。

  できません。


・ステップ実行時のPCの履歴の表示

  シフトキー+Page up