LPCXpresso
ARM 2010-08 lpc-armon LPCXpresso1768
LPCXpresso(LPC3154+LPC1343) のターゲット基板のみを使って、USBデバイス作成を実験してみました。
- まずは手始めに、一番簡単なHIDデバイスです。
- 今回は、eclipse IDEなどを一切使用せず、arm用のgccとmakeだけでビルドしました。
LPCXpressoは秋月電子にて2,800円で入手可能です。
■ 概要
これはNXPのLPCXpresso (LPC1343) ターゲットの簡単なHIDデバイスサンプルです。
内容は、ほぼExamplesのままですが、通常のMakefileでビルドできるように再構成 してあります。
特筆すべき点は、わずか 404バイト(10進)でHIDデバイスとして機能することです。
■ ハードウェアの準備
基板分離:
(1)LPCXpresso のLPC-Link側とターゲット側基板を切り離します。
USB配線:
(2)ターゲットLPC1343基板の USB-DM (D-) とUSB-DP (D+) をUSBコネクタ に接続(配線)します。 (3)USB-DP (D+) は、1.5kΩを通して 3.3Vにプルアップします。(アクティブpull-upでなくてよい) (4)FT/GPIO 端子をジャンパーピンで、GNDに落とします。(アプリ実行時はジャンパーオープンします) (5)USB-VBUS端子をUSBの5V端子に繋ぎます。(直結でも動きますが、気になる場合は2kΩ程度の抵抗を入れます) (6)USBの5V端子から3.3Vレギュレータを使用してLPC1343に3.3V供給するようにします。
MSDデバイス動作確認:
(7)配線確認後、USBでPCと接続するとLEDが点灯します。
(8)数秒から10秒程度でPC側がUSBマスストレージデバイスと認識し、32kBの USBドライブがマイコンピュータ上に現れます。
補足:
分離した基板のLPC-Link側は今回は全く使用しません。
もし、LEDが点灯ではなくて点滅を行っている場合は、USBブートローダーが起動していない 可能性が高いです。FT/GPIO端子がGNDになっているか再確認します。
USBデバイスが現れない場合はシリアルブート状態の可能性があります。USB-VBUS端子が5V (Highレベル)になっているか再確認します。
- CQ出版TRZ1010N基板を使用する場合は、USBコネクタ等の配線は不要で、基板を加工する必要はありません。
- ただし、ブートジャンパー(Xtalのすぐ近くに配置された3PINのピンヘッダー)にピンヘッダーもしくはスイッチ 等を配線して、再度別のファームを書き込むことができるようにしたほうが便利です。
- ブートジャンパーを配置しない場合は、最初に書き込んだファームウェアを永久に使い続けるか、もしくは
- ファーム更新時に3PINの下2本をリード線のようなものでショートさせてからUSBを接続する、などの技が必要になります。
■ ダウンロード
404バイトのHIDデバイス.(LPCXpressoのみで動作)
- usbhid-rom-tiny.zip
- BOOT-ROMを呼び出すことと、トリッキーなことをしてサイズ圧縮を図っているようです。
- 原因は分かりませんが、TRZ1010N基板では正常動作しません。
1.2kバイトのHIDデバイス.(LPCXpresso / TRZ1010N 両対応)
- usbhid-rom.zip
- BOOT-ROMを呼び出すことでサイズ圧縮を図っているようです。
約4kバイトのHIDデバイス.(LPCXpresso / TRZ1010N 両対応)
- usbhid.zip
- BOOT-ROMに依存しない場合はコードサイズが4kになります。
New!
LPC1343用 HID簡易モニター(armon) .(LPCXpresso / TRZ1010N 両対応)
- lpc-armon.zip
ブートローダーとしての機能はありませんが、BOOT-ROMの解析くらいには使えます。- ブートローダーとして使えるようになりました。
read more : lpc-armon
■ 使い方
バックアップ:
(1)出現したUSBドライブ内に "firmware.bin" という名前のファイルがあるはずなので それをパソコンにバックアップしておきます。
ファーム書き換え:
(2)出現したUSBドライブ内の "firmware.bin" を消します。 (3)このアーカイブを展開した中の src/firmware.bin を USBドライブのルートディレクトリ にコピーします。 (もしかしたら、元のfirmware.bin にそのまま上書きしてもうまくいくかもしれません)
実行:
(4)FT/GPIO端子をGNDに落としていたジャンパーを外して、USBケーブルを挿しなおします。 (5)すると、Windows側が、HIDデバイスを認識すれば成功です。
(6)成功したら、 usbhid_rom_tiny/LPC1343 HID Demonstration.exe . . . . . Windows側のHIDクライアントソフト を立ち上げて、GUI画面のLEDチェックBOXをマウスクリックすると基板上LED が点灯/消灯します。
■ プログラムの再ビルド方法
ここでは LPCXpresso が用意した開発環境を使わずに、普通のARM用gccとMakeを使ってビルドします。
(1)CodeSourcery G++ Lite(ARM用:無償)をインストールします。
- http://www.lineo.co.jp/modules/codesourcery/editions.html
- http://www.codesourcery.com/sgpp/lite/arm/download.html
- arm-none-eabi-gcc を使用するため、インストールしたG++Liteのbinディレクトリに実行パスを通しておきます。
(2)WinARMもしくはWinAVR をインストールして、C:/WinARM/utils/bin もしくは、C:/WinAVR/utils/bin のみも実行PATHを通しておきます。 (これは、make.exe や rm.exe などのunix系コマンドを使うためです)
(3)src/ ディレクトリにて普通にmakeしてください。
■ ディレクトリ構成
src/ . . . . . ファームウェア部分のソース inc/ . . . . . ファームウェア部分のinclude関係 HW/ . . . . . 機種依存ライブラリ(詳細は下記) HW/CMSISv1p30_LPC13xx/cmsis_readme.txt HW/CMSISv1p30_LPC13xx/history.txt HW/CMSISv1p30_LPC13xx/docs/CMSIS changes.htm HW/CMSISv1p30_LPC13xx/docs/CMSIS debug support.htm HW/CMSISv1p30_LPC13xx/docs/CMSIS_Core.htm HW/CMSISv1p30_LPC13xx/docs/License.doc HW/CMSISv1p30_LPC13xx/inc/core_cm3.h HW/CMSISv1p30_LPC13xx/inc/LPC13xx.h HW/CMSISv1p30_LPC13xx/inc/system_LPC13xx.h HW/CMSISv1p30_LPC13xx/src/core_cm3.c HW/CMSISv1p30_LPC13xx/src/system_LPC13xx.c usbhid_rom_tiny/LPC1343 HID Demonstration.exe . . . . . Windows側のHIDクライアントソフト usbhid_rom_tiny/srec2bin.c . . . . . srec2bin.exe のソース.
LPC1343用のHIDブートローダーに関する補足説明
read more : lpc-armon