FRK-FM3 (8) NT-Shell と NT-Monitor の実装 (2)2013年01月04日 23時01分47秒

FRK-FM3 Virtual COM Port
結局年を越してしまった。
mb9bfxxx_usb_device_virtual_com_port-v11.zip がうまく動かなかったのは、新たに追加した UsbClassCdc_Receive が原因だった。
UsbClassCdc_ReceiveByte の直前に UsbClassCdc_ReceivedLength() のチェックを入れると動きだした。
int UsbClassCdc_Receive(char *buf,int len, void *extobj)
{
    while(len){
        if(UsbClassCdc_ReceivedLength() > 0){
            *buf=UsbClassCdc_ReceiveByte();
            buf++;
            len--;
        }
    }
    return 0;
}

UsbClassCdc_ReceiveByte の中でも u32ReceivedData をチェックしているがそれではだめらしい。
腑に落ちないが深くは追求するまい。(※追記:u32ReceivedData を volatile 宣言すれば修正の必要はなくなった。)

さて動き出した所で動作確認だ。
db 0[Enter] でダンプしてみる。
表示が非常に遅い。
Virtual COM Port で接続しているにもかかわらず UART 2400bps 程度のスピードしか出ていない感じだ。
UsbClassCdc.c を見ると Buffer の使い方がまずい。
わざと遅くなるように書いてあるような気がしないでもない。
いずれ修正してみよう。
次に Scroll で試してみる。
sb 0[Enter]
表示は遅いが問題なくコマンドラインに抜けてくる。
ハングアップするのは今の所 TRZ1104A (LPC1114/301) だけのようだ。
しかし、USB Direct Programmer といい Virtual COM Port といい、遅いのがとり得というのはさみしい。
というか Virtual COM Port は使い物にならないレベルなので何とかしたい所だ。おそらく Buffer の使い方以外にもおかしい所がたくさんあるのだろう。


frk-fm3_usb_nt-monitor_201301.zip (動作確認しているのは ARM と G++ プロジェクト)


参照: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