SH/H8 用フラッシュライタ (16)2010年04月02日 21時21分39秒

h8flush v4.1
Micro Embeded System が Ver2.5 r14 になっていた。
h8flush を見てみると v4.1 になって SH7216 が追加されている。


おそらく、次のターゲットは SH7216 なのだろう。
これは ROM 内蔵なので手軽に使えると思う。


参考: Micro Embeded System

GCC Developer Lite (devkitARM)2010年04月06日 23時30分25秒

BestTechnology をのぞいてみると GCC Developer Lite が Version 2.3.2.1 になっていた。
ターゲットに H8/3069F,SH7125F が追加されている。


それともう一つ ARMGCC が GNUARM から devkitARM になっていた。
いつから変わったのだろう?
もとから devkitARM だったのか?
今となっては記憶があやふやだ。


参考: BestTechnology
     devkitPro

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工作

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工作

Windows Utility (5) 圧縮解凍ツール lhaz2010年04月16日 06時46分43秒

lhaz
いつからか圧縮解凍ツールに lhaz を使い始めた。
現在使っているのは ver.1.35 不便なところもあるが
使い方でカバーしている。


検索してみると ver.2.03 があることがわかった。
さっそく使ってみる。


圧縮ファイルをドロップしたとたん異常終了してしまう。
もう一度同じファイルをドロップすると正常に解凍できる。
どうも安定しないようだ。
ver.1.35 のまま使おう。


ところで、rar 形式のファイルにロックがかかっている場合があるが、これがなかなか解析できない。
とある掲示板で cRARk が紹介してあった。
解析スピードはこれが一番のようだ。
使い方メモ
解凍した後 password.def という名前で新規ファイルを作成し、以下の内容を記述する。
##
[$a $A $1 $!] *
$! は必要ないかも?
さらに、bat ファイルも作っておくと便利だ。
C:\Win_Set\Rar_Zip\crark32\crark.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
pause
作成した bat ファイルのショートカットを SendTo に入れておくと explorer 右クリックメニューの送るから rar 形式のファイルを送ることができる。
gui で扱いたい場合は cRARk GUI.exe が用意されているのでそれを使うといいだろう。
cRARk GUI.exe


H8で学ぶマイコン開発入門2010年04月20日 22時16分08秒

こんなのがあったのでメモしておこう。

これ以外にもたくさんある。
知らなかった。
しかし、なかなか見る気にはならない。
表示が遅すぎる。


H8で学ぶマイコン開発入門
イチから作って丸ごと学ぶ! H8マイコン道


参照:組み込みソフトウェア/ハードウェア開発 [@IT MONOist]

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))

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)

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 (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)