LPC-Link2をLPC4370ボードとして用い、コードを実行させてみると、なぜかLPCXpresso LPC1769と比べて10倍以上遅かった。LPC-Link2は Cortex-M4 @ 204MHz、LPCXpresso LPC1769は Cortex-M3 @ 120MHzである。ぜったいに何かおかしい。
調べてみると、どうやらLPC-Link2のLPC4370は、外部SPI-Flashのコードを実行しているようだった。RAMに展開して実行するには、LPCXpresso環境の場合、下記のようなマクロを関数定義に用いる。
#include <cr_section_macros.h> __RAMFUNC(RAM) void hoge(void) { ... }
すると、380usecかかっていた処理が5.4usecに短縮した。2桁違う! LPCXpresso LPC1769と比べても倍以上速い。M4とM3では周波数以上に差があるということだろうか?
各種LPCマイコンでの処理時間を比較してみた。
ボード | マイコン | CPUコア | クロック | 処理時間 |
---|---|---|---|---|
LPCXpresso LPC1115 | LPC1115 | Cotex-M0 | 50MHz | 58usec |
LPCXpresso LPC1769 | LPC1769 | Cotex-M3 | 120MHz | 15usec |
LPC-Link2 | LPC4370 | Cotex-M4 | 204MHz | 5.4usec (RAM実行時) |
LPC-Link2 | LPC4370 | Cotex-M4 | 204MHz | 380usec (SPI Flash実行時) |
ちなみに、LPC-Link2をマイコンボードとして用いる場合は、LPC-Link2を2個用意し、片方をデバッガ、もう片方をターゲットとする。これはジャンパで設定できる。
ジャンパ | デバッガ | ターゲット |
---|---|---|
JP1 | 開放 (デバッガとして使用) | 短絡 (ターゲットとして使用) |
JP2 | 短絡 (ターゲットへの給電) | 開放 (給電しない) |