Interface 2013年1月号に「 FM3マイコンで試す!メモリ・ダンプ・モニタの作成」というのがあった。
さっそく私も試してみたくなった。
まず、
Natural Tiny Shell (NT-Shell Version 0.2.0)[LINK]をダウンロード。
ついでに
Natural Tiny Monitor (NT-Monitor Version 0.2.0)[LINK] もダウンロード。
次に、組み合わせるCPUを選ばなくてはならない。
FRK-FM3 (MB9BF618T)
CQ-LM3S3748
CQ-FRK-NXP-ARM (LPC2388)
SH7085
FRK-RX62N
FRK-SH2A (SH2A-7262)
TRZ1104A (LPC1114/301)
TRZ1002H (H8SX-1655)
AKI-SH2/7045F
BTC050 (SH-7045F)
CQ-STARM (STM32F103VBT6)
こうやって書き出してみるとずいぶんたくさん持っているものだ。 もちろんこれが全てではない。
この中では TRZ1104A が手ごろのような気がするのでこれで進める。
ベースのサンプルは
code.bundle.lpc11xx.keil.zip[LINK] の UART でいいだろう。
と、始めてみたものの uart.c の中に getchar に相当する関数がない。
putchar に相当する関数もないが、これは以前 printf のテストで作成したので問題ない。
最悪なのは UART バッファーが FIFO 形式になっていないことだ。この部分は修正しよう。
まずは UARTSendByte からだ。
int UARTSendByte(char c)
{
#if CONFIG_UART_ENABLE_TX_INTERRUPT==1
/* Below flag is set inside the interrupt handler when THRE occurs. */
while ( !(UARTTxEmpty & 0x01) );
LPC_UART->THR = c;
UARTTxEmpty = 0; /* not empty in the THR until it shifts out */
#else
while ( !(LPC_UART->LSR & LSR_THRE) );
LPC_UART->THR = c;
#endif
return 1;
}
次に UARTReceiveByte 。この部分はバッファーからキャラクタを取り出すだけにする。
int UARTReceiveByte(void)
{
int chr;
while (UARTfp == UARTlp) ;
LPC_UART->IER = IER_THRE | IER_RLS; /* Disable RBR */
chr = UARTBuffer[UARTlp++];
UARTlp %= BUFSIZE;
UARTCount--;
LPC_UART->IER = IER_THRE | IER_RLS | IER_RBR; /* Re-enable RBR */
return chr;
}
後は割り込みハンドラの部分だが、今日はここまでにしておこう。
参照:
CuBeatSystems[LINK]
CQ出版社インターフェース2013年1月号P174「FM3マイコンで試す!メモリ・ダンプ・モニタの作成」
環境:TRZ1104A (LPC1114/301)
+
code.bundle.lpc11xx.keil.zip (V1.04)[LINK]
+
Natural Tiny Shell (NT-Shell Version 0.2.0)[LINK]
+ Keil MDK-ARM V4.53
+ GCC Sourcery CodeBench Lite 2012.09-63
+ KPIT Cummins GNU-Archive Editor v1.1
+ KPIT Cummins GNU-Map Viewer v1.0
セコメントをする