組み込み機器向けのマルチタスクOS GadgetSeed公開

オープンソースの組み込み機器向けOSを開発しています。

名前は「GadgetSeed」です。

ソースはGitHubで公開しています。

https://github.com/GadgetSeed/gadgetseed

GadgetSeedは以下のマイコンボードで動作します。

以下のような特徴があります。

  • マルチタスクカーネル
  • デバッグを支援するシェルコマンド
  • 標準化されたデバイスドライバAPI
  • FatFSファイルシステムに対応
  • LwIP TCP/IPプロトコルスタックに対応
  • グラフィックス描画、文字フォント描画

GitHubには日本語ドキュメントも公開しています。

開発環境の構築方法から、サンプルアプリケーションのコンパイル、動作方法は下記を参照して下さい。

https://github.com/GadgetSeed/gadgetseed/blob/master/README.jp.md

サンプルアプリケーションには、タッチパネルで操作できるMP3、AAC音楽プレーヤー等があります。サンプルアプリケーションについては以下を参照して下さい。

https://github.com/GadgetSeed/gadgetseed/blob/master/apps/APPLICATIONS.jp.md

今後、本ブログでGadgetSeedについて解説してく予定です。

 

秋月電子のH8/3069Fネット対応マイコンLANボードについて

TFTPブート対応のh8monは秋月電子のH8/3069Fネット対応マイコンLANボードで開発しました。

このボードは完成品と、キット品の2種類があるのですが、完成品は面実装部品をつかったボードになっているのに対し、キット品は挿入型の部品を使っています。

私は写真のようにピンソケットを部品面に実装してブレッドボードと接続して使いたいために、キット品を使っています。(完成品は既にピンヘッダがハンダ付けされているのでこのような使い方が出来ないのです。ピンヘッダ未実装バージョンも発売してほしいなぁ。)

キット品のLANコントローラ(RTL8019AS)のクロックにはセラロックが使われいるのですが、困ったことにセラロックはクロックの精度が悪いため、LANの通信がかなり不安定です。

受信は出来るのですが、送信したパケットが大きくなると(私のボードの場合700バイト位から)受け取り側が受信できなくなります。

これに気づかず、暫くh8monのデバッグに苦労しました。

上の写真のボードはセラロックを外して、下の写真のような水晶発振子のボードを作って取り付けてあります。これで不安定だった通信が素晴らしく安定しました。

上の写真のボードはRS232Cのレベルコンバータ(SP232AEN)の接続をカットし、秋月電子のFT232RL USBシリアル変換モジュールを接続し、更にUSBバスパワーでH8/3069 LANボードを動作出来るようにしています。これで、パソコンさえあればどこでも電源入らずで開発が出来ます。(^^;

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から認識しません。電池駆動は厳しいかなぁ(^^;