h8monでTFTPブート

2年も放置していましたが久しぶりの更新です。

以前から公開していたH8/3069用のモニタプログラム「h8mon」に「H8/3069Fネット対応マイコンLANボード(秋月電子通商)」のLANコントローラに対応したTFTPブート機能を追加しました。

この機能を使うと「H8クロスコンパイラ」でコンパイルしたELFバイナリのプログラムをTFTPサーバで公開することにより、h8monよりネットワーク経由でTFTPダウンロード、実行することが出来ます。

フラッシュメモリへの書き込みや、シリアルのダウンロードに比べて、数倍の速度でアプリケーションをダウンロード実行することが出来ます。実行画面はこんな感じです。

H8/300(H) 3069F Monitor Ver. 0.90
(c)2011 Takashi SHUDO
Virtual vector table area : FFBF20 - FFC01F
Monitor used RAM area     : FFC020 - FFD179
Monitor stack end address : FFD30C
Build date                : 12:26:30 Apr 30 2011
>ip 192.168.1.123
IP address : 192.168.1.123
RTL8019AS Initialized
MAC : 00:02:cb:01:64:bf
Start network
>tftpb 192.168.1.3 gs
TFTP boot
Target IP : 192.168.1.3
File name : gs
Load Addr : 500000
Start
Port 54278
................................................................................
................................................................................
................................................................................
............................................
Done
Receive size = 145084
Load : 00400000 - 00400583 (00000584)
Load : 005D1000 - 005F3B62 (00022B63)
Load : 005FC000 - 005FC009 (0000000A)
Load : 00FFBF20 - 00FFBF23 (00000004)
Entry address = 5D1000
GadgetSeed Ver. 0.79z17
(c)2010,2011 Takashi SHUDO
Build date : 22:45:44 Apr 28 2011
Static Memory : 0x401000 - 0x411000
Heap Memory   : 0x411000 - 0x5D1000
1856 K byte free
MAC : 00 02 CB 01 64 BF
Storage 0: "eeprom"
Ver.0.79z17
(c)2010,2011 Takashi SHUDO
:

TFTPサーバはubuntu 10.04で動作確認しています。

GadgetSeedの開発もちまちまやっていたのですが、ソフトウェアの規模がかなり大きくなってきたのでシリアルのダンロードにも数分かかるようになっていました。実行までに時間がかかると開発のモチベーションも下がってしまいます。そこで2011年の年明けあたりから少しずつIP/UDPのプロトコルスタックから作り始めていたのですが、やっと実用に耐えれれる程度になったので「h8mon Ver.0.90」として公開します。

h8mon Ver.0.90のダウンロードと、マニュアルはこちらを参照ください。

基板の課題

忘れないうちに基板の課題事項をメモ

・電解コンデンサ(C11)のシルクを書き忘れている

凡ミスです。

・L1のフットパターンがピッタリすぎて半田付けがしづらい

データシートの通りだとピッタリなのですが、手付けを考えると少し大きめにするべきでした。

・リセットIC(TCM809)のフットパターンがちょっと大きい

ライブラリを使ったんだっけ?自分で入力したのかな?微妙に合いませんでした。

・LCDのコネクタ用端子の穴が小さい。

コネクタ入りません。orz

・SCI0のRXDをプルアップしておくべきだった

h8monはSCI0をgdb-stub用のI/Fにしているのですが、ゴミを受信して勝手にstub機能が動作してしまいます。拡張用にと思って端子を出しておいたのですが、オープンのままだったので取りあえず10Kでプルアップしました。

・UBSシリアル(FT232RL)が不安定

USBの配線はシビアなのかな?ジャンパで安定したのですが、せいぜいフルスピード(12MBps)と思って適当に配線したのがまずかったのかも?

・USBシリアル(FT232RL)にリセット入れなくてもよかった?

リセットIC(TCM908)からのリセットをFT232RLのリセット入力に入れていたのですが、リセットのたびにUSBが再認識されるのはどうかと思い、パターンをカットしました。


あと、パターンの変更はないのですが、キーボードに乗せている面実装LED(松下 LNJ208R8ARA)を点灯するとかなり熱くなっていました。抵抗10Ω入れていたのですが、電流が流れすぎていたようです。1KΩまで上げてもちゃんと光るのでこの値にしました。

いま、HT7750Aを使った電源回路を試しているのですが、あまり電流流せないみたい。スペック上200mAですが、よく見たらDRAMってリフレッシュ中90mAも流れるんで結構きついようです。電源をエネループ2本直列だとUSBシリアルがPCから認識しません。電池駆動は厳しいかなぁ(^^;

完成間近?

少しずつ部品を実装して動作を確認しています。

DRAM実装後、h8monのメモリチェック機能を使って動作を確認しました。

ベリファイエラーが山のように出ます。(;_;)

H8のD0とD1が半田ブリッジしていました。

直して再び確認すると僅かにエラーが出ます。

>memck
Memory check.
Start  : 400000
End    : 5FFFFF
F.Data : 00000000
Writing…
Checking…
Verify Error at 455C1C W:00015707 R:00095707
Verify Error at 4F674C W:0003D9D3 R:0003D9D2
Verify Error at 540070 W:0005001C R:0005201C
Verify Error at 58FE44 W:00063F91 R:00063791
Verify Error at 59FD1C W:00067F47 R:00467F47
>memck
Memory check.
Start  : 400000
End    : 5FFFFF
F.Data : 00000000
Writing…
Checking…
Verify Error at 455C1C W:00015707 R:00095707
Verify Error at 58FE44 W:00063F91 R:00063791
Verify Error at 59FD1C W:00067F47 R:00467F47
>

DRAMのリフレッシュ間隔を縮めるとエラーが無くなりました。取りあえずこれで良しとします。

DRAMは沖電気のMSM5117800を使っています。BSCの設定は以下にしました。

RTCOR = 5;    //
RTMCSR= 0x30;    // Φ2048

DRCRB = 0x98;    // カラムアドレス10bit

DRCRA = 0x7c;    // CS2:DRAM空間,P81出力

MicroSD、LCD、EEPROM、RTCも取りあえず動いているようです。

img_0983

LCDはコネクタで接続しようと思っていたのですが、GadgetBase側のスルーホールが小さくてコネクタが入りませんでした。(;_;)いろいろミスっています。

キーボードも半田付け終わりました。46個のタクトスイッチがあります。を正直しんどかったです。終わった後のビールがう旨かった。(^^;

img_0986

残りは電源回路と、USBホストです。

キーボードのドライバがまだなのでGW中に書く予定です。

何とか動いてきました。

なんとか動き出してきました。

最初、MD2ピンのプルアップ抵抗の半田不良に気づかず、FLASH書き込みソフトは動作するのに、書き込んだモニタソフトが起動せず、かなりうろたえました。(^^;

MD2がLowだと内蔵FLASH ROMが有効にならないのです。

img_0975

USBシリアル変換は回路のミスで2本のジャンパが必要です。

img_0978

クリスタルの下にスルーホールを置いたのも、ちょっと失敗でした。部品と密着させて実装すると回路がショートする恐れがあるので、少し浮かせて半田付けする必要があります。

img_0981

Mini-USBコネクタにもジャンパを1本入れています。パターンが問題なのか原因は不明ですが、これを入れないと、PCからのUSBシリアルの認識が不安定になります。

組み立て開始

仕事が忙しくて、折角到着した基板も組み立てもさっぱり進みません。(^^;

取りあえず、H8が動く最低限の部品を実装することにします。

img_0970

半田ブリッジはお構いなく半田をのせていきます。

img_0971

半田吸い取り線で余分は半田をとれば、綺麗になります。

img_0973

確認のためのルーペは必須です。