FORTH 言語・システムをSH-3 への移植

これはポリテクセンター兵庫(兵庫職業能力開発促進センター)組込みマイコン技術科の訓練生として行った最後の課題の報告書です。

1. はじめに

FORTH (フォース)言語をSH-3に移植することは何のメリットがあるでしょう?

簡単に言えば、リナックスなどのホストシステムを使わず、ターゲット自体に開発を進ませることが可能になるはずです。また、組み込みのシステムはリナックスほど複雑ではなく、スケジューリングなどのシステム機能は自分で決めれるのです。

ただし、一ヶ月だけの間にスケジューリングまではできません。巧く行けば、ぎりぎりの線で、基本のシェルに相当する言語インタープリターの分と簡単なドライバを組めるという覚悟の下その道を決めました。欲張りが動いたかも知れません。

因って、以前から持っていた、開発の途中の自作 bif-c方言FORTH言語がターゲットのSH-3上リナックス上動いているのを既に確認していたので、間に合わなければ、途中切り替えることも先から考えていました。

結局、移植は半分ぐらいできました。できたソースコードをソースフォージの作業部屋に置いています。<http://sourceforge.jp/users/reiisi/pf/fig_sh/>です。BIF-C の発表の分はこれからBIFのプロジェクトページに載せるつもりです。<http://bif-c.sourceforge.jp/>の下に置くでしょう。(ウェブフィルタの関係でそのサイトページを作る作業は自宅で行うしかありません。)

2. 開発環境

ハードウェア:

  • PC (OSはMSWindows XPまたはCent OS 5)
  • Sophia Systems SH3-DSP用EJ-DEBUGモジュール
  • SH7709S CPU掲載のSH-2002及びEMB-DIO104-02

ソフトウェア:

※但し、Watchpoint を使うまでは行けませんでした。

3. 機能概要

FORTHというものは飽く迄も言語です。アプリケーションが作れるほどの性能を持っているし、ライブラリなどを組んでいくとドライバも作れます。そして、デバッガとして利用することも可能です。

3.1 アプリケーション

簡単なLED設定命令は直ちに作りました。通常のFORTHではアセンブラなどを使うところはBIF-Cの場合、C言語で追加しました。これはファイルのbif_ex.cの中に定義しています。追加できるために、シンボルテーブルの初期化を改造する必要があって、その稼働時ソートはファイルの bifst_a.c の中の COUNTCLEAR()からBALANCETREES()までの追加関数でできました。(同ファイルのxCOLD()を参照。)

3.2 ドライバ

今回はドライバがリナックスの稼働環境なので、ドライバは練習で作ったC言語のドライバのままでした。(モデルはドライバを作るための性能の分まで用意されていないのです。組むまでは8〜24人時間の作業工数を予測します。)

3.3 デバッガ

デバッガの機能の1つを例としてあげると、16進法表示の簡単なものは ファイルの tools_stdio.text の中の BYTE-DUMP から 4DUMP(32ビット毎)までの定義です。

4. 過程

•およそ3週間の間にSH-3アセンブラへの変換の半分ぐらいができました。内部インタープリターの動作を HEWのエミュレータで確認できました。ソースコードの最後の状態はfig_sh3.tgzのアーカイブファイルに、確認段階のスクリーンキャプチャーと一緒に収めています。変数などの現在の値を獲得する「@」の確認は以下のような操作でした。

debug-docol

変数の値をr1に格納し、スタックに転送してから次の仮想処理季語に制御が移るのを確認しました。

debug-docol

また、複数の仮想処理機語で構成される仮想処理機語が以下のように開始するところから、その定義が終了して呼び出し側に戻るまで辿って確認できました。
他の確認もできましたが、ここで省略します。

•最後の一週間に、「これができたはず!」という気持ちで、BIF-Cの改善を済ましてから、LED, 7セグメントLED, スウィッチ、及びLCDの簡単な制御の実例ができました。LEDに対しての使用は以下の様子です。

EMIT_LEDS

以下の映像はそれぞれの結果の様子です。

( 「67 EMIT_LEDS」、「OPEN_7SEGS 52 EMIT_7SEGS」などのあと)

LEDS

5. 終わりに

最初から移植を諦めて、BIF-C だけに集中していたら、練習の写真アプリをFORTHで組んでから、何らかの簡単なゲームもできたはず。しかし、移植が完了できずにしてもSH-3のアセンブラを大体マスターしました。機会があれば、訓練終了後移植を追い詰めることを考えていますし、BIF-Cにもっと充実した開発環境を整えることもしたいと思っています。

6. 参考文献

reiisi について

Joel Rees is a sometimes English teacher and sometimes programmer working and living with his family in Japan. ジョエルリースという者は場合によって英語講師、場合によってプログラマです。家族と共に日本に住んでいて、日本で仕事をしています。 You can find some of my projects at ボクのプロジェクトのいくらかを http://sourceforge.net/users/reiisi and 及び http://sourceforge.jp/users/reiisi/ にてご覧いただけます。
カテゴリー: fig FORTH on SH3 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です