SH2 SH7085 (8) CMT0 Output Capture (Renesas Sample Code) ― 2011年08月29日 21時01分14秒

SH7086 サンプルワークスペース
さて、続いて CMT0 のサンプルを試してみよう。
先日作成したワークスペースに新しいプロジェクト CMT0_Output_Capture を追加する。
実を言うと Renesas のサンプルを見て、こういうことができるのをはじめて知った。さっそくそれを試しながら shc のソースを gnush にコピーしているわけだ。
それでは、プロジェクトの挿入から始めていこう。


①ワークスペースの読み込み
先日作成したワークスペースを読み込む。
②プロジェクトの挿入
メニューバーの[プロジェクト]/[プロジェクトの挿入]を実行する。
新規プロジェクト]を選択し OK
プロジェクトの挿入
新規プロジェクトの挿入ダイアログが表示されるのでプロジェクト名を「CMT0_Output_Capture」とする。そのほか必要な項目を入力し、プロジェクトを作成する。
新規プロジェクトの挿入
③ファイルのコピー
ここから先はサンプルのファイルをコピーしてプロジェクトに組み込んでいく。
これで既存のワークスペースの中に新しいプロジェクト CMT0_Output_Capture ができたはずだ。
④アクティブプロジェクト
アクティブプロジェクトを変更する場合はメニューバーの[プロジェクト]/[アクティブプロジェクトに設定]でプロジェクトを選択する。
アクティブプロジェクトに設定



確認したサンプルは以下のとおり。
私の環境に合わせて修正した Renesas のサンプル


環境:High-performance Embedded Workshop Upgrade 4.09.00
    KPIT GNUSH v0601 Windows Tool Chain (ELF)
    Renesas Sample Code

KPIT GNU Tools (18) GNUSH v0601 Windows Tool Chain (ELF) ― 2011年08月25日 21時40分34秒

追加した SH7231
今回追加するデバイスは SH7231
まだ入手していないので動作テストするのは先の話になる。
コンパイラのバージョンは KPIT GNU Tools GNUSH v0601
HEW のバージョンは 4.09.00


まずスペックを整理してみる。
ROM Start : 0x00000000
Vector Table End : 0X000003FF
ROM End : 0x000BFFFF  (SH72315=0x000FFFFF)
Ram1 Start : 0xFFF80000
Ram1 End : 0xFFF87FFF
Ram2 Start : 0xFFFD8000
Ram2 End : 0xFFFDAFFF
ここでは SH72314 の設定だけにする。


ではさっそく始める。


①デバイス名を追加。(一箇所)
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\capp.det
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\cppapp.det
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\lib.det
 SH2a の項目に SH7231 を追加。


②デバイス名とそれに対応するヘッダーファイル指定を追加。
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\slib.det
SH2a の項目に SH7231 を追加してヘッダーファイルを指定する。
例)
 [SH7231]
 header\7231.h


③ヘッダーファイルを追加。
作成したヘッダーファイルを指定ディレクトリに入れる。
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\SH2a\header\7231.h


④vectshead が未修正の場合は修正する。
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\SH2a\vectshead

 


⑤セクション情報を追加。
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\scapp.det
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\scppapp.det
SH2a の項目に SH7231 のセクション情報を追加して項目の後にヘッダーファイルを指定する。
[SH7231]
header\7231.h

 


⑥ベクターテーブルを追加。
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\vcapp.det

 




例によってFPU なしの設定で使わなければならない。
さらにレジスタバンクも使えない。


環境: (High-performance Embedded Workshop Version 4.09.00.007) + (KPIT GNUSH v0601 Windows Tool Chain (ELF))
参考: KPIT GNU Tools and Support

SH2 SH7085 (7) sci (2) (Renesas Sample Code) ― 2011年08月19日 20時46分45秒

SH7085 SCI
「チップのバグなのか?」などと書いたが、実は私の単純なミスだった。


電源投入直後(リセット)から SCI 初期化までの間 TXD は High impedance なので port の値が不定になるのを忘れていた。
なんてことは無い TXD をプルアップすれば良いだけだ。
反省!
図の中の R? が追加した抵抗。
これで文字化けすることはなくなった。
次からは ADM3202ARU とピンコンパチブルの MAX232ACUE+ を使うことにしよう。
でも、設計の古い MAX232ACUE+ はできれば使いたくない。
SCI 出力



さて、原因が分かったところで気分を変えて Renesas の別のサンプルを動かしてみる。
このサンプルいろんなことができるようになっている。ひとつずつ確かめながら動かしていくことにしよう。
まずは SCI_UART。上の画面はその出力だ。それ以外に LCD にも出力できるようになっている。
SH7085 LCD

ただし、私の環境で動くように修正が加えてある。
このサンプルはマルチプロジェクトになっており SCI_UART 以外に
ADC_OneShot
ADC_Repeat
CMT0_Output_Capture
DMAC
DTC
MTU2_InputCapture
MTU2_PulseGen
MTU2_PWM
Power_Modes
tutorial
Watchdog
がある。しかし、残念なことにこれも日本語のサイトには無い。


確認したサンプルは以下のとおり。
私の環境に合わせて修正した Renesas のサンプル


ところで、SH7085 のフラッシュライタはどんなものがあるかというと、以下に示すとおり。
FDT		5.98秒	Flash Development Toolkit V.4.07 Release 00
H8W		6.25秒	H8ライター Ver. 0.38b3
H8flash		13.66秒	H8flash v3.7
スピードは FDT と H8ライター が突出している。※(SH/H8 用フラッシュライタ (11) 参照。)
もちろん H8ライター は大活躍だ。
測定条件
ファイルサイズ mot file 37,800byte
シリアルポート AKI/USB-RS232
時間計測はストップウォッチ


H8ライター

ここでひらめいた。
inf ファイルを用意すれば H8SX1655 や RX62N にも H8ライターが使えるのじゃないかと。
さっそく RX62N で試してみるが残念ながらうまくいかなかった。
ビットレートの合わせ込み
デバイス名確認
イレース
ここまではうまくいっているようだ。
この後書き込みのためにビットレートを変更するがそこで失敗してしまうような気がする。

RX62N_F96M_P384.INF
[BootDef]
DeviceName=RX600 Series
UserMatRdf=0
BaudP=38400
ClockMode=0
ClockFreq=1200
MatType=0
MulRatioNo=2
MulRatio1=8
MulRatio2=4
MulRatio3=0
MulRatio4=0



環境:High-performance Embedded Workshop Upgrade 4.09.00
    KPIT GNUSH v0601 Windows Tool Chain (ELF)
    Renesas Sample Code

SH2 SH7085 (7) sci (1) ― 2011年08月18日 22時52分14秒

SCI1
しばらく間があいてしまった。
どこまでやったのか記憶が...


確かシリアルはまだやってなかったはずだ。
次はシリアルといこう。
ところがシリアルの送信がうまくいかない。
起動直後の1バイト、あるいは数バイトが文字化けする。
スクリーンショットはリセット直後に小文字の "l" を出力したものだ。
1文字ごとにリセットしている。
しかし、文字化けが終わるとその後は安定して送信できる。


ソフトの作成にはあまり自信がないのでサンプルを探してみる。
renesas にサンプルがあった。
「SCIF 調歩同期式シリアルデータ送受信機能」 さすがルネサスだ!
中身を見てみる。
自分で作成したプログラムと大して変わらない。
異なっている部分は
ボーレート設定の後
for(i=0; i<0x1000; i++); があるのと
PFC.PACRL で TXD1 と RXD1 に切り替える前に TXD1 を出力に設定してある。
PFC.PAIORL.WORD = 0x0010; //出力設定


なるほどこれか?
変更して動かしてみる。
今度は文字化けするばかりか起動直後に null code まで出力されている。


困った。
コンパイラの不具合によるものかもしれないので gcc と shc の両方で試してみる。


どちらも症状は同じだ。
これはチップのバグなのか?


この不具合、毎回出るのではない。
時々出るのだ。だから始末が悪い。


環境:High-performance Embedded Workshop Upgrade 4.09.00
    KPIT GNUSH v0601 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-SH2A (11) KPIT GNUSH + SH2A Serial Monitor ― 2011年04月12日 22時11分13秒

Memory map SH2A Serial Monitor
久しぶりに FRK-SH2A に触っているのでCQ出版の特設ページを覗いてみた。プログラムのアップデートやら訂正やらでわけがわからない状態になっている。


さて、 FRK-SH2A を動かす場合 Serial Monitor をよく使うのでその時のためのメモを残しておこう。
.vects	0x1C000000
.text	0x1C0004E0
.data	0x1C0F0000 又は 0xFFF80000
.stack	0x1C100000 又は 0xFFF89000
その他の制限
1.割り込み優先レベルは0から14までが利用可能。
2.ベクタ領域は 0x1C000000 番地固定。
3.システム予約のベクタ番号 4、6、9、11、170 使用不可。


設定: JPP1 オープン。USB コネクタのみ接続
環境: (FRK-SH2A SH7262) + (HEW Version 4.09.00.007) + (KPIT GNUSH v10.01 Windows Tool Chain (ELF)) + (SH2A Serial Monitor)

FRK-SH2A (10) SHC vs gcc (3) ― 2011年04月11日 21時39分36秒

FRK-RX62N を調べていて OptimizeLevel を size にして Optimized ライブラリを使うことによりよい結果が出たので FRK-SH2A でも試してみる。プログラムは以前と同じ。(ループ回数は変えた)


CPU は:SH7262 (FRK-SH2A)
コンパイラ: SuperH RISC engine C/C++ Compiler (V.9.03.02)
コンパイラ: KPIT GNUSH v1001
ループ回数: 1000000 回
Kpit GNUSH
OptimizeLevel	なし	size	speed	both	単位
実行時間		19.13	17.72	17.56	17.64	秒	(Newlib ライブラリ)
ObjectSize	55212	55068	58356	58044	bytes	(Newlib ライブラリ)
実行時間		4.49	3.05	2.85	2.89	秒	(Optimized ライブラリ)
ObjectSize	34908	34764	38052	37740	bytes	(Optimized ライブラリ)
Renesas SHC
OptimizeLevel	なし	size	speed	both	単位
実行時間		4.49	3.55	5.53	3.42	秒
ObjectSize	9074	8650	8746	8650	bytes

スピードについては予想以上に早くなったがサイズがとてつもなくでかい。未使用のライブラリがリンクされたような感じだ。そのうち詳しく調べてみよう。


環境: KPIT GNUSH v10.01 Windows Tool Chain (ELF)
    Renesas SuperH RISC engine C/C++ Compiler (V.9.03.02)

FRK-SH2A (9) MESを試してみる (1) ― 2010年11月19日 20時42分24秒

「SH-2AにMESを移植する」 という記事があった。
以前から MES には興味があったのでこの機会に試してみることにする。


正確に言うと移植するのではなく、移植されたものを確認するだけだ。
では、さっそく見ていこう。
1.RTCを動かすために 32.768KHzの水晶発振子を取り付ける。
  確かにOSならRTCが必要だが手元にないので後にしよう。
2.外部バス動作確認のためにFPGAボードを接続する。
  これもないので後にしよう。
3.サンプルプログラム
  ボードの動作確認のためか?
  MESの開発環境は使ってないようだ。
4.USB仮想シリアルS-Recordフォーマットローダ
  いよいよローダの作成だ。
5-1.MES対応USB仮想シリアルS-Recordフォーマットローダ
5-2.MES対応USB仮想シリアルS-RecordフォーマットローダにSCIF2 受信割り込みに対応
5-3.MES対応USB仮想シリアルS-RecordフォーマットローダにSD-CARDボード対応
6.SD-CARDボードMAI-XC95-SDを接続する
7.LANボードMAI-AX88を接続する
8.USB HOSTボードMAI-SL811を接続する
9.USB ターゲットボードMAI-USBN9604を接続する
.
.
.
ああ!残念。
MES用のローダを作成する記事だった。
移植は自分でやってね!!ということだろう。




労せずしてOSを動かしてみたいので次はTOPPERSを調べてみよう。


参照: SH-2AにMESを移植する

KPIT GNU Tools (17) GNU Windows Tool Chain ― 2010年11月17日 19時46分51秒

統廃合が進む Renesas の CPU。
今後残るのは RL78 RX SuperH V850 あたりだろうか?
しかし、SuperH V850 は統合されて別のものになりそうな気がする。


そこで気になるのが KPIT GNU Tools の対応。
M16C/M32C H8 のサポートはいずれなくなるのか?
RL78 V850 には対応するのか?


おっと、そういえば Renesas はHEW もやめる。
そうすると HEW ベースの GNU Tools は困ったことになる。
新しい IDE は KPIT の Tool Chain と共存できるのか?
あ、いやいや KPIT には Eclipse もあった。


参照: Renesas

KPIT GNU Tools (16) GNUSH v0601 Windows Tool Chain (ELF) ― 2010年11月11日 21時56分04秒

SH7237/7239
今回追加するデバイスは SH7237/SH7239
まだ入手していないので動作テストするのは先の話になる。
コンパイラのバージョンは KPIT GNU Tools GNUSH v0601
HEW のバージョンは 4.07.00.007


まずスペックを整理してみよう。
ROM Start : 0x00000000
Vector Table End : 0X000003FF
ROM End : 0x0003FFFF  (SH723x5=0x0007FFFF)
Ram1 Start : 0xFFF80000
Ram1 End : 0xFFF87FFF
Ram2 Start : 0xFFF90000  (SH723x5)
Ram2 End : 0xFFF97FFF  (SH723x5)
ここでは SH723x4 の設定だけにしよう。


ではさっそく始める。


①デバイス名を追加。
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\capp.det
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\cppapp.det
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\lib.det
 SH2a (No FPU) の項目に SH7237 を追加。
 SH2a の項目に SH7239 を追加。


②デバイス名とそれに対応するヘッダーファイル指定を追加。
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\slib.det
SH2a (No FPU)の項目に SH7237 を追加してヘッダーファイルを指定する。
SH2a の項目に SH7239 を追加してヘッダーファイルを指定する。
例)
 [SH7237]
 header\7237.h


③ヘッダーファイルを追加。
作成したヘッダーファイルを指定ディレクトリに入れる。
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\SH2a (No FPU)\header\7237.h
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\SH2a\header\7239.h


④リンカースクリプトを追加。
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\scapp.det
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\scppapp.det
SH2a (No FPU)の項目に SH7237 を追加してヘッダーファイルを指定する。
SH2a の項目に SH7239 を追加してヘッダーファイルを指定する。

 

 

[SH7237]
header\7237.h


 

 

[SH7239]
header\7239.h


⑤ベクターテーブルを追加。
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\vcapp.det

 

 




ただし、 SH7239 は FPU なしで使わなければならない。
さらにレジスタバンクも使えない。
Kpit GNUSH v0601 はこの2点がいまいちだ。


環境: (HEW Version 4.07.00.007) + (KPIT GNUSH v0601 Windows Tool Chain (ELF))
参考: KPIT GNU Tools and Support