LPCXpresso

ARM 2010-08 lpc-armon LPCXpresso1768


LPCXpresso(LPC3154+LPC1343) のターゲット基板のみを使って、USBデバイス作成を実験してみました。

  • まずは手始めに、一番簡単なHIDデバイスです。
  • 今回は、eclipse IDEなどを一切使用せず、arm用のgccとmakeだけでビルドしました。
  • https://raw.github.com/iruka-/ATMEL_AVR/master/web/jpg/ARM/xpresso2.jpg

LPCXpressoは秋月電子にて2,800円で入手可能です。





■ 概要

 これはNXPのLPCXpresso (LPC1343) ターゲットの簡単なHIDデバイスサンプルです。
 内容は、ほぼExamplesのままですが、通常のMakefileでビルドできるように再構成
 してあります。
 特筆すべき点は、わずか 404バイト(10進)でHIDデバイスとして機能することです。

■ ハードウェアの準備

基板分離:

  (1)LPCXpresso のLPC-Link側とターゲット側基板を切り離します。

USB配線:

  • https://raw.github.com/iruka-/ATMEL_AVR/master/web/jpg/ARM/lpc1343lqfp48.png
  (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


  • https://raw.github.com/iruka-/ATMEL_AVR/master/web/jpg/ARM/1343a.jpg

■ 使い方

バックアップ:

  (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用:無償)をインストールします。
  • 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