FRK-RX62N (5) KPIT GNURX + RX600 Simulator2011年04月01日 20時38分41秒

さて、次は RX600 Simulator だ。特に問題は無いと思うが順を追って見ていこう。
同じく前回作成したプロジェクトに修正を加える形で進める。


①まず、 Configuration を SimDebug_RX600 にする。SimSessionRX600 デバッグの設定を見ておこう。この設定はプロジェクト作成時 RX600 Simulator にチェックを入れることで自動的に作成される。特に修正の必要は無い。
SimSessionRX600 デバッグの設定

②セッションを SimSessionRX600 にする。シミュレータの設定ダイアログが出てくるので必要であれば設定する。
シミュレータの設定 CPUの構成
シミュレータの設定 周辺機能シミュレーション

③リセット後実行をクリック。問題なく動いているようだ。
Run RX600 Simulator



LED 点滅プロジェクト+ RX600 Serial Monitor + RX600 Simulator


環境: HEW Version 4.09.00.007 + KPIT GNURX v11.01 Windows Tool Chain (ELF) + RX600 Simulator
参照: KPIT GNU Tools v11.01 - Released
   CQ出版社 Interface 5月号

FRK-RX62N (6) rxc vs gnurx (1)2011年04月03日 19時09分01秒

確率で円周率を求めるモンテカルロ法を用いて FRK-SH2A と同じように FRK-RX62N で評価してみる。
プログラムは以前と同じ。

CPU は RX62N (FRK-RX62N) 96MHz 比較のため SH7262 (FRK-SH2A) 144MHzもとりあげる。


コンパイラ: C/C++ Compiler Package for RX Family V.1.00 Release 02
コンパイラ: GNURX v11.01 Windows Tool Chain (ELF)
ループ回数: 10000000 回


			 単精度		倍精度
Renesas	shc V.9.03r02	 19.65 秒	 31.87 秒	FRK-SH2A
KPIT	GNUSH v10.01	178.82 秒	189.27 秒	FRK-SH2A
Renesas	rxc V.1.00r02	  4.02 秒	159.96 秒	FRK-RX62N
KPIT	GNURX v11.01	 11.72 秒	249.45 秒	FRK-RX62N


うんうん、興味深い結果だ。
単精度で使うなら RX62N はすばらしい。ま、CPUの能力に見合った使い方をすれば良いということか?



コンパイラ:
 Renesas
  SuperH RISC engine C/C++ Compiler (V.9.03.02)
  C/C++ Compiler Package for RX Family V.1.00 Release 02
 KPIT
  GNUSH v10.01 Windows Tool Chain (ELF)
  GNURX v11.01 Windows Tool Chain (ELF)

FRK-RX62N (7) rxc vs gnurx (2)2011年04月09日 09時46分38秒

確率で円周率を求めるモンテカルロ法を使って KPIT GNURX の Optimize と Library の違いによってオブジェクトのサイズや実行スピードがどのようになるか調べてみよう。
Optimize 設定はメニューの Build から KPIT GNURX [ELF] Tooolchain を選択し C/C++ タブの Optimization Type で決定する。
Optimization Type

Library 設定はメニューの Build から KPIT GNURX [ELF] Tooolchain を選択し Library Generator タブの Select library で決定する。
Select library



結果をまとめたのが以下に示す表だ。
OptimizeLevel	なし	size	speed	both	単位
実行時間		11.72	6.85	6.60	7.03	秒	(Newlib ライブラリ)
ObjectSize	11004	9644	21010	20850	bytes	(Newlib ライブラリ)
実行時間		9.10	4.06	3.81	4.11	秒	(Optimized ライブラリ)
ObjectSize	7932	6574	17926	17778	bytes	(Optimized ライブラリ)
Optimize は size を選択するのがバランスが取れているようだ。 Library は、さすがに名前のとおり Optimized Library がスピード、サイズ共にいい感じだ。これからは Optimized Library を使って Optimize に size を指定するのをデフォルトにしよう。


一方、Renesas 純正コンパイラはどうだろう?
設定は細かくできて speed と size でそれぞれ0~max まで指定できる。さらに、ライブラリの設定もあるのでこの辺でやめにしておく。
OptimizeLevel	0	1	2	max	
実行時間		11.72	9.97	4.02	3.95	秒	(size 優先)
ObjectSize	5738	5412	5014	5014	bytes	(size 優先)
実行時間		11.74	9.99	4.12	4.00	秒	(speed 優先)
ObjectSize	5738	5412	5032	5032	bytes	(speed 優先)
デフォルトで level2 なのでほぼ最強だろう。max にしてもスピード、サイズ共に変わらない。


こうしてみてみると Kpit GNURX はよくできている。しかし、問題点もある。新しいデバイスの追加が Renesas 純正より遅くなってしまうことだ。当然、自分で追加してみようと思った。やってみてわかったことは Renesas 純正のヘッダーファイルが使えないことだ。それは、ビットフィールドの並びが異なるためで、KPIT のヘッダーは手作業で(おそらく)書き換えてある。新しいデバイスごとに自分でこの作業をする気にはなれないので Kpit のリリースを待つか RX をあきらめるしかないと思っている。


環境: KPIT GNURX v11.01 Windows Tool Chain (ELF)
    Renesas C/C++ Compiler Package for RX Family V.1.00 Release 02

FRK-SH2A (10) SHC vs gcc (3)2011年04月11日 21時39分36秒

FRK-RX62N を調べていて OptimizeLevel を size にして Optimized ライブラリを使うことによりよい結果が出たので FRK-SH2A でも試してみる。プログラムは以前と同じ。(ループ回数は変えた)


CPU は:SH7262 (FRK-SH2A)
コンパイラ: SuperH RISC engine C/C++ Compiler (V.9.03.02)
コンパイラ: KPIT GNUSH v1001
ループ回数: 1000000 回
Kpit GNUSH
OptimizeLevel	なし	size	speed	both	単位
実行時間		19.13	17.72	17.56	17.64	秒	(Newlib ライブラリ)
ObjectSize	55212	55068	58356	58044	bytes	(Newlib ライブラリ)
実行時間		4.49	3.05	2.85	2.89	秒	(Optimized ライブラリ)
ObjectSize	34908	34764	38052	37740	bytes	(Optimized ライブラリ)
Renesas SHC
OptimizeLevel	なし	size	speed	both	単位
実行時間		4.49	3.55	5.53	3.42	秒
ObjectSize	9074	8650	8746	8650	bytes

スピードについては予想以上に早くなったがサイズがとてつもなくでかい。未使用のライブラリがリンクされたような感じだ。そのうち詳しく調べてみよう。


環境: KPIT GNUSH v10.01 Windows Tool Chain (ELF)
    Renesas SuperH RISC engine C/C++ Compiler (V.9.03.02)

FRK-SH2A (11) KPIT GNUSH + SH2A Serial Monitor2011年04月12日 22時11分13秒

Memory map SH2A Serial Monitor
久しぶりに FRK-SH2A に触っているのでCQ出版の特設ページを覗いてみた。プログラムのアップデートやら訂正やらでわけがわからない状態になっている。


さて、 FRK-SH2A を動かす場合 Serial Monitor をよく使うのでその時のためのメモを残しておこう。
.vects	0x1C000000
.text	0x1C0004E0
.data	0x1C0F0000 又は 0xFFF80000
.stack	0x1C100000 又は 0xFFF89000
その他の制限
1.割り込み優先レベルは0から14までが利用可能。
2.ベクタ領域は 0x1C000000 番地固定。
3.システム予約のベクタ番号 4、6、9、11、170 使用不可。


設定: JPP1 オープン。USB コネクタのみ接続
環境: (FRK-SH2A SH7262) + (HEW Version 4.09.00.007) + (KPIT GNUSH v10.01 Windows Tool Chain (ELF)) + (SH2A Serial Monitor)

TRZ1002H (10) デバックモニタ (3)2011年04月13日 22時06分01秒

Memory Map Serial Monitor
前回試してみて、リセット後実行で動かなかった原因は .vects の設定がいけなかった。表に示すように 0X00000000 でなくてはならないのだった。.vects のセクションを 0X00000000 に指定しても実際はRAMに配置されるらしい。これもメモしておこう。
.vects	0X0000 0000
.text	0X00FF 2000
.data	0X00FF B000
.stack	0X00FF C000
その他の制限
1.割り込み優先レベルは0から14までが利用可能。
2.ベクタ領域は0x000000番地固定。
3.システム予約のベクタ番号 4、6、9、11、132、133 使用不可。


設定: J1 オープン。USB コネクタのみ接続
環境: (TRZ1002H H8SX1655) + (HEW Version 4.09.00.007) + (KPIT GNUH8 v1001 Windows Tool Chain (ELF)) + (H8SX Serial Monitor)

料理 (1) グラタン2011年04月14日 20時35分04秒

グラタン
お店で食べるように美味しくはないが(何か一味足りないような感じだ)ほどほどの出来だったのでメモしておく。 材料は細かな数字が並んでいるが結構適当だ。鶏ももの替わりにソーセージ2本を入れることもある。牛乳さえあればできるような気がする。
材料 (3人分)
○玉ねぎ		60g(約半分)
○鶏もも		60g
○しめじ		20g
○にんじん	40g
○じゃがいも	50g(小1個)
○バター		大さじ1
○サラダ油	大さじ1
○塩		小さじ1
○こしょう	適量
 小麦粉		大さじ3

●牛乳		350ml 
●マカロニ	40g 
 ピザ用チーズ	大さじ3 
マカロニ
鶏もも
野菜(玉ねぎ、にんじん、きのこ)
野菜(じゃがいも)
あらあら、写真が全部縦に並んでしまった。少し不恰好だ。


それでは始めよう。
1.玉ねぎ、にんじんを薄切りにする。
2.じゃがいもを5mm位に切る。
3.鶏もも、しめじを10mmサイズに切る。
4.サラダ油とバターを入れて○の材料を炒める。最初に鶏もも、後は適当に。(玉ねぎが透き通るぐらいまで)
5.いったん火を止めて小麦粉を混ぜる。
6.●の材料を入れて煮込む。沸騰してから中火で3分間混ぜる。マカロニは別茹でせずにそのまま使う。
7.トロリとしてきたら火を止めてグラタン皿に入れ、チーズを振り掛ける。
8.250度のオーブンで10分間焼けばできあがり。

TRZ1104A (1) Keil µVision4 + GCC で動かしてみる2011年04月16日 15時24分39秒

TRZ1104A MARY-MB MARM1114-MB LPC1114/301
高いので買うつもりはなかったのに...


手を出してしまった。基板名はなんと言うのだろう。
TRZ1104A 、MARY-MB 、MARM1114-MB


さて、まずは Flash Magic をダウンロードする。今まで使っていたのが Version 4.50 インストールしたのは2年前になる。現在のバージョンは 5.86 ずいぶん進んだものだ。


次にサンプルの workspace を手に入れる。まずはCQ出版社の物を使ってみよう。PROG01_COLOR_LED でいいだろう。
Flash Magic で HEX ファイルを書き込んでみる。ずいぶん時間がかかる。2分たっても3分たっても終わらない。キャンセルして最初からやってみたが変わらない。どうしていつもつまづくのだろう、と思いつつ雑誌を見ているといつの間にか書き込みが終わっている。実に5分!
廉価なチップなので時間がかかるのだろうか?これでは開発効率が悪い。
lpc21isp ならばどうだ!
Synchronizing ......... でタイムアウトになる。


ここで cp210x のドライバを更新してみることにする。今入っているのはたしか CQ_V850 の時だから4年前のものだ。
仕切りなおして、もう一度


あっという間に書き込みが終わる。


やっとスタートラインにたどり着いたような感じだ。
気を取り直してディレクトリ PROG01_COLOR_LED の中に µVision4 で New µVision Project を作成する。LPCXpresso はgcc のはずだから uVision4 + GCC の環境に持ち込むのは容易なはずだ。


1.プロジェクトのグループにファイルを付け加えていく。
2.アウトプットファイルの設定をする。
Output

3.リストファイルの設定をする。
Listing

4.Cコンパイラの設定をする。
Define に __USE_CMSIS
IncludePaths に .\src;..\CMSISv1p30_LPC11xx\inc
MiscControls に -ffunction-sections -fdata-sections
CC

5.リンカーの設定をする。
linkerScriptFile に .\Debug\lpc1114_Debug.ld
IncludeLibraries に CMSISv1p30_LPC11xx
IncludePaths に .\Debug -L..\CMSISv1p30_LPC11xx\Debug
MiscControls に -Xlinker --gc-sections
Linker

6.ユーティリティーの設定をする。
ここに Flash Magic を登録しておくと便利だ。パラメータが多いけどね。
Flash Magic だと以下のように
HARDWARE(BOOTEXEC,50,100) DEVICE($D,$X) ERASEUSED(!H,PROTECTISP) HEXFILE(!H,NOCHECKSUMS,NOFILL,PROTECTISP) COM(3,115200)
lpc21isp だと以下のように
-wipe -control -hex !H com3 115200 12000
Utilities

7.コンパイルする。
エラーもないようだ。ファイルサイズはオリジナルに比べて若干大きくなってしまった。
uVision4

8.書き込み
あっという間に書き込みが終わって LED がちかちかしている。
成功だろう。たぶん...


そうそう、コンパイルオプションは -mcpu=cortex-m1 のままだがこれも問題にはならないようだ。


環境: TRZ1104A(LPC1114) + Keil µVision4 + GCC

TRZ1104A (2) Keil µVision4 + GCC で動かしてみる (ライブラリ作成)2011年04月17日 17時24分26秒

今回はライブラリ作成をやってみよう。
もちろん、前回同様CQ出版社の workspace を使う。
プロジェクト名も同じく CMSISv1p30_LPC11xx とする。そうすると libCMSISv1p30_LPC11xx.a という名前のライブラリが出来上がるはずだ。


1.新規プロジェクト作成だ。
CMSISv1p30_LPC11xx というディレクトリにプロジェクト名 CMSISv1p30_LPC11xx で作成する。


2.CPUを選択する。
CPU

3.プロジェクトにソースを登録する。
Source

4.Output の設定をする。
ライブラリなので CreateLibrary を選択する。

5.リストファイルの設定をする。
Listing

6.Cコンパイラの設定をする。
Define に DEBUG
IncludePaths に .\inc
MiscControls に -fmessage-length=0 -fno-builtin -ffunction-sections
CC

7.ビルド


8.できあがったライブラリを前回作成した PROG01_COLOR_LED からリンクして動かしてみる。
問題なく動いているようだ。


しかし、毎回このような設定をするのは大変だ。その点 CooCox CoIDE とか Raisonance Ride7 、 Renesas HEW は今さらながら使いやすいと感じてしまう。


環境: TRZ1104A(LPC1114) + Keil µVision4 + GCC

Dev-C++ IDE2011年04月18日 21時37分01秒

PC のコンソールアプリは今まで (Borland C++Compiler 5.5) + (BCC Developer) でやってきた。特に不自由は感じてなかったが最近の新しいソースを取り込んでコンパイルしようとすると修正する項目が多くなってしまう。今回 lpc21isp ver1.80 をコンパイルするにあたり MinGW の環境を作ることにする。そして見つけたのが Dev-C++ だ。
Dev-C++ は BCC Developer に似た感じで使いやすそうだった。設定は「 DevC ++の使い方」に詳しく出ていたので助かった。基本的に Compiler Options だけで良さそうだ。確認しながら進めていこう。その前に MinGW はすでにインストール済みの v4.4.1 を使うことにする。


①Compiler Options Directories Binaries
C:\MinGW-4.4.1\bin
Compiler Options Directories Binaries



②Compiler Options Directories Libraries
C:\MinGW-4.4.1\lib
Compiler Options Directories Libraries



③Compiler Options Directories C Includes
C:\MinGW-4.4.1\include
Compiler Options Directories C Includes



④Compiler Options Directories C++ Includes
C:\MinGW-4.4.1\include
C:\MinGW-4.4.1\lib\gcc\mingw32\4.4.1\include
C:\MinGW-4.4.1\lib\gcc\mingw32\4.4.1\include\c++
C:\MinGW-4.4.1\lib\gcc\mingw32\4.4.1\include\c++\backward
C:\MinGW-4.4.1\lib\gcc\mingw32\4.4.1\include\c++\mingw32
Compiler Options Directories C++ Includes



⑤Compiler Options Programs
ここは make.exe だけ mingw32-make.exe に変更する
Compiler Options Programs



⑥Compile
Dev-C++ Compile lpc21isp



⑦実際に書き込んでみる。
特に問題は無いようだ。そうそう、 lpc21isp.c の debug_level だけ 0 にしておいたほうがよい。


環境: (Dev-C++ Version 4.9.9.2) + (MinGW 4.4.1)