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

SH/H8 用フラッシュライタ (23) F-ZTATマイコン書き込みツール Ver.5.0D2012年11月24日 11時46分16秒

F-ZTATマイコン書き込みツール Ver.5.0D
「FDT の Protocol A plugin が見当たらない」という指摘があったので過去のリンクからたどってみた。
確かになくなっている。
他の場所に移動したのかもしれないと思って探してみたが Renesas には見当たらない。
範囲を広げて探してみると。
ここにあった。そして、F-ZTATマイコンオンボード書込みプログラムも見つけた。
ところで、この「 F-ZTATマイコンオンボード書込みプログラム」は今までまったく知らなかった。これがあると FDT + Protocol A plugin が必要なくなるかもしれない。サポートしているデバイスは結構たくさんある。

H8S/2128F H8S/2132RF H8S/2132F H8S/2134F H8S/2134AF H8S/2138F H8S/2138AF
H8S/2142RF H8S/2142F H8S/2144F H8S/2144AF H8S/2147NF H8S/2147AF H8S/2148F
H8S/2148AF H8S/2149YVF H8S/2169YVF H8S/2194F H8S/2199F H8S/2214F H8S/2238F
H8S/2258F H8S/2318F H8S/2328F H8S/2338F H8S/2345F H8S/2357F H8S/2623F
H8S/2626F H8S/2633F H8S/2636F H8S/2643F H8S/2646F H8S/2676F H8/3022F
H8/3039F H8/3048F H8/3052F H8/3062F H8/3062AF H8/3064F H8/3067F H8/3434F
H8/3334YF H8/3437F H8/3337YF H8/3437SF H8/3337SF H8/3642AF H8/3643F
H8/3644F H8/3664F H8/3857F H8/3854F H8/538F H8/539FS
SH7017F SH7018F SH7044F SH7045F SH7050F SH7051F SH7052F SH7053F SH7054F SH7055F SH7065F

いつか動作を確認してみよう。
しかし、画面を見ると使い勝手は悪そうだ。(富士通とどっこいどっこいか?)いろんなライタが出てきたのもうなずける。

参照: F-ZTATマイコンオンボード書込みプログラム

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

KPIT GNU Tools (21) GNUSH v1202 SH7450 をシミュレート (5)2012年08月07日 19時20分12秒

General illegal instruction
main までたどり着いたところで今一度 reset_program.asm の内容を確認する。
①R15 にスタックアドレスを設定
②内蔵メモリアクセスモードを設定
③データ領域の初期化
④HardwareSetup 関数を呼び出し
⑤浮動小数点ユニットの初期化
⑥ステータスレジスタの設定
⑦main 関数を呼び出し
今までのところこれで問題ない。しかし、気になっていた INTHandler の設定がどこにもない。VBR を設定しなければならないはずだ。VBR をデフォルトのまま使うなら INTHandler のセクションを 0x100 にしなければならない。そうでなければ VBR に対して
INTHandler は 0x100 のオフセット
TLBmissHandler は 0x400 のオフセット
IRQHandler は 0x600 のオフセット
となる。①と②の間にベクタベースレジスタの設定を挿入する事にする。

●RESETPRG\SH4A.asm 変更(reset_program.asm のもとになるファイルに上記の内容を反映)
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\RESETPRG\SH4A.asm

 



上記変更を行うと今度は vhandler\sh7450.s の具合が悪くなってくる。というわけで先日のソースを一部変更。
●vhandler\sh7450.s 変更
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\VECTTBL\SH7450.c

 



ここらで割り込みの確認だ。 main 関数から set_cr() を実行して一般不当命令の例外処理をやらせてみる。
画面では分かりにくいかもしれないが割り込みが発生し _INTHandlerPRG を実行している。また、ベクター 180 の interrupt function も実行される。
これで一通りのことはできたと思う。後は現物が入ってからだ。

環境:High-performance Embedded Workshop Version 4.09.00.007
    KPIT GNUSH v12.02 Windows Tool Chain (ELF)

KPIT GNU Tools (21) GNUSH v1202 SH7450 をシミュレート (4)2012年08月05日 14時36分01秒

メモリ割り付けレジスタへのアクセスは TLB を使うということが分かった。さらに読み進むと
①MMUCRの設定に従ってUTLB、ITLBを制御してアドレス変換を行います。
②TLBエントリの登録、削除、読み出し。UTLBエントリの登録にはLDTLB命令を用いる方法と、メモリ割り付けUTLBに直接書き込む方法があります。
③UTLB のアドレスアレイはP4 領域のH'F600 0000~H'F60F FFFF に割り付けられています。
④UTLB のデータアレイはP4 領域のH'F700 0000~H'F70F FFFF に割り付けられています。

まず、メモリ割り付けUTLBに直接書き込む方法を試してみよう。
だめだ。H'F600 0000 にアクセスしたとたん Address Error になる。

さて、困った。
今度は特権モードについて調べてみる。
①。特権モードではP0 領域からP4 領域の4G バイトの空間をアクセスすることが可能です。
②ユーザモードと特権モードは、ステータスレジスタの処理モードビット(MD)で切り替えます。
何だ一番簡単なのは特権モードを使うことだったのか。というわけで今度は特権モードで試す。
reset_program.asm のどこに追加しようかと眺めていると、なんと _start の直後ユーザーモードにするコードが書いてある。アクセスできなくて当たり前だ。
これを main をコールする直前の位置に移動する。
そして、コンパイル・ダウンロード・実行。

メモリ割り付けレジスタにアクセスできる。
内蔵メモリ(OL/IL)にアクセスできる。
やっと関数 main までたどり着いた。
しかし、ユーザモードからアクセスする場合はどうするの?
という疑問が残る。

環境:High-performance Embedded Workshop Version 4.09.00.007
    KPIT GNUSH v12.02 Windows Tool Chain (ELF)

KPIT GNU Tools (21) GNUSH v1202 SH7450 をシミュレート (3)2012年08月04日 11時27分58秒

SH7450 Address Error
シミュレータで Address Error になってしまう件、ドキュメントを読んでみると次の条件で起こると書いてある。
1.RAMCR.RMD="0"のとき、ユーザモードで内蔵メモリ領域へアクセス
2.ユーザモードで領域H'FC00 0000~H'FFFF FFFFにアクセス
ということは RAMCR を設定しなければならないがアクセスするとアドレスエラーになる。

困ったと思ってさらに探していると SuperH RISC engineファミリ用シミュレータデバッガのドキュメントに
「内蔵メモリ制御レジスタ (RAMCR) の設定を変更することなく、拡張機能付きSH-4A用シミュレータデバッガで、URAM領域へアクセスできるようになりました。なおこのため、RAMCRの設定変更によってURAM領域へのアクセス可否を切り替えることはできなくなりました。」
と書いてある。つまり何もしなくてよいということだ。
すぐに試してみた。
やっぱりだめだ Address Error になる。
いろいろ試していて分かったことはリセット後メモリウインドウから手動でFF000074へ00000200を書き込むと Address Error は出なくなる。 これで一件落着と言いたいところだが本番ではどうするのだ?

さらに調査...
①ユーザモードではメモリ割り付けレジスタはアドレス変換によるアクセスで参照できます。
おお アドレス変換か。
②P4 領域は、ストアキューと内蔵メモリ領域を除いてTLB を用いたアドレス変換ができません。
え!できないの?
③TLBを用いて物理アドレス空間のエリア7 をアクセスする場合のみ、エリア7 のH'1C00 0000~H'1FFF FFFFまでの領域が予約領域ではなくなり、仮想アドレス空間のP4 領域に含まれる制御レジスタ領域と等価になります。
ああ!やっぱりできるの?
④P4 領域アドレスは、仮想アドレス空間のP4 領域を用いた場合のものです。P4 領域アドレスの32 ビットアドレスで上位3 ビットを"0"にしたものがエリア7 アドレスとなります。エリア7 アドレスは、TLB を用いて物理アドレス空間のエリア7 からアクセスするものです。
で、どうすればいいの?

疲れた。sh4a ってむずかしい。今日はここまでにしておこう。

環境:High-performance Embedded Workshop Version 4.09.00.007
    KPIT GNUSH v12.02 Windows Tool Chain (ELF)

KPIT GNU Tools (21) GNUSH v1202 SH7450 をシミュレート (2)2012年08月03日 23時41分48秒

SH7450 Sections
SH7450 のプロジェクトをシミュレータで動かす件、どうも納得がいかないが現物で確認できないのでしかたがない。
さて、次に試すのは RAM だ。
①.data と .bss の Section を OLRAM から ILRAM に変えてみる。
結果: Address Error になる

②.data と .bss の Section を OLRAM から SHwyRAM に変更してみる。
結果:正常に動く

③.stack を ILRAM から OLRAM に変えてみる。
結果:変化なし

④.stack を ILRAM から SHwyRAM に変えてみる。
結果:変化なし

理由は分からないが .data と .bss の Section は SHwyRAM でなければいけないらしい。.stack は問題なさそうなのでそのままにしておく。

というわけでセクションデータの変更だ

 



しかし、SuperH RISC engine Standard Toolchain (V.9.4.1.0) ではどこの RAM に配置しても問題ないので KPIT の環境はどこかに不具合を抱えているのだろう。KPIT ではなくて私の作った環境か?
まだ確認していないが、もうひとつ気になることがある。
INTHandler TLBmissHandler や IRQHandler の動きだ。

環境:High-performance Embedded Workshop Version 4.09.00.007
    KPIT GNUSH v12.02 Windows Tool Chain (ELF)

KPIT GNU Tools (21) GNUSH v1202 SH7450 をシミュレート (1)2012年08月01日 22時13分38秒

SH-4A Simulator
追加した SH7450 をシミュレータにかけてみよう。
現在のところそれぐらいしかできない。
さっそくプロジェクトを作ってコンパイル。
問題ない。

ダウンロードしてリセット・ステップイン。
0xA000 0000 の ResetHandler からプログラムが始まる。
ステップを進めていって _start へジャンプするべき所でおかしなところへ飛んでいく。
KPIT の様式に従ってプロジェクトのソースを作成しただけなのだが?
しかたがないので exp_handler.s を読み進めていくと _RESET_Vectors_temp は本来ベクターテーブルアドレスを指定しなければならないのに _start アドレスを指定しているのでおかしなことになっているのがわかる。
_start を _Exp_Vectors に修正してコンパイル・ダウンロード・実行。
あらあら、今度は RAM を参照しに行く。ベクターが初期化の終わっていない RAM に配置されているのだ。
vector_table.c を修正して ROM に配置されるようにする。
修正前 const void *Exp_Vectors[] = {
修正後 void *const Exp_Vectors[] = {

再度コンパイル・ダウンロードしてリセット・ステップイン。
今度は _start にジャンプして問題なさそうだ。
さらにステップを進めていくと
mov.b r2,@r0
で 0x00000100 に飛んで Address Error になってしまう。
r0 が E5200000 で r2 が 00000000 なので RAM を 00 で埋めるだけなのだが?
原因不明。
うまくいかないもんだ。

環境:High-performance Embedded Workshop Version 4.09.00.007
    KPIT GNUSH v12.02 Windows Tool Chain (ELF)