FRK-SH2A (5) 問題点 (2)2010年05月07日 21時17分54秒

1.2Vが出てこない
付属SH-2Aマイコン基板(FRK-SH2A)の解決していない問題点について考えてみよう。
まずはハード的な問題だ。

●電源投入しても 1.2V だけが立ち上がらない場合がある。

この原因となっているのが ISL9021IRUWZ-T だ。
低損失型のレギュレータで
出力電圧:1.2V
出力電流:250mA
という仕様だ。

さて、これが動かない原因を列挙してみると
1.Enable Control が OFF
2.過電流保護 260mA
3.サーマルプロテクト 145°
4.逆バイアスプロテクト

(1)3.3Vに接続してあるのでこれは無いだろう。
(2)瞬間的には危ないところまでいくかもしれないが、セーフだと思う。
(3)熱は持ってないのでこれも大丈夫。
(4)出力コンデンサの合計が30μF程度になる。これか?

逆バイアスプロテクトだと予想をつけてみる。
さしあたりショットキダイオードD1とD2を入れてみる。

しばらく様子を見てみよう。

もしかすると ISL9007 にも同じ処置が必要かもしれない。

KPIT GNU Tools (15) Debugger2010年05月05日 21時42分58秒

さて、今度はデバッガーを使ってみよう。
いやシミュレータというのかな?

一度こういうのをやってみたかった。
写真をたくさん使ったやつ

先日、作成したデバイス SH7262CQ でワークスペースを作成する。
これはワークスペースを読み込んでコンパイルを行った直後の画面だ。
DefaultSession

まずセクション情報を確認してみよう。
ここでは 0x1c000000 から 0x00000000 に変更してある。
実を言うと 0x1c000000 のまま動かす方法を知らないからだ。
Linker Sections

次に Debug Session を確認しよう。
Debug Session
DefaultSession
SessionSH-2A_Serial_Monitor
SimSessionSH2A-FPU_Cycle
SimSessionSH2A-FPU_Func
ができている。
これはワークスペース作成時に、以下の項目にチェックを入れると自動的に作成される。
Target System for Debugging

もう一つ、デバッグの設定も見てみよう。
これも自動的にできるので確認するだけだ。
デバッグの設定

ここまで問題がなければセッションを切り替える。
SimSessionSH2A-FPU_Cycle
もちろん、はい。
ChangeSession

これはよくわからないが CMT をシミュレートするのだろうか?
でも、CMT 以外は出てこない。
CMT

そしてダウンロード。
Download

最後に Simulator Memory Resource を確認しよう。
これもプロジェクトジェネレータが自動的に作成してくれるが、いかんせん間違いが多い。(私が間違えた。)
ここで修正して問題がなければ
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\Hardware\SH-2A\SH7262CQ.dat
を修正すればいいだろう。
この Simulator Memory Resource が間違っていると Memory Access Error などになる。
Simulator Memory Resource

あとは Reset Run でよい。
ハードウェアや割り込みはシミュレーションできないと思うが、安定度は高い。


環境: (HEW Version 4.07.01.004) + (KPIT GNUSH v1001 Windows Tool Chain (ELF))

SH/H8 用フラッシュライタ (19) H8ライターの書き込み制御ファイルをコンパイルする(3)2010年05月03日 09時24分12秒

SHC
トラ技 2001,06月号付録CDのコマンドライン版コンパイラでコンパイルする件
調べてみると環境変数の設定が間違っていた。

SHC_INC:システムインクルードファイル格納ディレクトリ
SHC_LIB:実行ファイル格納ディレクトリ
SHC_TMP:テンポラリファイル格納ディレクトリ

となっており、SHC_LIB は bin ディレクトリを指定しなければならないのだった。

ああ!
なんてことだ。
やはりドキュメントは読まなくちゃ。

ちなみにトラ技 2002,03月号付録CDのコマンドライン版コンパイラ H8 用は
環境変数をセットしなくても大丈夫だ。
念のため記録しておこう。
CH38:システムインクルードファイル格納ディレクトリ
CH38TMP:テンポラリファイル格納ディレクトリ
となっている。

FRK-SH2A (5) 問題点 (1)2010年04月30日 22時40分12秒

FRK-SH2A の問題点を整理してみよう。
(1)不明なデバイスとなり、仮想 COMPORT が起動しない場合がある。
(2)電源投入しても 1.2V だけが立ち上がらない場合がある。
(3)KPIT GNUSH v1001 の割り込み処理がうまくいかない。

といったところか?
もっとも、(3)は基板には関係ないんだけど...


(1)は誰かが解決してくれるのを待とう。(他力本願?)
(2)はハードウェア設計問題のようなので泣くしかないのか?
ところで(1)、(2)について、根本的な解決策というのではないが逃げる手はある。
どのようにするかというと、電源OFF の状態で C11 をショートする。(5Vをショート)
これで100%復帰できる。
でも、このような方法を取らなくてもよい解決策があればいいのだけど...
(3)も解決してほしいが当面 RESBANK を使うことで逃げることにする。
そのためにプロジェクトジェネレータを書き直すことにしよう。
ついでにセクション情報も書き換えて...
デバイス名は SH7262CQ とでもしておこう。

これで FRK-SH2A も心置きなく遊べそうだ。
しかし、さらにもうひとつ問題が無いわけではない。
それは私のお気に入り KPIT GNUSH v0601 が RESBANK をサポートして無いことだ。
これは完全に泣くしかないのか?


環境: (HEW Version 4.07.01.004) + (KPIT GNUSH v1001 Windows Tool Chain (ELF)) + (FRK-SH2A)

FRK-SH2A (4) 割り込み2010年04月29日 22時15分45秒

KPIT GNUSH v1001 Windows Tool Chain で作成したプロジェクトは、 どうも割り込みの部分に不具合がありそうなので、その部分を見てみる。
2FE6     _INT_CMT MOV.L     R14,@-R15
FF0B              FMOV.S    FR0,@-R15
FF1B              FMOV.S    FR1,@-R15
FF2B              FMOV.S    FR2,@-R15
FF3B              FMOV.S    FR3,@-R15
FF4B              FMOV.S    FR4,@-R15
FF5B              FMOV.S    FR5,@-R15
FF6B              FMOV.S    FR6,@-R15
FF7B              FMOV.S    FR7,@-R15
FF8B              FMOV.S    FR8,@-R15
FF9B              FMOV.S    FR9,@-R15
FFAB              FMOV.S    FR10,@-R15
FFBB              FMOV.S    FR11,@-R15
4F02              STS.L     MACH,@-R15
4F12              STS.L     MACL,@-R15
4F52              STS.L     FPUL,@-R15
4F62              STS.L     FPSCR,@-R15
2F06              MOV.L     R0,@-R15
2F16              MOV.L     R1,@-R15
2F26              MOV.L     R2,@-R15
2F36              MOV.L     R3,@-R15
2F46              MOV.L     R4,@-R15
2F56              MOV.L     R5,@-R15
2F66              MOV.L     R6,@-R15
2F76              MOV.L     R7,@-R15
4F22              STS.L     PR,@-R15
6EF3              MOV       R15,R14
D111              MOV.L     @(H'0044:8,PC),R1
D211              MOV.L     @(H'0044:8,PC),R2
4266              LDS.L     @R2+,FPSCR
72FC              ADD       #H'FC,R2
414B              JSR/N     @R1
6FE3              MOV       R14,R15
4F26              LDS.L     @R15+,PR
67F6              MOV.L     @R15+,R7
66F6              MOV.L     @R15+,R6
65F6              MOV.L     @R15+,R5
64F6              MOV.L     @R15+,R4
63F6              MOV.L     @R15+,R3
62F6              MOV.L     @R15+,R2
61F6              MOV.L     @R15+,R1
60F6              MOV.L     @R15+,R0
4F66              LDS.L     @R15+,FPSCR
4F56              LDS.L     @R15+,FPUL
4F16              LDS.L     @R15+,MACL
4F06              LDS.L     @R15+,MACH
FBF9              FMOV.S    @R15+,FR11
FAF9              FMOV.S    @R15+,FR10
F9F9              FMOV.S    @R15+,FR9
F8F9              FMOV.S    @R15+,FR8
F7F9              FMOV.S    @R15+,FR7
F6F9              FMOV.S    @R15+,FR6
F5F9              FMOV.S    @R15+,FR5
F4F9              FMOV.S    @R15+,FR4
F3F9              FMOV.S    @R15+,FR3
F2F9              FMOV.S    @R15+,FR2
F1F9              FMOV.S    @R15+,FR1
F0F9              FMOV.S    @R15+,FR0
6EF6              MOV.L     @R15+,R14
002B              RTE       
0009              NOP       
0009              NOP       
1C00              MOV.L     R0,@(H'00:4,R12)
1126              MOV.L     R2,@(H'18:4,R1)
1C08              MOV.L     R0,@(H'20:4,R12)
000C              MOV.B     @(R0,R0),R0
長い!
それでは Renesas shc のコードと比べてみよう。
             _INT_CMT_CMI0:                   ; function: INT_CMT_CMI0
D28A                   MOV.L       L243+2,R2  ; _int_cmt_cmi0
424B                   JSR/N       @R2
005B                   RESBANK
002B                   RTE
0009                   NOP
これは!
もう驚くしかない。
レジスタ・バンクを使えばこんなに簡素になるということか?

驚いたところで解決にはならないので、対策を考える。
当然 Renesas shc のコードと同じように RESBANK を使うことにする。

コンパイルして実行!

何の問題もない。

とりあえず RESBANK を使えば問題なさそうだ。
これは、sh7262 (sh2a) だけの問題なのか?
それにしても RESBANK を使わない場合、割り込みで暴走するのはコンパイラのバグなのだろうか?
そのうち調べてみよう。


環境: (HEW Version 4.07.01.004) + (KPIT GNUSH v1001 Windows Tool Chain (ELF)) + (FRK-SH2A)

FRK-SH2A (3) 不明なデバイス2010年04月28日 21時34分58秒

USB デバイスが認識されません
付録の FRK-SH2A どういうわけか時々コンピュータから認識できなくなる。
「不明なデバイス」 というやつだ。


・リセットをかけてみる
・USB ケーブルを抜き差しする
・USB ケーブルを交換する
・コンピュータをリブートする
・コンピュータを変えてみる
・しばらく放置する


何をやってもだめだ。

不明なデバイスということは FRK-SH2A のソフトが動いてないということだから、リセットをかければ動いてもよさそうだ。
でも動かない。
シリアル ROM の読み出しタイミングに問題があるのか?
RESET 回路に問題があるのか?
ROM の内容が消えてしまったのか?
部品実装の不良か?
いろいろやっているうちに、ピコンという音と共に突然動き出した。

う~ん...

不思議な基板だ。
と思っていたら今度は「不明なデバイス」としても認識しない。
USB ケーブルを接続しても反応なしだ。
電源は問題ない、でも CPU が熱を持っていない。
スリープ状態から抜け出せないのか?
よく調べてみると 3.3V は出ているのに 1.2V が出ていない。
これでは動かなくてあたりまえか。
でもなぜ?

私だけか、こんなことでつまづいているのは。


FRK-SH2A (2) Interface Sample2010年04月26日 23時50分59秒

SH7262_LED
いつものように Kpit GNUSH v1001 Windows Tool Chain (ELF) で sh7262 のプロジェクトを作成し Interface6月号のサンプルを main に貼り付ける。
そして、run ...

LED が3回点滅し PC が00000000 で停止する。
あらあら、毎回こんな調子だ。

スタックがどこかでずれてしまっているようだ。
とりあえず割り込みをやめて動かしてみよう。

問題ない。
セクションは以下のように割り付けた。
KPIT GNU MapViewer


なんだか先が長くなりそうな予感。




SH7262_LED プロジェクト


環境: (HEW Version 4.07.01.004) + (KPIT GNUSH v1001 Windows Tool Chain (ELF)) + (FRK-SH2A)

KPIT GNU Tools (14) GNUSH v1001 Windows Tool Chain (ELF)2010年04月23日 23時23分35秒

Kpit GNUSH v1001 Windows Tool Chain Project Generator
Kpit GNUSH v1001 Windows Tool Chain (ELF) に
SH7216 SH7262 SH7264 を追加した。

これで FRK-SH2A の準備は完了だ。
Project Generator 1


でも、Renesas の環境を使えば何の問題もないのだけど...


これは SH7216 の場合
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Support_3\scapp.det
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Support_3\scppapp.det
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Support_3\SH-2A\SH7216.PGD
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\hwsetup\7216.c
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\IntPRG\SH7216.c
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\iodefine\7216.h
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\vect\SH7216.h
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\VECTTBL\SH7216.c
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\Hardware\SH-2A\SH7216.dat

まず、scapp.det と scppapp.det 、これらは同じ内容でリンカースクリプトの集合体だ。
追加するデバイスのリンカースクリプト情報を書き加える。
以下は、SH7216 の例だ。

  


次に SH7216.PGD 、プロジェクトジェネレータ・データファイルでプロジェクトに含めるファイルやセクション情報を記述する。

  


hwsetup¥7216.c は start.asm から呼び出される初期化関数だ。(文字がない部分もコピーして張り付ける)

  


IntPRG¥SH7216.c は割り込みプログラム。もちろん中身は空。(文字がない部分もコピーして張り付ける)

  


iodefine¥7216.h ご存じのとおりI/Oヘッダーファイル Renesas のものがそのまま使える。

  


vect¥SH7216.h ベクター定義ヘッダー(文字がない部分もコピーして張り付ける)

  


VECTTBL¥SH7216.c ベクターテーブル(文字がない部分もコピーして張り付ける)

  


Hardware¥SH-2A¥SH7216.dat ハードウェア情報

  


FPU 付が SH-2A で FPU なしが SH2A-NoFPU となっている。
Renesas の場合は
FPU 付が SH2A-FPU で FPU なしが SH2A となっている。
紛らわしいのでそのうち整理しよう。


環境: (HEW Version 4.07.01.004) + (KPIT GNUSH v1001 Windows Tool Chain (ELF))

SH/H8 用フラッシュライタ (18) H8ライターの書き込み制御ファイルをコンパイルする(2)2010年04月10日 20時43分43秒

前回、H8ライターの書き込み制御ファイルをコンパイルする件はうまくいかなかった。


ならば、環境を変えてみよう。
今回テストするのは
SuperH RISC engine Standard Toolchain (V.9.0.3.0)


まず、パスと環境変数をセットする。
set PATH=%PATH%;C:\Program Files\Renesas\Hew\Tools\Renesas\Sh\9_0_3\Bin
set shc_lib=C:\Program Files\Renesas\Hew\Tools\Renesas\Sh\9_0_3\Bin
set shc_inc=C:\Program Files\Renesas\Hew\Tools\Renesas\Sh\9_0_3\Include
set shc_tmp=C:\Program Files\Renesas\Hew\Tools\Renesas\Sh\9_0_3\Ctemp

makesrc.bat を実行。
7045_v.src ができている。
問題ないようだ。
makesrc.bat の中身は
shc  -CPU=SH2 -abs16=all -CODE=ASMCODE -NOLIST 7045_v.c

次にアセンブル・リンク
makemot.bat を実行する。
7045_v.mot ができている。
これも問題ないようだ。
しかし、実行アドレスが0になってしまう。
これはまあ、いいことにしよう。


makemot.bat の中身は
asmsh 7045_V -CPU=SH2
OPTLNK -SUB=link.sub 
LINK.SUB の中身は
OUTPUT 7045_v
INPUT  7045_v
LIST
FORM   stype
START  P,B/0fffff000
EXIT



結局、トラ技 2001,06月号付録CDのコマンドライン版コンパイラの環境でのコンパイルは断念して
SuperH RISC engine Standard Toolchain (V.9.0.3.0) の環境で動かすことになってしまった。
それでも、動いたのでよしとしよう。


環境: SuperH RISC engine Standard Toolchain (V.9.0.3.0)
参考: H8ライター + H8工作 + PIC工作

SH/H8 用フラッシュライタ (17) H8ライターの書き込み制御ファイルをコンパイルする(1)2010年04月09日 22時51分37秒

かねてから気になっていた H8ライターの書き込み制御ファイルをコンパイルする件。
もう一度やってみよう。


まず用意するもの
・トラ技 2001,06月号付録CDのコマンドライン版コンパイラ
・ヘッダーファイル
 7040s.h
・H8ライターの書き込み制御ファイルのソース(SH7045)
 7045_V.C
 LINK.SUB
 MAKEMOT.BAT
 MAKESRC.BAT


ソースの中に MAKESRC.BAT があるので実行してみる。
Illegal environment variable
Illegal environment variable
環境設定ができていないようだ。
環境変数を設定してみる。
set SHC_LIB=C:\CQ\SH\lib
set SHC_INC=C:\CQ\SH\include
set SHC_TMP=C:\CQ\TMP\


もう一度実行
Memory overflow
メモリが足りないのか?


さて、ここからが問題だ。


環境: トラ技 2001,06月号付録CDのコマンドライン版コンパイラ
参考: H8ライター + H8工作 + PIC工作