SH/H8 用フラッシュライタ (24) H8ライター Ver 0.39b12016年06月18日 12時45分13秒

H8W Ver 0.39b1
H8ライターのバージョンが上がっていた。
「書き込み制御ファイルに RX62G_F96M_P384.INF) を追加」
ということなので試してみたくなった。
時間のある時にテストしてみよう。


参照: H8ライター + H8工作 + PIC工作

e²studio2013年08月18日 15時54分09秒

RenesasRulz を見ていて Renesas の e²studio を知った。
Eclipse ベースの IDE だ。KPIT Eclipse もあるから Eclipse が二つ存在することになる。
さて、Renesas には IDE がたくさんあるが、残念ながら全てのコンパイラをサポートしているものは無い。
CubeSuite+ V2.01.01
    Renesas	V850, RX, RL78, 78K0R, 78K0

PM+ V6.32
    Renesas	V850, 78K0R, 78K0, 78K0S

HEW V.4.09.01
    Renesas	SuperH, RX, R8C, M32R, M16C, H8SX, H8S, H8, 740 Families
    KPIT	GNUSH, GNURX, GNUH8, GNUM16CM32C

KPIT Eclipse v3.04.01
    Renesas	SuperH, RX, 
    KPIT	GNUSH, GNURX, GNUH8, GNUV850

中でも HEW は多くをサポートしているが今後はアップデートの予定が無いらしい。
結果、複数の IDE を導入しなければならなくなる。
少しでも IDE の数を減らすために e2studio もいいかな?と思ったが、これも以下の通り半端な感じだ。
e²studio 2.1.0.5
    Renesas		SuperH, RX, 
    KPIT		GNUSH, GNURX, GNUV850, GNURL78, GMUARM-RZ
    IAR			RX, RL78, V850
    Green Hills	V850
使うかどうか分からないが、メモだけしておこう。


参照:
 e²studio
 e² studio forum (English 表示)

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

KPIT GNU Tools (22) GNU Windows Tool Chain2012年08月11日 08時11分26秒

統廃合が進む Renesas の CPU。
主な現行品種は
RX V850 SH RL78 といったところだろうか。
ここでさらに統合が進み V850 と SH が RH850 になるような気がする。
さて、そこで気になるのが KPIT GNU Tools 。最近更新が遅れがちなのに、CPU の種類が増えればなおさらだ。

ところで、デバイスを追加しようと新しい CPU の資料を調べていて「かふぇルネ」を知った。
この際メモしておこう。

かふぇルネ
Renesas Rulz

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)

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)

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)

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-RX62N (17) printf (5) KPIT GNURX v1102 Windows Tool Chain (ELF)2011年06月29日 22時41分23秒

あれこれしているうちに KPIT の次のバージョン GNURX v1102 Windows Tool Chain (ELF) がリリースされた。
先日の問題、 ROM 領域のデータが RAM 領域に配置される件。
さっそく新しいバージョンで試してみようと
GNURX v1101 Windows Tool Chain (ELF) をアンインストールし
GNURX v1102 Windows Tool Chain (ELF) をインストールした。


GNURX v1101 で作成したプロジェクトを読み込みビルドするがエラーになる。

 

あれ!... あれ!
今までどのバージョンも下位に対して互換性があったような気がするが、今回はうまくいってないようだ。


さて、困った。
早く試してみたいので Newlib printf プロジェクトを最初から作り直すことにする。
そして、ビルド。
エラーは出てこない。
S-format ファイルを見てみると ROM にあるべきデータは ROM に配置されている。
修正されているようだ。
FDT で書き込む。
動作は問題ない。


これでよしよし、と言いたいところだが GNURX v1101 Windows Tool Chain (ELF) で何本もプロジェクトを作ってしまったのでこのまま引き下がるわけにはいかない。なんとしても GNURX v1101 を GNURX v1102 にコンバートしたいのだ。プロジェクトファイルを見比べているとパスが途中で途切れている部分がある。ここだと見当をつけて修正してみると...
はい、うまくコンバートできてます。
ファイルは $(PROJECTNAME).hwp 。
その中で
"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\^"
"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\\optlibinc^"
となっている部分を
"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v11.02^"
"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v11.02\optlibinc^"
このように修正する。


これで printf も一件落着だが手間がかかる。


気になることがもう一つ
今回のバージョン iodefine.h がルネサスと同じものが使ってある。もっとも rx62n だけなので不思議だ。
#pragma bit_order left
はクリアできたのだろうか?
プロジェクトを作ってコンパイルしてみるとエラーになる。
間違って入ってしまったようだ。


という訳で今回のバージョンは、ぜひ導入すべきだ。
ただし iodefine.h (C:\Program Files\Renesas\Hew\System\Pg\KPIT GNURX-ELF\GNURX_Info\Generate\iodefine\rx62n.h) はインストールする前にバックアップを取っておいてインストール後入れ替える必要がある。


参照:KPIT GNU Tools and Support
環境:High-performance Embedded Workshop Upgrade 4.09.00
    KPIT GNURX v11.02 Windows Tool Chain (ELF)

FRK-RX62N (16) printf (4) KPIT GNURX Newlib2011年06月26日 22時47分58秒

Tiny Hexer で Export
前回の続き 「KPIT GNURX で printf を使う」
副題として、[SYSLAB blog 読者 限定公開 第二弾 GNURX printf の使い方 Newlib 編]
前回同様中身は無いに等しい。 Renesas のサンプルと WINARM のサンプルをコピーするだけだ。


それでは始めよう。
1.KPIT GNURX で新規プロジェクトを作成する。
2.前回作成した hardware_setup.c を新規プロジェクトの中にコピーする。
3.main を新規プロジェクトの中にコピーする。
4.ソースの中の stdint.h をローカルから読み込むようにする。
  #include "stdint.h"
  もちろん stdint.h はプロジェクトディレクトリにコピーしておく。そうでなければ stdint.h をinclude しないようにして uint32_t などを unsigned int と書き直せばよい。
5.serial_printf.c をプロジェクトにコピーする。

 

6.syscalls.c をプロジェクトにコピーする。

 

  NEWLIB の Defines を忘れずにね!
  これは WinARM の Newlib/StdIO-Interface and LPC ADC example の中にあるファイル。
7.KPIT GNURX [ELF] Toolchain の Library Generator は
  Library type が Pre-Built
  Select library が Newlib
  と設定する。
8.後はコンパイルして書き込むだけ。と言いたいところだが、ここからが大変だ。
RAM の部分のデータを ROM に戻してやらなければならない。
(私の場合)コンパイル後の mot ファイル 0x00000400 から 00000C9B までを Tiny Hexer で Import し、それをそのまま Export する。Export する Address は FFFAA980 。
テキストエディタでコンパイル後の mot ファイルを読み込み 0x00000400 から 00000C9B までを削除する。先ほど Export したテキストを FFFAA980 から貼り付ける。
こうしてできたファイルを FDT で書き込めばよい。
(上記のアドレスはマップファイルと mot ファイルを参照しながら決めてね!)


ふう~


いろいろやったけど他の方法を思いつかなかった。非常に手間がかかる。


ということで前回の Optimized ライブラリ printf でも同じように手動変換しなければならないということだろう。
たまたま動いたということか?


参照:Renesas Application Notes RX600 Series Adding Printf and Scanf Support (R01AN0509EU0100)
    WinARM Newlib/StdIO-Interface and LPC ADC example
環境:High-performance Embedded Workshop Upgrade 4.09.00
    KPIT GNURX v11.01 Windows Tool Chain (ELF)