lpc-armon

ARM LPCXpresso


■ 概要

  • これは、LPCXpresso用の HIDクラス・ブートローダー 兼 簡易モニターです。
  • CQ出版のTRZ1010N付録基板でも同様に使用できます。


このブートローダーを使用することによって、以下のようなことが出来るようになります。

  • Cortex-M3用のプログラム開発。
  • 内部メモリーやI/Oポートの確認、変更。
  • https://raw.github.com/iruka-/ATMEL_AVR/master/web/jpg/ARM/1343a.jpg


TRZ1010Nのコネクタ配置

  • 間違いがあればご指摘ください。

P3:  OPAMP入力用

123456
3.3VGNDA-D Ch6 inA-D Ch7 inAGND(1.25V)OUT1


P4:  未解析 OPAMPとRTCへの接続用???

GND12GND
+3.3V34+3.3V
PIO1-11(AD7)56OPAMP OUT3
PIO1-4 (AD5)78RTC nINT
PIO2-3910PIO1-2
PIO3-11112OPAMP AGND(1.25V)
PIO3-01314-
PIO2-11(SCK)1516RTC SCL
PIO1-10(AD6)1718OPAMP OUT4
PIO0-9 (MOSI)1920RTC SDI
PIO0-8 (MISO)2122RTC SDO
PIO2-22324-
PIO2-102526-
PIO2-92728-
PIO2-52930-
PIO2-43132TOUCH SWITCH OUT
PIO1-93334OPAMP PIN1
PIO0-2 (SSEL)3536RTC CE
PIO0-63738-
+3.3V3940RTC Vdd


P2:  JTAG???

+3.3V12PIO0-1(TMS)
GND34PIO0-10(SWCLK)
GND56PIO1-1(TDO)
-78PIO0-11(TDI)
GND910GND
  • LPC1343にはJTAGデバッグ機能は含まれていないはずなので・・・もしかしたらTAP専用???


P1:  SWDデバッグ?

12345678
+3.3VPIO1-3(SWDIO)PIO0-10(SWCLK)PIO0-9(MOSI)-PIO0-0(nRESET)-GND


P5:  温度センサーへの接続PIN

+3.3V12LM75B A2
PIO0-4(SCL)34LM75B SCL
PIO0-5(SDA)56LM75B SDA
PIO2-178PIO2-8
PIO2-7910PIO1-8


P6:  USART?

PIO2-0(DTR)12PIO2-6
PIO3-334PIO1-7(TxD)
PIO1-6(RxD)56PIO1-5(RTS)
PIO3-278+3.3V
GND910GND


K1:  2-3間ショートでブートローダー(Windowsからは仮想Diskになる)

1-
2PIO0-1(BOOT SELECT)
3GND
  • 2-3間オープンでユーザープログラムの実行


K2:  2-3間ショートでLDO禁止???

1-
2LDOレギュレータのCE
3GND
  • デフォルトは全オープン


https://raw.github.com/iruka-/ATMEL_AVR/master/web/jpg/ARM/lpc1343_lqfp48.png


ダウンロード。

種別ファイル対応基板
LPC-1343ブートローダーlpc-armon.zipLPCXpresso/TRZ-1010N

アプリケーション・サンプルソース

種別ファイル対応基板
LPC1343版 仮想COMサンプルlpc-sample.zipLPCXpresso(LPC1343)、他

2011-01-15: 仮想COMサンプルがUSBデバイス登録失敗するバグを直しました。

  • これは、PROD_ID=0003 だったところをHIDデバイスと被るために0004に変更したつもりが、変更に失敗して正しいディスクリプタを生成出来ていなかった問題です。
  • オリジナルのサンプルソースでは0003ですが正常動作していました。0004に書き変えるときに2byte->1byteにしてしまいエンバグさせていました。

■ 現在のステータス

  • ・コンパイラ "CodeSourcery G++ Lite" にて、ビルドは通ります。
  • ・通電すると、LEDが点灯します。
  • ・HIDクラスとしてPCから認識されます。
  • ・host/armon.exe を起動すると、メモリーダンプなどが実行できます。
  • ・host/armboot.exe を起動すると、HEXファイルをFlashに書き込むことが出来ます。
  • ・host/ディレクトリをLinuxでビルドすればLinux上でも同じことが出来るようになっています。

STM32版では、ブートジャンパーあるいはUSERスイッチによって、電源ON直後にブートローダーになるかアプリケーションを起動するかを切り替えることができますが、

  • LPC1343版では、今のところブートジャンパーのピン割り当てがありませんので、電源ON直後はブートローダーモードになります。
  • アプリケーションを書き込んで起動するには
    C:> host\armboot.exe -r main-2000.hex
  • を実行します。
  • 一度書き込み済みのアプリケーションを起動するには
    C:> host\armboot.exe -r 
    もしくは
    C:> host\armon.exe
    ARM> boot 2000
    ARM> q
  • を実行します。

■ 使い方

  • (1)LPC1343のUSBブート機能を利用して、firmware/firmware.bin を書き込みます。(USBマスストレージで出現するCRP DISABLEDというドライブ名のドライブのルートにあるfirmware.binに上書きすればOKです。)
  • (2)USBでPCと接続するとLEDが点灯します。
  • (3)host/armon.exe を起動して接続できれば成功です。メモリーダンプ('d')      と、メモリー書き換え('ew')が出来ます。
  • (4)host/armboot.exe -r firmware/main-2000.hex を実行すると、0000_2000番地に   アプリケーションとしてのHIDmonを書き込んで実行します。
  • (5)アプリケーション側(0000_2000番地で動作するバージョン)の動作中はLEDが       1秒周期で点滅を行うことで動作の区別をつけるようにしました。
  • (6)ブートローダーに制御を戻すには、
    C:> host\armon.exe
    ARM> boot 0
    ARM> q
    • を実行します。
    • もしくはUSBケーブルを一旦抜いて挿しなおします。
  • (7)アプリケーションの再度書き換えを実行するときにはブートローダーモードに制御を戻す必要がありますが、アプリケーションがmain-2000.hexと同等の機能を持つものであれば、armboot.exeは自動的にブートローダーを再起動したのち、アプリケーション部分の書き込みを実行することが出来ます。

■ userコマンドについて

  ARM> user
       ~~~~
  • というコマンドを実行すると、usercmd.c に記述されたユーザールーチン   を起動することが出来ます。
  • 現在は、簡単な _user_puts のテストが出来るようになっています。
  • printfを呼び出すようにusercmd.cを変更することも出来ますが、LPC1343のFLASH容量をすこしオーバーするため、書き込んで実行することが出来ません。 (なんらかの容量節減を行う必要があります)

■ ToDo

未実装項目

  • ・ブートジャンパーによるアプリケーションモードへの切り替え

実装完了項目

  • ・高速化
  • ・runコマンドが変.
  • ・bootコマンド欲しい.
  • ・(Application modeで)printが欲しい.
  • ・armboot -r オプション.
  • ・USB disconnect
  • ・他の基板への移植(CQ-STARM,STBeeなど)
  • ・逆アセンブラがPIC18Fのまま.

■ 補足

  • (1) armboot.exeは '-r'オプション指定により、アプリケーションの自動起動が出来るようになりました。
  • (2) armon.exe の boot コマンドを用いることで、互いに相手側のファームウェアを再起動することが出来るようになりました。
  • 例: BOOTLOADERからAPPLICATION側に切り替える。
    ARM> boot 2000
    ARM> q
  • 例: APPLICATION側からBOOTLOADERに切り替える。
    ARM> boot 0
    ARM> q
  • (3)互いに、相手側のファームウェアを更新することが可能です。
    • b.bat ・・・ BOOTLOADERからAPPLICATION側のファームを書き換えるバッチファイル。
    • bb.bat ・・・ APPLICATION側からBOOTLOADERのファームを書き換えるバッチファイル。
  • BOOTLOADER側の書き換えに失敗した(ファームウェアをバグらせてしまった)場合は、外部のJTAGライターが再度必要になります。 ---LPC1343の場合はBOOTROMに戻せばUSBマスストレージが出現しますので簡単にファーム書き戻しが可能です。