TRZ1104A (10) Natural Tiny Shell (NT-Shell) を使ってみる (1)2012年12月02日 22時30分02秒

Interface 2013年1月号に「 FM3マイコンで試す!メモリ・ダンプ・モニタの作成」というのがあった。
さっそく私も試してみたくなった。

まず、Natural Tiny Shell (NT-Shell Version 0.2.0)をダウンロード。
ついでに Natural Tiny Monitor (NT-Monitor Version 0.2.0) もダウンロード。

次に、組み合わせる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 の 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
    CQ出版社インターフェース2013年1月号P174「FM3マイコンで試す!メモリ・ダンプ・モニタの作成」

環境:TRZ1104A (LPC1114/301)
    + code.bundle.lpc11xx.keil.zip (V1.04)
    + Natural Tiny Shell (NT-Shell Version 0.2.0)
    + 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