11.GCCによるデバッグRTLシミュレーション一通り、アセンブラでテストしましたが、テストできなかった命令があることやインプリメントしていない命令もあるので(GCCがとりあえずそれを吐かなければよしとしています。)簡単なCプログラムを走らせてデバッグを続けます。GCCのデバッグ環境を構築します。GCCはSH2で使用したCコンパイラ(ベストテクノロジー)を使用します。ROM/RAMのアドレス空間、配置がオリジナルではあり得ない仕様なのでそのままでは使用できません。ROM/RAMのアドレス配置をGCCに教えるにはリンカスクリプトで指定します。Vector,3efc番地にStackTopを配置します。最後の100番地分は、8ビットで絶対アドレスでアクセス可能な領域になります。Hex形式への変換バッチファイルです。f:\altera\h8_project\*.*例によってテストベンチにはデバッグ用ポートを追加します。アドレス70hをデバッグの出力ポートとします。//alwaysendmoduleこれに合わせて論理合成TOP層も書き換えます。endmoduleスタートアップルーチンはやはりカスタマイズが必要です。スタートアップルーチンの目的は、C言語のメインに行く前にスタックポインタの設定、割り込みのEnable、RAMの初期化です。main終了後にSleep命令が入っていましたが、Sleep命令はサポートしていないため書き換えました。_exitさて、以上の準備を経てようやくC言語でテストソースを書くことができます。最初にやることは、デバッグポートを動作させることです。デバッグのポイントは、いきなり大きなプログラムを走らせてデバッグをするのではなく、極小のプログラムからブートストラップしてことです。最初のCプログラムはsimple_test1.cです。プリントポートを叩いてメッセージを表示させてみましょう。}たったこれだけのプログラムですが、設計したCPUがちゃんとやってくれると嬉しいものです。以下のように実行されました。設計したコアの性能はどうなっているのでしょう。命令ステート数は、メモリリードを含まない命令の殆どを2ステートで実行しますのでざっくり30%程度CPIは向上している筈です。例によってベンチマークを駆動してみましょう。実行時間は、1.28msとなりました。SH2に次ぐスピードです。