LPC800 (3) MDK-ARM に LPC81x を追加する2013年06月11日 21時39分50秒

MDK-ARM_AddOn_LPC8xx
MDK-ARM の最新版は 4.71a だが、私の使っている Version は 4.53 だ。
この状態で LPC81x のプロジェクトを読み込むと以下のようなダイアログが表示される。
Error: Device not found
Please update your device selection
というわけで LPC81x を追加する。追加は簡単だ。
LPC800 Support for version 4.60 of Keil MDK-ARM これを実行すればよい。


さて、どこに追加されたのか見てみると
UV4.cdb の中ではなく 別のファイル NXP_LPC8xx.cdb が追加されて TOOLS.INI に以下の内容が記述してある。
[UV2]
CDB0=UV4\NXP_LPC8xx.cdb("NXP LPC8xx Devices")
この方法は知らなかった。これからは私専用の Device file を作成し、そこに追加するデバイスを書き加えることにしよう。


もちろん、今回も GCC 用の Startup と リンカースクリプトを用意する。
Keil\ARM\GNU\Startup\NXP\LPC8xx\startup_LPC8xxG++.s

 




Keil\ARM\GNU\Startup\NXP\LPC8xx\LPC810_rom_gnu.ld

 




参照:
    Device Database Parameters (デバイスデータベースのパラメータ)
    Customize or Add Devices (カスタムデバイスと新規デバイス)


環境:LPC800 Mini Kit (LPC810M021FN8)
    + Keil MDK-ARM V4.53
    + GCC Sourcery CodeBench Lite 2012.09-63

LPC800 (2) LPC800 Mini Kit2013年06月09日 15時33分39秒

LPC800 Mini Kit
NXP から荷物か届いた。
何か頼んだ記憶は無い。


恐る恐る開けてみると、袋の中に箱が入っており LPC800 Mini Kit と書いてある。
そういえば、[LPC800キャンペーン]簡単なクイズに答えて、LPC800 Mini ボードを当てよう!
に応募していたのだった。こういうのに当たるのは初めてだ。
うれしい!!


さて、それでは使うための準備を始めよう。
用意する物は
・USB ケーブル (電源供給用)
・RS232 基板 (シリアル通信用)
これぐらいだろうか?


参照:LPC800 Mini Kit (LPC810M021FN8)
   LPC810 CodeBase

LPC800 (1)2013年04月29日 15時51分33秒

LPC8xx Clock and PLL Configuration Tool
NXPのホームぺージを見ているとLPC800シリーズがあった。
パッケージはDIP8からTSSOP20まである。
DIP8ではFlash 4k RAM 1k でfmaxは30MHzなのでいい感じだ。

まずドキュメント&ツールを見てみる。
LPC8xx Clock and PLL Configuration Tool があった。ダウンロードしてみると拡張子名がおかしい。
xlsx となっているのだ。間違いだと思って xls に変更し Excel を起動してみるがバイナリをそのまま表示したような感じでうまくいかない。
xlsx で検索してみると Excel 2007 のフォーマットであることが分かった。
以前ダウンロードしていた「WordExcelPowerPoint 2007 ファイル形式用 Microsoft Office 互換機能パック」の出番だ。
とうとう Office2000 で直接扱えないファイルが世の中に出回ってきたのだ。


続いて NXP Switch Matrix Tool for LPC800
これもなかなかの優れものだ。設定後ファイルとして出力できる。
おもしろいね~。
NXP Switch Matrix Tool for LPC800



参照:NXP Series LPC800

GCC Developer Lite RX62N2013年01月08日 21時28分52秒

The setup files are corrupted. Please obtain a new copy of the program.
久しぶりに Besttechnology を訪れてみた。
GCC Developer Lite が Version 2.5.0.0 になっている。
更新内容を見ると RX が追加されて FW.exe が RX62Nシリーズ対応となった。
手に入れて試してみよう。ただ「フラッシュ全域に転送している」という事と SCI を使っているので書き込みに時間が掛かりそうだ。

そしてもうひとつ気になる書き込みがあった。
N7とN8の違いというタイトルで R5F562N7 は ROM が 512k 、RAM が 96k あるというのだ。

さっそく試してみる。
確かに問題なく動く。少し得をした気分だ。

さて、FW.exe も試してみたいので GDLFull2.5.0.0.exe をダウンロードしようとするがなかなかダウンロードできない。途中で切れてしまう。
何度も繰り返しやっとのことでダウンロードが完了した。
実行すると
The setup files are corrupted. Please obtain a new copy of the program.
え!
次のバージョンまで待たなければならないのか?


参照:BestTechnology

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

FRK-FM3 (7) NT-Shell と NT-Monitor の実装 (1)2012年12月25日 22時10分44秒

FRK-FM3 virtual com port
最後はやはり 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 を追加する。
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

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

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() の中に追加。)
    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

TRZ1104A (13) Natural Tiny Shell (NT-Shell) を使ってみる (4)2012年12月15日 12時16分20秒

NT-Shell に dump を追加
ELM-ChaN の uart.c と NT-Shell を合体させてうまく動かなかった原因は?
なんてことは無い単純な記述ミスだった。
  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 (12) Natural Tiny Shell (NT-Shell) を使ってみる (3)2012年12月09日 21時25分34秒

NT-Shell が Freeze
UARTSend/UARTReceive をもう少ししっかりしたものにしたいと思って探していると microBuilder.eu の LPC1114 Code Base を見つけた。
これは以前使ってみたことがある。簡単なコマンドシェルが実装してあったのが記憶にある。
この中の uart.c が使えるはずだ。と思ってみてみると、現在のものとたいして変わらない。
却下!

次を探していると ELM-ChaN32ビットへの誘い を見つけた。
この中の 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