H8 Monitor

H8 Top
 

AKI-H8-USB で簡単なモニターを&ライブラリを作成中のメモ。

2002.11.4
受信データを処理できないときにどうやってフロー制御するのかを調べてみるとUSBN9604のpdfに自動でNAKハンドシェークをすると書いてある。しかしFIFOから読み込まずにそのままにしておくとどんどん次のデータが上書きされる。
STALLにしてみるとホストにエラーが出るしどうするの?、悩んだが受信できないときにRX割り込みのマスクを外して割り込みを受けないとデータが消えないことがやっと分かった。割り込みを受けるまでNAKハンドシェークするみたい。

しかし今度はAKI-H8-USBのコンソールが固まる!!しかし、ホストからのデータ書き込みを止めると復帰する。どうやらNAK割り込みを許可していたのでNAKハンドシェーク中ずっとNAK割り込みが発生して、コンソールのSCIの割り込みに届かなかったみたい。USBNはIRQ5に接続してあるので優先度が高いためだろう。

大体うまくいったかなと思ったらAKI-H8-USBの認識を繰り返していると7回周期でusb-uhciがENXIO..... というようなエラーを出す。分からん。

2002.10.24
USBの送信のストリングの送信でタイムアウトになるのは送信長が8の倍数のときにおきる。要求が0xffなのでホストが次のデータを待ってしまうみたい。
2002.10.11
AKI-H8-USBでせっかくUSBがあるのだから使いたいと思いLinuxで簡単に出来ないかと思ってドライバーでも作ろうかなと思ってusb-serial.txtを見ていたら何もしないただデータを渡すだけのちょうどいいドライバーがすでにありました。usbserialのドライバーを使ってvendorとproductオプションを渡してやればアタッチしてくれて使えるようになります。
>modprobe usbserial vendor=0xffef product=0x10

vendorとproductは秋月のサンプルプログラムのまま。

これで /dev/usb/tts/{0,1...}に割り当てられます。
devfsを使ってないと /dev/ttyUSB{0,1...}のようです。

これで秋月のusb.cの関数を使って初期化すると見事USBデバイスが認識されます。
カーネルの"USB verbose debug message"sを有効にしておくとこの様子が見れます。

>cat /dev/usb/tts/0

としておいてusb.c の write_buffで文字を書き込めば表示されます。

これを使えばフラッシュに書き込むとき以外232cはいらなくなりそう。

2002.10.9
strtokを使ったら動きが変。newlibのソースを見てみると_impure_ptrにアクセスしている様子。impure.cでスタティックで宣言され、初期化されている。しかしmapを見てみるとRAMに割り当てられている。どうやら初期化されてないので動きが変になったようだ。
リンカスクリプトの説明をもう一度読んでATを使ってロードアドレスを変更してスタートアップで初期化すればいいと分かった。