FRK-RX62N (18) printf (6) bin size2011年07月02日 16時09分56秒

printf のテストプログラムをいろいろ作成したので比較してみることにした。ソースはほぼ全てが同じものだ。ベースは Renesas の RX600 Series Adding Printf and Scanf Support になる。


テストするコンパイラと最適化レベル
KPIT GNURX v1102:		Optimize for size
Renesas RXC V.1.0.2.0:	最適化レベル2、サイズ優先
サイズは S-record ファイルを バイナリに変換して比較する。
KPIT はライブラリが二種類あり、さらに Newlib では iprintf (integer only) が使えるのでそれも対象とする。
printf	43,332	(KPIT GNURX Newlib)
printf	21,294	(Renesas RXC 標準ライブラリ)
iprintf	20,572	(KPIT GNURX Newlib)
printf	 6,262	(KPIT GNURX Optimized)
サイズが一番大きいのは KPIT。
そして一番小さいのも KPIT。
しかし、 Optimized ライブラリを使った時の KPIT は異常なほどコンパクトになっている。
スピードについても前回のテストで Renesas とほぼ同じ結果が得られた。これはもう KPIT Optimized ライブラリで決まりだろう。
RX って gcc と相性がいいのだろうか。


参照:Renesas Application Notes RX600 Series Adding Printf and Scanf Support (R01AN0509EU0100)
環境:High-performance Embedded Workshop Upgrade 4.09.00
    KPIT GNURX v11.02 Windows Tool Chain (ELF)
    Renesas C/C++ compiler package for RX family V.1.00 Release 02

FRK-SH2A (12) SHC vs gcc (4)2011年07月03日 11時36分06秒

以前、未使用のライブラリがリンクされたような感じだ。
と書いたが以下の方法でサイズが少々小さくなる。


メニューの Build から [KPIT GNUSH [ELF] Toolchan] を選択する。
①C/C++ Tab の Category: を Other にして Miscellaneous options: の次の項目にチェックを入れる。
 R Place each function into its own section in the output file
 R Place each data item into its own section in the output file
②Link/Library Tab の Category: を Other にして Miscellaneous options: の次の項目にチェックを入れる。
 R Enable garbage collection of input sections


OptimizeLevel	なし	size	speed	both	単位
Newlib		35,044	34,460	37,652	37,364	bytes
Optimized	14,724	14,140	17,364	17,076	bytes
少しは Renesas に近づいたが gcc と sh は相性が悪いような気がする。


それはさておいて、今回気が付いたのは GNURX の場合 -ffunction-sections -fdata-sections がデフォルトで入っていることだ。
Miscellaneous options でチェックを入れると、同じオプションが二つ入ることになる。
つまり、 -ffunction-sections -fdata-sections を外すことができないのだ。
これはこれで気になる。


その後確認してみると、全てがこのようになるわけではない。GNURX v1101 から GNURX v1102 に変換したものの中の一部に見られる。原因と対策は今のところ不明。


環境:High-performance Embedded Workshop Upgrade 4.09.00
    KPIT GNUSH v10.01 Windows Tool Chain (ELF)
    KPIT GNURX v11.02 Windows Tool Chain (ELF)

料理 (4) お好み焼き2011年07月03日 16時44分18秒

お好み焼き
ホットケーキもできたので、お好み焼きも自宅でできるんじゃないかと思い作ってみた。
「お好み」
このいい加減さを象徴するような響きがとても心地よい。
材料 (1人分/1枚)

 小麦粉		30g(50cc)
 キャベツ	2枚 (150g)
 にんじん	30g
 もやし		50g
 ねぎ		1~2本
 卵		1個
 水		40cc
 豚薄切り肉	30g
 お好みソース	お好みの量
 マヨネーズ	お好みの量
 花かつお	お好みの量
 青のり		お好みの量


1.キャベツをみじん切りにする。
2.にんじんを細切りにする。
3.ねぎをみじん切りにする。
4.卵と水をボールに入れてよく混ぜる。
5.4の中に小麦粉を入れて軽く混ぜる。
6.豚薄切り肉をフライパンでいためる。この時、塩・こしょうで軽く味付けする。
7.5の中にキャベツ・にんじん・もやし・いためた豚肉を入れて軽く混ぜる。
8.中火のフライパンに油を引いて、煙が上がるぐらいになったら7の材料を入れる。
9.ふたをして5分位焼く、ひっくり返してふたをして4分ぐらい焼く。
10.焼きあがったらお好みソース・マヨネーズ・ねぎ・青のり・花かつおをかけてできあがり。


ひっくり返す時に失敗してしまったお好み焼き



豚肉の変わりに牛肉、ソーセージ、ベーコン好きなものなんでも大丈夫。
さらに具を追加するのもよい。ジャガイモ(茹でてね)、コーン、もち、チーズ...
なんてったってお好み焼きだから。
もちろん焼き加減もお好みで...

料理 (5) ピザ風トースト2011年07月09日 08時24分09秒

ピザ風トースト
これは朝食又は昼食に時々作る。
手軽にできるが子供には評判が良い。
写真のものはケチャップが少なかったかな?野菜も...
しかも、おいしそうに見えない。
材料 (1人分/1枚)

 食パン		1枚
 玉ねぎ		15g
 ソーセージ	1本
 バター		小1
 チーズ		大1
 ケチャップ	大1
 マヨネーズ	お好みの量


1.玉ねぎを薄切りにする。(できるだけ薄いほうが良い)
2.ソーセージを3mmぐらいに輪切りにする。
3.食パンにバターを塗る。(軽くトーストしたほうが塗りやすい)
4.ケチャップを全体に塗る。
5.薄く切った玉ねぎを敷きつめる。
6.ソーセージを載せる。
7.マヨネーズをお好みの量かける。
8.チーズを全体にかける。
9.オーブントースターで4~5分トーストすればでき上がり。


上に載せるものは何でも良い。
このあたりはお好み焼きと同じだ。
自分にぴったりの食べ方を見つけよう。

料理 (6) 茶碗蒸し2011年07月09日 12時20分14秒

茶碗蒸し
あまり手間がかからないところがよい。
今の季節に食べると汗が噴出すので、秋、冬、春に合う料理か?
材料 (3人分)

 卵		2個
●ぎんなん	6個
●鶏肉		30g
●にんじん	10g
●しいたけ	10g
●水		300cc
●薄口醤油	小1
●みりん		小1
●塩		小1/2
●だしの素	小1/2


1.乾燥しいたけは水で戻してから、生しいたけならそのまま薄切りにする。
2.銀杏は封筒に入れて電子レンジで1分間チンしてから殻をむく。
3.鶏肉は1cm角ぐらいに切る。
4.にんじんは細切りにする。
5.●の材料を鍋に入れ煮立ててから冷ます。
6.鍋の中から具だけを器に入れる。(うまく等分してね!)
7.6の鍋の中によく溶いた卵を入れて混ぜる。
8.器に鍋の中身を注ぎ分ける。
9.電子レンジに入れて弱で12分チンすれば出来上がり。


実際に作ってみると5で熱を加え、その後冷まして9で再度熱を加える。 エネルギーの無駄遣いのような気がする。今度、煮立った鍋の中に卵を入れてみよう。
やっぱりだめなのかな~

FRK-RX62N (19) printf (7) KPIT GNURX Simulator2011年07月10日 19時40分09秒

Simulator から printf
KPIT GNURX でも printf で Simulator Window に表示できるのではないかと思い試してみる。


使用するプロジェクトは先日作成した 、FRK-RX62N (14) printf (3) KPIT GNURX SCI にする。
serial_printf.c をビルドから除外して lowlvl_Sim.src と read_write.c を追加する。
lowlvl_Sim.src は RX600 Series Adding Printf and Scanf Support の中のサンプルをそのままコピーする。
そして read_write.c は以下のとおりだ。

 

そのほかは前回と同じ、でもこれだけじゃ動かない。もう一つやらなければならないことがある。
I/Oシミュレーションアドレス有効にチェック
そう、I/Oシミュレーションアドレス有効にチェックを入れること。


RX62N KPIT GNURX printf Sample


参照:Renesas Application Notes RX600 Series Adding Printf and Scanf Support (R01AN0509EU0100)
環境:High-performance Embedded Workshop Upgrade 4.09.00
    KPIT GNURX v11.02 Windows Tool Chain (ELF)

料理 (7) 鳥腿肉又は鳥胸肉のスパイシー焼き2011年07月12日 20時43分36秒

こげたスパイシー焼き
材料さえそろえばこれも簡単。
ただし、じっくり焼くので時間がかかるのが難点。
材料

 鶏肉		200g
 にんにく	2欠片
 塩		小1
 一味唐辛子	適量
 胡椒		適量


1.にんにくを薄くスライスする。
2.鶏肉に塩、胡椒、一味唐辛子をふりかける。(表裏共に)
3.スライスしたにんにくを皮のついてないほうに乗せる。
4.この状態で一日置いてからグリルでじっくり焼く。(皮のついてないほうを先に、約20分)
5.全体が狐色に焼けてきたらひっくり返す。皮のついているほうは焦げやすいのでよく見ながら焼く。(約10分)


スパイスをふりかける



我が家では一味唐辛子も胡椒もたっぷり振りかける。
ポイントは火加減を弱く。
強くすると表面だけこげて中のほうが生焼けになる。


基本的に、鳥に香辛材をふりかけて後は焼くだけ。
こんな感じをイメージしながら作っているのだけど...
焦げすぎてしまう。今回も皮の一部が炭になってしまった。

料理 (8) 野菜たっぷりパスタ2011年07月18日 13時10分31秒

野菜たっぷりパスタ
休日の昼食に時々作る。
子供はこれも気に入っているようだ。
おいしいのかと聞かれると答えに詰まる。
しかし、喜んで食べているのでよしとしよう。
材料 (2人分)

 パスタ		200g
 牛豚合い挽肉	80g
■玉ねぎ		100g
■にんにく	1欠片
■ピーマン	30g
■人参		30g
■なすび		40g
 サラダ油	大1/2
 ケチャップ	50g
●塩		適量
●一味唐辛子	適量
●胡椒		適量


1.パスタを指定時間茹でる。
2.■をみじん切りにする。
3.サラダ油を入れて挽肉を炒める。適当なところで塩、胡椒、一味唐辛子を適量ふりかける。
4.火が通ってきたら■の野菜を入れて炒める。
5.最後にケチャップとパスタの茹で汁を入れて煮立てる。
6.茹で上がったパスタに乗せれば出来上がり。


野菜のみじん切り



トマトも加えたいところだがあいにく今日は手元に無い。
その時ある野菜で作る、という事にしている。


それにしても、いつまで「ただちに健康に影響が出るものではない 」レベルの食物を取り続けなければならないのだろう。
全てを検査しているわけでは無いだろうから市場に出回っているものを食べ続けるとかなり危険な気がする。当然、偽装も出てくるだろうし...


という訳でガイガーカウンタが欲しくなった。
でも、食物の放射線は測定が難しいのかな?

FRK-RX62N (20) scanf KPIT GNURX2011年07月20日 20時43分29秒

Optimized ライブラリで scanf
scanf といえば指定したフォーマット以外を入力した時、それ以降の scanf が使えなくなる。
本番ではあまり使わないが Debug では時々使うこともある。
という訳で scanf の動きを調べてみることにする。
まずは、 Simulator で試してみよう。
FRK-RX62N (19) printf (7) KPIT GNURX Simulator をベースに printf と scanf の無限ループに変更して試す。
最初は Optimized ライブラリだ。
予想に反して問題なく動いている。(右図)
Optimized ライブラリすばらしい!!


それでは次に Newlib ライブラリでやってみる。
数字の変わりにアルファベットの a を入れるとご覧の通り。
printf だけが連続して実行されてしまう。
Newlib ライブラリで scanf は暴走



それでは scanf の前に fflush 又は rewind を入れてみる。
fflush 又は rewind でバッファクリア
上図のように予定通りバッファがクリアされて問題なく動いている。
しかし、Optimized ライブラリとは表示が若干異なる。


というわけで
・Optimized ライブラリでは何もしなくてよい。
・Newlib ライブラリでは従来どおり fflush 又は rewind を使わなければならない。
ということがわかった。
念のためシリアルポートを使った場合も試してみたが結果は同じだった。


参照:Renesas Application Notes RX600 Series Adding Printf and Scanf Support (R01AN0509EU0100)
環境:High-performance Embedded Workshop Upgrade 4.09.00
    KPIT GNURX v11.02 Windows Tool Chain (ELF)

料理 (9) ゴーヤチャンプルー2011年07月31日 18時50分04秒

ゴーヤチャンプルー
夏の暑い盛りによく食べる。
しかし、最近手に入るゴーヤは苦くない。
そこが一番不満なところだ。
材料 (3人分)

 ゴーヤ		1
 木綿豆腐	1丁
 豚肉		80g
 卵		1個
 なすび		40g
 にんじん	50g
 ピーマン	20g
 サラダ油	大1/2
 塩		適量
 胡椒		適量
 しょうゆ	大2


1.ゴーヤを縦半分に切り中の種を取る。その後、薄くスライスする。
2.なすびを縦半分に切り3mm位にスライスする。
3.ピーマンの種を取って細切りにする。
4.にんじんを細切りにする。
5.熱したフライパンに油を注ぎ卵をいため、一旦取り出す。
6.続いて豚肉をいためる。塩、コショウで下味をつける。
7.豚肉に火が通ってきたところでゴーヤを入れて炒める。
8.ゴーヤがしんなりしてきたら、なすび、ピーマン、にんじんを入れて炒める。
9.豆腐を一口大に手でちぎりながら入れる。
10.豆腐に熱が回ってきたら卵をフライパンに戻し、しょうゆをかけて味を調える。


これもまだ満足できるレベルにはなっていない。
ゴーヤが生っぽくてゴリゴリしている。電子レンジでチンしてから炒めたほうがよいのかもしれない。
でも、これを食べると暑い夏を乗り切れるような気がする。


追記 2011/8/16
ゴーヤはしばらく置いておくと黄色くなって最後は腐ってしまう。
そこで、すぐに使わない分は縦半分に切り中の種を取って薄くスライスしたものを冷凍しておいた。
それを解凍してみると、水分が抜けたのかしんなりしていい感じになっている。ゴーヤチャンプルーにするとゴリゴリした感じがなくて食べやすい。
これは新しい発見だ。