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を選ばなくてはならない。
この中では TRZ1104A が手ごろのような気がするのでこれで進める。
ベースのサンプルは code.bundle.lpc11xx.keil.zip の UART でいいだろう。
と、始めてみたものの uart.c の中に getchar に相当する関数がない。
putchar に相当する関数もないが、これは以前 printf のテストで作成したので問題ない。
最悪なのは UART バッファーが FIFO 形式になっていないことだ。この部分は修正しよう。
まずは UARTSendByte からだ。
次に UARTReceiveByte 。この部分はバッファーからキャラクタを取り出すだけにする。
後は割り込みハンドラの部分だが、今日はここまでにしておこう。
参照: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
さっそく私も試してみたくなった。
まず、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
TRZ1104A (11) Natural Tiny Shell (NT-Shell) を使ってみる (2) ― 2012年12月04日 21時01分40秒
NT-Shell を実装するためにドキュメントを読んでいると、必要なのは getchar/putchar に相当する関数ではなくて read/write に相当する関数であることがわかった。
さっそく UARTReceive を作成する。
UARTSend も若干修正。
callback はダミーにしておこう。
コンパイル・リンク・フラッシュライト
起動と同時にプロンプトが出てくる。
いいね~。
文字列を打ち込んでみる。
バックスペースで修正
ヒストリー機能も使ってみる
callback が printf だけなので今の所ここまでだ。
ただ不便なのは一度ヒストリー機能を使うとコマンドラインに文字列が残ってしまうことだ。DOS プロンプトのように何もない状態にすることができない。
さて、これだけじゃ面白くないので NT-Monitor も動かしてみる。
その前にメモリ情報を実装しておこう。残念ながらこれが有効なのは scroll だけだ。
立ち上がりは NT-Shell と同じだ。
HELP を見ると
使ってみると、ドキュメントにも書いてあるように Shell が弱い。NT-Shell と合体させるのがいいようだ。しかし、サイズは巨大になる。NT-Shell と NT-Monitor でフラッシュのほぼ全てが埋まってしまう。
もう一点、 Scroll を実行すると後はReset を実行するしかない。コマンドラインに戻れないのだ。これは深刻な問題なのでぜひ何とかしたい。
あ!、さらにもう一点ある。 Scroll を実行すると受信バッファがすぐに overflow してしまう。実害はないものの何とかしたいところだ。これは NT-Monitor の実装のせいもあるが UARTSend/UARTReceive の問題でもある。
そうそう、割り込みハンドラの部分を忘れていた。( uart.c )
参照: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)
+ Natural Tiny Monitor (NT-Monitor Version 0.2.0)
+ TeraTerm Version 4.69
+ 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
さっそく UARTReceive を作成する。
int UARTReceive(char *buf, int cnt, void *extobj) { int i; for (i = 0; i < cnt; i++) buf[i] = UARTReceiveByte(); return 0; }
UARTSend も若干修正。
int UARTSend(const char *BufferPtr, int Length, void *extobj) { while ( Length != 0 ) { /* THRE status, contain valid data */ #if !TX_INTERRUPT while ( !(LPC_UART->LSR & LSR_THRE) ); LPC_UART->THR = *BufferPtr; #else /* Below flag is set inside the interrupt handler when THRE occurs. */ while ( !(UARTTxEmpty & 0x01) ); LPC_UART->THR = *BufferPtr; UARTTxEmpty = 0; /* not empty in the THR until it shifts out */ #endif BufferPtr++; Length--; } return 0; }
callback はダミーにしておこう。
static int func_callback(const char *text, void *extobj) { xprintf("%s\r\n",text); return 0; }
コンパイル・リンク・フラッシュライト
起動と同時にプロンプトが出てくる。
いいね~。
文字列を打ち込んでみる。
バックスペースで修正
ヒストリー機能も使ってみる
callback が printf だけなので今の所ここまでだ。
ただ不便なのは一度ヒストリー機能を使うとコマンドラインに文字列が残ってしまうことだ。DOS プロンプトのように何もない状態にすることができない。
さて、これだけじゃ面白くないので NT-Monitor も動かしてみる。
その前にメモリ情報を実装しておこう。残念ながらこれが有効なのは scroll だけだ。
立ち上がりは NT-Shell と同じだ。
HELP を見ると
(Debug commands) Read : RB|RW|RL [ADDR] Write : WB|WW|WL [ADDR] [DATA] Dump : DB|DW|DL [ADDR] (LEN) Fill : FB|FW|FL [ADDR] [LEN] [DATA|TYPE] (TYPE: inc, dec, rand, bitwalk) Copy : CB|CW|CL [ADDR-SRC] [ADDR-DES] [LEN] Verify : VB|VW|VL [ADDR-SRC] [ADDR-SRC] [LEN] Scroll : SB|SW|SL (ADDR) (Number formats) Binary : b01010101 or 01010101b Octal : o01234567 or 01234567o Decimal : d12345678 or 12345678d Hexadecimal : h1234ABCD or 1234ABCDhいろいろできるようだ。
使ってみると、ドキュメントにも書いてあるように Shell が弱い。NT-Shell と合体させるのがいいようだ。しかし、サイズは巨大になる。NT-Shell と NT-Monitor でフラッシュのほぼ全てが埋まってしまう。
もう一点、 Scroll を実行すると後はReset を実行するしかない。コマンドラインに戻れないのだ。これは深刻な問題なのでぜひ何とかしたい。
あ!、さらにもう一点ある。 Scroll を実行すると受信バッファがすぐに overflow してしまう。実害はないものの何とかしたいところだ。これは NT-Monitor の実装のせいもあるが UARTSend/UARTReceive の問題でもある。
そうそう、割り込みハンドラの部分を忘れていた。( uart.c )
volatile int32_t UARTfp; volatile int32_t UARTlp; void UART_IRQHandler(void) { : : { /* Receive Data Available */ UARTBuffer[UARTfp++] = LPC_UART->RBR; UARTfp %= BUFSIZE; if (UARTfp == UARTlp) GPIOSetValue( LED_PORT, LED_BIT, LED_ON ); /* buffer overflow */ if((UARTCount = (UARTfp - UARTlp)) < 0) UARTCount += BUFSIZE; } : :オーバーフローすると LED が点灯する。
参照: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)
+ Natural Tiny Monitor (NT-Monitor Version 0.2.0)
+ TeraTerm Version 4.69
+ 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
TRZ1104A (12) Natural Tiny Shell (NT-Shell) を使ってみる (3) ― 2012年12月09日 21時25分34秒
UARTSend/UARTReceive をもう少ししっかりしたものにしたいと思って探していると microBuilder.eu の LPC1114 Code Base を見つけた。
これは以前使ってみたことがある。簡単なコマンドシェルが実装してあったのが記憶にある。
この中の uart.c が使えるはずだ。と思ってみてみると、現在のものとたいして変わらない。
却下!
次を探していると ELM-ChaN の 32ビットへの誘い を見つけた。
この中の mary_ball.zip に uart.c がある。
すばらしい!
これぞ私が求めていたものだ。
というわけで uart.c と NT-Shell を合体させて動かしてみる。
コマンドラインは編集できる。
しかし、Enter key を入力するとそのまま Freeze してしまう。
なぜ?
参照:CuBeatSystems
32ビットへの誘い(ELM-ChaN)
CQ出版社インターフェース2013年1月号P174「FM3マイコンで試す! メモリ・ダンプ・モニタの作成」
環境:TRZ1104A (LPC1114/301)
+ code.bundle.lpc11xx.keil.zip (V1.04)
+ Natural Tiny Shell (NT-Shell Version 0.2.0)
+ Natural Tiny Monitor (NT-Monitor Version 0.2.0)
+ TeraTerm Version 4.69
+ 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
これは以前使ってみたことがある。簡単なコマンドシェルが実装してあったのが記憶にある。
この中の uart.c が使えるはずだ。と思ってみてみると、現在のものとたいして変わらない。
却下!
次を探していると ELM-ChaN の 32ビットへの誘い を見つけた。
この中の mary_ball.zip に uart.c がある。
すばらしい!
これぞ私が求めていたものだ。
というわけで uart.c と NT-Shell を合体させて動かしてみる。
コマンドラインは編集できる。
しかし、Enter key を入力するとそのまま Freeze してしまう。
なぜ?
参照:CuBeatSystems
32ビットへの誘い(ELM-ChaN)
CQ出版社インターフェース2013年1月号P174「FM3マイコンで試す! メモリ・ダンプ・モニタの作成」
環境:TRZ1104A (LPC1114/301)
+ code.bundle.lpc11xx.keil.zip (V1.04)
+ Natural Tiny Shell (NT-Shell Version 0.2.0)
+ Natural Tiny Monitor (NT-Monitor Version 0.2.0)
+ TeraTerm Version 4.69
+ 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
TRZ1104A (13) Natural Tiny Shell (NT-Shell) を使ってみる (4) ― 2012年12月15日 12時16分20秒
ELM-ChaN の uart.c と NT-Shell を合体させてうまく動かなかった原因は?
なんてことは無い単純な記述ミスだった。
dump も実装してご覧の通り。
しかし、デバッグにここまでの機能は必要ないだろう。
と言いつつライブラリにする。
これで LPC1114 版 NT-Shell は終了としておこう。
参照:CuBeatSystems
32ビットへの誘い(ELM-ChaN)
CQ出版社インターフェース2013年1月号P174「FM3マイコンで試す! メモリ・ダンプ・モニタの作成」
環境:TRZ1104A (LPC1114/301)
+ code.bundle.lpc11xx.keil.zip (V1.04)
+ Natural Tiny Shell (NT-Shell Version 0.2.0)
+ Natural Tiny Monitor (NT-Monitor Version 0.2.0)
+ TeraTerm Version 4.69
+ 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
なんてことは無い単純な記述ミスだった。
xdev_out(uart0_getc); 誤 xdev_in(uart0_putc); 誤 xdev_out(uart0_putc); 正 xdev_in(uart0_getc); 正こんな所を間違っているとは思わないのでてこずってしまった。
dump も実装してご覧の通り。
しかし、デバッグにここまでの機能は必要ないだろう。
と言いつつライブラリにする。
これで LPC1114 版 NT-Shell は終了としておこう。
参照:CuBeatSystems
32ビットへの誘い(ELM-ChaN)
CQ出版社インターフェース2013年1月号P174「FM3マイコンで試す! メモリ・ダンプ・モニタの作成」
環境:TRZ1104A (LPC1114/301)
+ code.bundle.lpc11xx.keil.zip (V1.04)
+ Natural Tiny Shell (NT-Shell Version 0.2.0)
+ Natural Tiny Monitor (NT-Monitor Version 0.2.0)
+ TeraTerm Version 4.69
+ 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
TRZ1104A (14) Natural Tiny Monitor (NT-Monitor) を使う ― 2012年12月17日 21時00分51秒
NT-Monitor の不具合対策
1.Scroll を実行するとコマンドラインに戻れない。
ntmcmd_scroll.c の vtsend_reset() を削除する。
CursorHome 程度にとどめておくのがよいだろう。
(TeraTerm 以外を使っている人は問題ないかもしれない。しかし、TeraTerm を使う限り Reset を実行すると動かなくなる。)
2.Scroll を実行すると受信バッファが overflow してしまう。
実害は無いので放置。
(受信バッファを読み飛ばせばいいのか?)
3.Shell の機能 UP
ntmconf.h の NTMCONF_USE_NTSHELL を 1 にして NT-Shell を組み込む。
(prompt を指定したい場合は ntm.c の ntm_execute() の中に追加。)
Shell も Monitor もいいが、やはり最初に実装したいのは printf かな?
数値が見えるのが一番ありがたい。
参照:CuBeatSystems
32ビットへの誘い(ELM-ChaN)
CQ出版社インターフェース2013年1月号P174「FM3マイコンで試す! メモリ・ダンプ・モニタの作成」
環境:TRZ1104A (LPC1114/301)
+ code.bundle.lpc11xx.keil.zip (V1.04)
+ Natural Tiny Shell (NT-Shell Version 0.2.0)
+ Natural Tiny Monitor (NT-Monitor Version 0.2.0)
+ TeraTerm Version 4.69
+ 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
1.Scroll を実行するとコマンドラインに戻れない。
ntmcmd_scroll.c の vtsend_reset() を削除する。
CursorHome 程度にとどめておくのがよいだろう。
(TeraTerm 以外を使っている人は問題ないかもしれない。しかし、TeraTerm を使う限り Reset を実行すると動かなくなる。)
2.Scroll を実行すると受信バッファが overflow してしまう。
実害は無いので放置。
(受信バッファを読み飛ばせばいいのか?)
3.Shell の機能 UP
ntmconf.h の NTMCONF_USE_NTSHELL を 1 にして NT-Shell を組み込む。
(prompt を指定したい場合は ntm.c の ntm_execute() の中に追加。)
ntmshell_set_prompt(ntmshell, "SYSLAB>");
Shell も Monitor もいいが、やはり最初に実装したいのは printf かな?
数値が見えるのが一番ありがたい。
参照:CuBeatSystems
32ビットへの誘い(ELM-ChaN)
CQ出版社インターフェース2013年1月号P174「FM3マイコンで試す! メモリ・ダンプ・モニタの作成」
環境:TRZ1104A (LPC1114/301)
+ code.bundle.lpc11xx.keil.zip (V1.04)
+ Natural Tiny Shell (NT-Shell Version 0.2.0)
+ Natural Tiny Monitor (NT-Monitor Version 0.2.0)
+ TeraTerm Version 4.69
+ 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
CQ-LM3S3748 (16) NT-Shell と NT-Monitor の実装 ― 2012年12月19日 20時29分17秒
NT-Shell と NT-Monitor を CQ-LM3S3748 に実装してみた。
こちらはシリアルが USB 仮想 COM PORT で FLASH ROM も大きいので余裕のはずだ。
使用するプロジェクトは以前使った物にする。
まず、メモリ情報を実装。
次に USBread/USBwrite
特に問題は無い。
バイナリでサイズは37k。まずまずか?
今回は Scroll Dump をハイパーターミナルでも試してみる。
おやおや、表示がおかしい。
画面右半分の表示が更新できない。(右上図)
本来全てのデータが FF でなければならない。
しかし、TeraTerm と違って vtsend_reset は受け付けてくれる。
一方 TeraTerm はというと画面表示に問題は無い。そして vtsend_reset も受け付ける。
さすがに USB だけあって画面の表示は高速にこなす。
それにしても VT100 をエミュレートするのって難しいのか?
どのターミナルを使ってもまともに表示できないことが多い。
参照:CuBeatSystems
CQ出版社インターフェース2013年1月号 pp174-181「FM3マイコンで試す! メモリ・ダンプ・モニタの作成」
環境:CQ-LM3S3748
+ SW-EK-LM3S3748-9453.exe (boards\ek-lm3s3748\usb_dev_cserial)
+ Natural Tiny Shell (NT-Shell Version 0.2.0)
+ Natural Tiny Monitor (NT-Monitor Version 0.2.0)
+ TeraTerm Version 4.69
+ 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
こちらはシリアルが USB 仮想 COM PORT で FLASH ROM も大きいので余裕のはずだ。
使用するプロジェクトは以前使った物にする。
まず、メモリ情報を実装。
次に USBread/USBwrite
特に問題は無い。
バイナリでサイズは37k。まずまずか?
今回は Scroll Dump をハイパーターミナルでも試してみる。
おやおや、表示がおかしい。
画面右半分の表示が更新できない。(右上図)
本来全てのデータが FF でなければならない。
しかし、TeraTerm と違って vtsend_reset は受け付けてくれる。
一方 TeraTerm はというと画面表示に問題は無い。そして vtsend_reset も受け付ける。
さすがに USB だけあって画面の表示は高速にこなす。
それにしても VT100 をエミュレートするのって難しいのか?
どのターミナルを使ってもまともに表示できないことが多い。
参照:CuBeatSystems
CQ出版社インターフェース2013年1月号 pp174-181「FM3マイコンで試す! メモリ・ダンプ・モニタの作成」
環境:CQ-LM3S3748
+ SW-EK-LM3S3748-9453.exe (boards\ek-lm3s3748\usb_dev_cserial)
+ Natural Tiny Shell (NT-Shell Version 0.2.0)
+ Natural Tiny Monitor (NT-Monitor Version 0.2.0)
+ TeraTerm Version 4.69
+ 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
FRK-FM3 (7) NT-Shell と NT-Monitor の実装 (1) ― 2012年12月25日 22時10分44秒
最後はやはり FRK-FM3 だろう。
CQ出版社のタイトルどおり「FM3マイコンで試す」事にする。
これも手っ取り早く使うためには USB 仮想 COM PORT が便利だ。 ベースとなるサンプルは mb9bfxxx_usb_device_virtual_com_port-v11.zip にする。
startup_mb9bf61x.s と linker script は以前使用したもの。
main.c に UsbClassCdc_Receive と UsbClassCdc_Send を追加する。
デバイスドライバを要求してくる。
mb9bfxxx_usb_device_virtual_com_port-v11\Windows Drivers を指定。
デバイスマネージャで見ると新しいポートが追加されている。
ターミナルを接続するとメッセージとプロンプトが表示される。
いい感じだ。
sb 0 [Enter]
動かない。
ラインエディタのようなものから抜け出してこない。
文字の出力はできているので read に相当する関数がうまく動けばよいのだが、今の所どこで引っかかっているのかわからない。
どうやらこのまま年を越しそうな予感がする。
参照:CuBeatSystems
CQ出版社インターフェース2013年1月号 pp174-181「FM3マイコンで試す! メモリ・ダンプ・モニタの作成」
環境:FRK-FM3 (MB9BF618T)
+ mb9bfxxx_usb_device_virtual_com_port-v11.zip
+ Natural Tiny Shell (NT-Shell Version 0.2.0)
+ Natural Tiny Monitor (NT-Monitor Version 0.2.0)
+ TeraTerm Version 4.69
+ FUJITSU USB DIRECT Programmer V01L07
+ 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
CQ出版社のタイトルどおり「FM3マイコンで試す」事にする。
これも手っ取り早く使うためには USB 仮想 COM PORT が便利だ。 ベースとなるサンプルは mb9bfxxx_usb_device_virtual_com_port-v11.zip にする。
startup_mb9bf61x.s と linker script は以前使用したもの。
main.c に UsbClassCdc_Receive と UsbClassCdc_Send を追加する。
int UsbClassCdc_Receive(char *buf,int len, void *extobj) { while(len){ *buf=UsbClassCdc_ReceiveByte(); buf++; len--; } } int UsbClassCdc_Send(const char *data,int size, void *extobj) { while(size){ UsbClassCdc_SendByte(*data); data++; size--; } } : : int main(void) { : : ntm_execute(&(w.ntmshell), UsbClassCdc_Receive, UsbClassCdc_Send, (void *)&w); : :コンパイル/ダウンロード/リセット
デバイスドライバを要求してくる。
mb9bfxxx_usb_device_virtual_com_port-v11\Windows Drivers を指定。
デバイスマネージャで見ると新しいポートが追加されている。
ターミナルを接続するとメッセージとプロンプトが表示される。
いい感じだ。
sb 0 [Enter]
動かない。
ラインエディタのようなものから抜け出してこない。
文字の出力はできているので read に相当する関数がうまく動けばよいのだが、今の所どこで引っかかっているのかわからない。
どうやらこのまま年を越しそうな予感がする。
参照:CuBeatSystems
CQ出版社インターフェース2013年1月号 pp174-181「FM3マイコンで試す! メモリ・ダンプ・モニタの作成」
環境:FRK-FM3 (MB9BF618T)
+ mb9bfxxx_usb_device_virtual_com_port-v11.zip
+ Natural Tiny Shell (NT-Shell Version 0.2.0)
+ Natural Tiny Monitor (NT-Monitor Version 0.2.0)
+ TeraTerm Version 4.69
+ FUJITSU USB DIRECT Programmer V01L07
+ 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
最近のコメント