ARM7mon

ARM LPCUSB

/ATMEL_AVR/jpg/cq-frk-nxp.jpg

interface 2009-05付録基板用のHIDブートローダー兼モニター

armon/armboot 移植済みの基板リスト(LPC2388用はSTM32からバックポートしました)

アーキテクチャーCPU(ベンダー)基板名FLASH容量SRAM容量
Cortex-M3STM32(STMicro)STM8S-DiscoveryのSTM32側64kB20kB
CQ-STARM DesignWave 2008-05付録128kB20kB
STBEE ストロベリーリナックス512kB64kB
STBEE Mini128kB20kB
LPC1343(NXP)LPCXpresso NXPセミコンダクターズ32kB8kB
TRZ1010N トラ技増刊「ARMマイコン パーフェクト学習基板」32kB8kB
ARM7TDMILPC2388(NXP)CQ-FRK-NXP-ARM(*これ)512kB64kB


CPUクロックは全て72MHz

特徴

  • 各ブートローダーのサイズはいずれも8kB(未満)です。
  • HIDデバイスなのでドライバーソフトの組み込み不要で、すぐ使えます。
  • ブートローダーと同じソースのアプリケーションが用意されていて、ユーザー定義関数が簡単に実行できます。
    • (printf関数の結果をPCのコンソールに表示できます)
  • ブートローダーとアプリケーションの間を自由に行き来できます(bootコマンドにて)
  • アプリケーションモードの状態からでも、そのまま更新されたプログラムの再書き込みと実行がすぐ出来ます。(コマンドラインツールarmboot)
  • メモリーダンプ、GPIOポートやI/Oレジスタの内容表示が可能です(現在はシンボルは使えません。番地を与える形式)
  • 任意番地からの実行も可能です。
  • 逆アセンブラ内蔵です。(armon.exe側が処理します)

弱点

  • (CPU内部)レジスタダンプ機能はありません。(実装してもあまり意味は無いかも。)
  • (CPU内部)レジスタはPIC版やAVR版ではRAMメモリー空間にマップされているため表示が可能ですが、ARM版では出来ません。
  • printfデバッグは可能ですがトレース実行機能などはありません。
  • HID以外のデバイスを書いてテストする場合はprintfは自分で実装する必要があります。(場合によってはシリアル側へ吐くなど)

利点

  • PIC版,AVR版とほぼ同じ感覚で利用できます。(ソースツリーの大半は使い回しです)
  • 上記のそれぞれのARMデバイスでほぼ共通の操作が出来ます。(実行ファイルは別になる場合があります)
  • 将来PIC18F/AVRライター機能を追加可能です。(GPIOポートを割り当てるだけで、ライター機能そのものはPIC版に実装済みです)
  • ソース書き換え→実行のターンアラウンドが短い。
    armboot.exe -r -nv main-2000.hex という1行バッチを走らせるだけ。非常に短時間です。
    • DFUの場合はelf->dfuへの変換とDFuSeという面倒なGUIを操作する必要があり、さらに、USBの挿抜とブートジャンパーの切り替え操作まで必要になります。
    • 内蔵BOOTROMによるUSB-MSCクラスローダーやシリアルローダーを使用する場合にも、ジャンパーの切り替えが必要で、USBドライブ認識に時間が掛かることが多いですが、(ブートローダーとアプリケーションが)互いにHIDデバイスの場合はそのような煩雑な動作は不要になります。

ダウンロード

種別ファイル対応基板
LPC-2388ブートローダーarm7mon.zipCQ-FRK-NXP-ARM

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

種別ファイル対応基板
LPC2388版 仮想COMサンプル他arm7sample.zipCQ-FRK-NXP-ARM


  • 今回のLPC2388版は、STM32/LPC1343版からバックポートしました。
  • 逆アセンブラの表示がややおかしいです。 --- 直しました。
  • FLASHへの書き込み機能はあります が、アプリケーションのブートがまだうまくいきません。 -- OKになりました。
  • Thumbコードを逆アセンブルしたいときは、'l'コマンドに与える番地を奇数に(LSBを1)してください。

ビルド環境の構築方法


ビルド環境の注意など

  • WinARMはlibgccのfloat関数が抜けているので、一部差し替えの必要があります。
    • また、libc.aの_sbrk_rや_open_r,_read_rなども抜けています。(組み込み用途でファイルオープンは普通しませんが)
  • CodeSourcery_G++_Liteはコマンドライン版ですが無償で使用できます。また、gccのバージョンが新しい(4.4.1)ためか、生成コードサイズが小さくなります。
  • CodeSourcery_G++_Liteには makeやls,catといったunix標準コマンドがあまり含まれていません(cs_make.exeは付いています)ので、WinAVRを別途インストールされている方は、そちら(C:\WinAVR\utils\bin\)にもPATHを通しておいたほうが良いでしょう。