(toppers-users 3654) AKI-H8/3052LAN開発ボードへのTINETの移植

Taketoshi Iyota iyota @ soka.ac.jp
2011年 10月 24日 (月) 11:53:25 JST


皆様、初めまして。
創価大学工学部情報システム工学科の伊与田と申します。

この度、研究室(団体会員)としてTOPPERSプロジェクトに参加させて
いただくことになりました。どうぞ、よろしくお願い致します。

先日、9月に行われたSWEST13のポスター発表でTRHーα1
(TOPPERS Reference Hardware)の提案をさせていただきましたが、
そこで使用するのが秋月電子のAKI-H8(3052F)マイコンボードです。

それで、このTRHにTINET(TCP/IPプロトコルスタック)を移植
する準備というか予行演習として、同じH8ボードを用いている「AKI-
H8/3052 LAN開発ボードキット」にTINETを移植して、一応、動作
しましたので、まずは簡単に御報告したいと思います。


今回の移植にあたって、いろいろと調べる中で、この3052 LAN キット
にTINETが移植されていなかった理由がよく分かりました。

最大の理由は、NIC(ネットワークインターフェース)のRT8019ASの
コンフィグレーション(設定)データで指定されている割り込み要求の
信号線と実際に配線されている信号線が異なっているために、割り込みが
H8に入力されないというハードウェアのバグです。

RTL8019ASの割り込み出力はIRQ0がH8に接続されていますが、実際に
割り込み要求が出力されるのはIRQ4で、この設定データはシリアルROM 
93C46 の最初の1バイトに書かれています。この値を(0x40から0x00に)
訂正して、IRQ0から割り込みが出力されるように直しました。


もう一つ、バグではありませんが、移植を妨げるハードウェアの違いは
RTL8019ASとのアドレス信号の接続でした。TINETが公式にサポートしている
3069LANボードは、RTL8019ASのSA0〜SA4に対してH8のA0〜A4が接続され
ています。これは8ビットバス接続を想定した接続方法です。

一方、3052 LAN キットの方は、SA0〜SA4に対してH8のA1〜A5が接続され
ています。これは16ビットバス接続を想定した接続です。アドレス線の
接続が異なるため、たとえH8のバスを8ビットに設定しても、NICの
各レジスターは偶数番地にのみ配置され、それらへのアドレスのオフセット
値は3069LANボードの場合の2倍になります。

その他には、外部RAMのアドレスと広さ(容量)の違いに対応するために、
リンカースクリプト(主に、debug.ld)の修正が必要でした。


このようなことに対応して、無事に、サンプルプログラムのminsvに含まれる
エコーザーバーとWWWサーバーを3052上で動かすことが出来ました。

より詳しい情報については、今後、何回かに分けて、MLで報告をしようと
考えておりますが、このMLでよろしいでしょうか。それとも、ソフトウェア
開発用のMLの方がよいでしょうか。

いずれにしましても、皆様、今後とも、よろしくお願い致します。