/*
 * ArmUZK - Keyboard & Mouse extender UZK on LPC214x
 *   by uratan! 2008.10.7
 *     revised 2010.9.1
 */

ArmUZK プログラム

ファームウェアのソース一式はこちらです。

arm-uzk-048.zip (version A048, 2009.7.8)          (過去のzip)

ターゲットハードウェアは、Makefile 中の MODEL オプションにより 選択します。現在のデフォルトは LPC-H2148 用になっています。

LPC-H2148 1個でも、HID デバイスの出現までは確認できます。

私は公式な USB の VID を付与されておりませんので、上記のファームウェアでは EZ-USB 版 UZK と同じ

	VID = 0x0547 (Anchor Chips Inc.)
	PID = 0xFFFF
を使用しています。なので ArmUZK を制御する親 PC 側のアプリケーションは、 UZK のものがそのまま使えます。 こちらの 「UZK を制御する親 PC 側のアプリケーションについて」 をご参照ください。

また、こちらの 「本ファームウェアの構成」にも、 ファームウェア内部構成に関する説明があります。
[2010.5.20]
本ファームウェアにより LPC214x は USB HID キーボード・マウスとして PC に認識されるようになりますが、上の内部構成の通り、 「どのキーを押した」とか「マウスを動かした」などのアクションには 本ファームウェアは一切関与しません。
USB キーボード、マウスとしての各アクションは 親 PC アプリによって 生成し、本機はそれをブリッジするだけです。
なので 例えば「キー"C" を押したことにするには どのようなデータを送るのか?」等に関しては、wuzk.exe 等の 親 PC アプリ側を追いかけてください。

ソースだけではナニなので、日本語で解説を 書いてみました。 また、LPC214x の各種参考プログラムは巷にあふれているのですが、 開発環境によって違うレジスタ名の違いを まとめてみました。

ファームウェアのコンパイル方法

開発環境は、Martin THOMAS 氏による WinARM (WinARM-20060606.zip) を使用しました。
以下のような感じで、コマンドプロンプトより make します。

+----------------------------------------------
|C:\xxx> more z-path.bat
|set PATH=c:\WinARM\utils\bin;%path%
|C:\xxx> z-path.bat
|C:\xxx> unzip arm-uzk-0XX.zip
|C:\xxx> cd arm-uzk-0XX
|C:\xxx\arm-uzk-0XX> make
+----------------------------------------------
Makefile 中に arm-elf-gcc.exe などの実行ファイル名をフルパスで 記述してありますので、make.exe を呼ぶための PATH の追加だけで make できます。もし普段使いのツールに GNU make が入っていれば、 PATH の追加は必要ありません。
[2009.4.4]
(win2000上 でのコンパイルと winXP 上でのコンパイルで 生成されるコードの一部(rprintf()内)が異なりますね。なんでだろ?)

プログラムの書き込み方法(USB で)

ArmUZK プログラム には version A041 より USB 経由のファームウェア 自己書き換え機能が付加されています。 よって、PC 側のユーティリティ fup_armuzk.exe (wuzk.exe パッケージにバンドル) により、 コマンドラインからファームウェアのアップデートが可能です。 (ArmUZK は両サイド独立ですので、表裏おのおの書き換える必要があります)

+----------------------------------------------
|C:\xxx> fup_armuzk.exe arm-uzk-047-Rev0x.hex   ← LPC-H2148は "*-H2148.hex"
|*** ArmUZK firmware update
|    issue 'E'rase
|    loading new codes
|    issue 'R'e-write the codes
|*** DONE                                       ← このあと 10秒ぐらい待ってね
+----------------------------------------------
しかしながら、チップに一番最初に ArmUZK プログラムを書き込む場合、 および、書き換えたファームがなんらかの理由により動かない場合には、 チップに内蔵された機能によりシリアルポートを使用してプログラムを 書き換えます。次章をご参照ください。

プログラムの書き込み方法(シリアルで)

LPC214x へのプログラムの書き込みは、チップに内蔵された機能により シリアルポート経由で行うことができます。
LPC214x の P0.14 を Low に固定してハードリセットをかけることにより LPC214x に内蔵された Boot Loader が起動しますので、こちらの FlashMagicツールを使って hex ファイルを書き込みます。

LPC214x と PC とは、 P0.0/TxD0、P0.1/RxD0 (および GND)をいわゆる クロス接続します。
ここで、LPC214x 側は 0-3.3V、PC 側は -10V-+10V とロジック信号の レベルが異なりますので、レベルコンバーターを使用する必要があります。

市販のレベルコンバーターには、例えば以下のものがあります。

オプティマイズ RS232Cレベルコンバータ
また以下のモジュールでは、直接 0-3.3V の COM ポートとなるようです。
Strawberry Linux USB→シリアル変換モジュール
        (ちなみに LPC-H2148は ここで購入しました)

私は 自作のものを使用しています。 こんな回路のものです。
プログラム開発中はこのシリアル接続を使って、printf() デバッグしてます。

- * - * - * - * -



        開発中:オリジナルの UZK のアシストを得て


    uratan@miomio.jp
upward