トラ技biosとかの話(D78F0730)
先週の記事
https://ameblo.jp/fc2miha/entry-12833772946.html
では、トラ技基盤のドライバーをインストールして
トラ技biosが起動するところまで確認しました。
しかし、
コンパイラとかライブラリが無いとそれ以上進めなかったので
これを購入。
『USBマイコンでパソコンI/O![78K0基板付き]―Windowsから自在にコントロール (マイコン活用シリーズ)』
中古なので2000円ぐらい。
300円で買った基盤を動かすために2000円の出費。
ま、趣味なんで。良いんす。
ちなみに、並べて写真を撮ると、そっくりですね。
裏面にNEC、マルツパーツ、トラ技、村田製作所のロゴと
78K0 USBマイコン基板 TR0808U
と印刷されています。
それぞれ左が秋月で右が本のおまけ
で、わかったことを書いていきますね。
■スペック
CPU:μPD78F0730
8ビット
クロック:16Mhz
メモリ:
ROM:16Kバイト
RAM:3Kバイト(高速1Kバイト)
タイマー:5チャンネル
インターフェース
USB2.0
GPIO 19本(本基板では15本使用可能)
UART、PWM
AD/DAコンバーターは無い
■ピン配置
CN1
15:GND
16:V50
17:P12
18:P11
19:P10
20:GND
21:GND
22:FLMD0
23:~RESET
24:P30
25:P01
26:P00
27:P120
28:GND
CN2
14:GND
13:V50
12:P31
11:P32
10:P61/LED
9:P60
8:VIO
7:P33
6:P17
5:P16
4:P15
3:P14
2:P13
1:GND
■トラ技基盤のメモリマップ
FFFF
特殊機能レジスタ
FEFFF
内部高速RAM(1024バイト)
FB00
USB用領域
---------
使用不可領域
F7FF
内部拡張RAM(2048バイト)
ユーザプログラム領域
F000
EFFF
使用不可
4000
3FFF
フラッシュメモリ(16Kバイト)
内蔵ROM
0000
■トラ技bios起動時のメモリマップ0000~3FFF(フラッシュメモリ)の詳細
3FFF
ユーザプログラム領域
2000
1FFF
トラ技bios格納領域
1800
ブートコード格納領域
ベクタテーブル等
0000
■トラ技biosのコマンド
load:HEXファイルをRAM上にロードする
ex...
load
パラメータ
無し
使い方
teratermで接続してloadコマンドを入力すると
Drop a HEX file.
と出るので
hexファイルをドラッグしてteratermにドロップ
バイナリを指定してOK
complete
と出れば成功
flash:HEXファイルをフラッシュメモリにロードする
ex...
flash
パラメータ
無し
使い方
loadと同じようで違う。
プログラムは1Kバイト単位でしか転送できないので
コマンドの指示に従って最大8回転送する必要がある
teratermで接続してflashコマンドを入力すると
2000-23FF の範囲を含むHEXファイルを入力してください
Drop a HEX file.
と出るので、
hexファイルをドラッグしてteratermにドロップ
complate
と出て続けて
2400-27FF の範囲を含むHEXファイルを入力してください
と出るので後は繰り返し。
プログラムの大きさによって繰り返す回数が異なるが
必要な回数が終わったらctrl+cで終了
hexファイルは分割する必要はなく、トラ技biosがわで適切に書き込んでくれるようです。
wr:任意の番地に任意のデータを書き込む
ex...
wr f000 10
パラメータ
メモリ番地 値
dump:任意の番地のメモリ内容をdumpする
ex...
dump 0 2000
パラメータ
開始番地 バイト数
jmp:任意の番地にジャンプする
ex...
jmp F000
パラメータ
プログラムを実行する番地
■開発環境のセットアップ
アセンブラと統合開発環境をインストール
ra78k0_w401_j.exe
上記を起動してデフォルトのままインストール
(クリックして互換性のトラブルシューティングで
WindowsXP(ServicePack3)でインストールするとよろしい)
C言語コンパイラをインストール
cc78k0_w400_j.exe
上記を起動してデフォルトのままインストール
(ここも右クリックして互換性のトラブルシューティングで
WindowsXP(ServicePack3)でインストールするとよろしい)
デバイスファイルをインストール
df780731_v110.exe
上記exeを実行すると解凍先を聞かれるのでc:¥CQを指定して解凍
スタートメニュー→NEC Electronics Tools→デバイスファイルインストーラーを起動
インストールをクリックして
C:¥CQ¥df780731_v1.10¥NECSETUP.INI
を指定して次へ→同意
あとはデフォルトのまま進む
レジストリの所にμPD78F0730とμPD78F0731が表示されるはず。
終了しておく
■開発環境の使い方
起動してワークスペースを作る
スタートメニュー→NEC Electronics Tools→PM+V6.30
起動したら
ファイル→ワークスペースの新規作成
ワークスペース・ファイル名とフォルダ位置を入力
次へ
使用ツールの指定の画面になる
・・・
ここまでやって
買った本の通りにならない。困った。投資が回収できない。回収するのは心の栄養ね。
・・・・・試行錯誤・・・・・・
とりあえず、やった事。
/*たぶんここは関係ない。
* RENESASさんからe2_studioをダウンロードしてインストール
* https://www.renesas.com/jp/ja/software/D4001299.html
* なんかすごく時間がかかるので
* 途中で飽きて
*たぶんここまでは関係ない。
*/
元の本に戻って
cc78k0_w400_j.exeを再インストールした。
途中でWindowsが気を使ってくれて、互換性が何とかの画面になって
正常にインストールできなかった方のボタンをクリックしたところ
なんか、うまく行ったっぽい
使用ツールの指定の画面になる
CC78K0の所をW4.00 RA78K0の所をW4.01にしてOK
st78k9p.dllが見つからないといわれる。
OKを押すと今度は
ra78k0p.dllが無いといわれる。
以下同様に3個のdllが無いといわれ全部で5個のdllが無いらしい。
ra78k0_w401_j.exeの方も互換モードでインストールする必要があるっぽいですね。
ra78k0_w401_j.exeを右クリックして互換性のトラブルシューティングとやって、
WindowsXP(ServicePack3)でインストールしたら、
PM+を起動するショートカットをWindowsXP(ServicePack3)互換設定にする
上記の操作で次に進めた。もうDLLが無いとは言わせないよ。
あとはデフォルトのままで次へをクリック。最後に完了をクリックする。
ワークスペースにプログラムを追加
作成したワークスペースを閉じている場合は
ファイル→ワークスペースを開く
として開く。
ファイル→新規作成一つサブウインドウが開くのでそこでプログラムを入力
void main()
{
}
で
ファイル→名前を付けて保存
適当にファイル名つけて今はsample1.cとした。
保存。
で
ワークスペースに最初から出ているProjectWindowでソースファイルの所を
右クリック→ソースファイルの追加
さっきのファイル(sample1.c)を選択して開く
ソースファイルの中に追加される。
コンパイル
ビルドのボタンを押すまたはF7でもよいらしい
じゃ、F7で。
なんかうまく行ったっぽい。
こんな感じで表示された。
"C:¥Program Files (x86)¥NEC Electronics Tools¥CC78K0¥W4.00¥bin¥cc78k0.exe" -cF0730 -y"C:¥Program Files¥NEC Electronics Tools¥DEV" -_msgoff sample1.c
Compilation complete, 0 error(s) and 0 warning(s) found.
"C:¥Program Files (x86)¥NEC Electronics Tools¥RA78K0¥W4.01¥bin¥lk78k0.exe" -y"C:¥Program Files¥NEC Electronics Tools¥DEV" -_msgoff -oa.lmf "..¥..¥..¥..¥Program Files (x86)¥NEC Electronics Tools¥CC78K0¥W4.00¥lib78k0¥s0l.rel" -pa.map -bcl0.lib -bcl0f.lib -i"C:¥Program Files (x86)¥NEC Electronics Tools¥CC78K0¥W4.00¥lib78k0" -s sample1.rel
Link complete, 0 error(s) and 0 warning(s) found.
"C:¥Program Files (x86)¥NEC Electronics Tools¥RA78K0¥W4.01¥bin¥oc78k0.exe" -y"C:¥Program Files¥NEC Electronics Tools¥DEV" -_msgoff a.lmf
Object Conversion Complete, 0 error(s) and 0 warning(s) found.
Build Total error(s) : 0 Total warning(s) : 0
□トラ技bios用になにかする
なになに、本によると
CDの中のtr0808.exeを解凍してcommonの中にあるファイルを5個コピーして
プロジェクトフォルダーにコピー。
RAMAPP.dr、RamStart.asm、ROMAPP.dr、RomStart.asm、trgbios.h
コピーしたファイルの
RAMAPP.dr、ROMAPP.drをPM+で開いて
MERGE @@LCODE : =
の行をコメントアウトする
#MERGE @@LCODE : = xxxx
xxxxはそれぞれ異なる
そしてさらに、
サンプルプログラムを以下に書き換える
#pragma sfr
void main()
{
PM6.1 = 0;
while(1){
short i;
for(i=0;i<30000;i++){
}
P6.1 ^= 0x01;
}
}
コンパイルオプション変更
ツール→コンパイラオプションの設定
機能拡張→C++コメントの使用を許可するにチェックを付ける
スタートアップルーチン→標準のスタートアップルーチンを使用するのチェックを外す
標準のライブラリを使用するのチェックを外す
ソースファイルに先ほどコピーしたRamStart.asmをプロジェクトに追加
方法は
ProjectWindowでソースファイルの所を
右クリック→ソースファイルの追加
プロジェクト関連ファイルにRamStart.drを追加
方法は
ProjectWindowでプロジェクト関連ファイルの所を
右クリック→プロジェクト関連ファイルの追加
リンクの設定
ツール→リンカオプションの設定
出力ファイル名をsample1.lmf
ということで、なんか色々設定をいじった。
で
ビルド
で、
load
ドラッグアンドップ
jmp f000
動かん。ピクリともしない。
・・・・・試行錯誤・・・・・・
・・・
・・
・
・
・
・・
ん、3時間経過
なんとか動くように調整できた。
■まとめ。
Windows10の場合
互換モードでインストールしないとうまく行かないっす。
□統合開発環境のインストール
ra78k0_w401_j.exe
インストーラーの実行は右クリックして互換性のトラブルシューティングでWindowsXP(ServicePack3)でインストールする。
上記を起動してデフォルトのままインストール
□C言語コンパイラをインストール
cc78k0_w400_j.exe
インストーラーの実行は右クリックして互換性のトラブルシューティングでWindowsXP(ServicePack3)でインストールする。
上記を起動してデフォルトのままインストール
□起動用アイコンもWindowsXP(ServicePack3)の互換モードに設定する。
上記2つのツールの起動アイコンは互換モードの設定をする。
□デバイスファイルをインストール
df780731_v110.exe
上記exeを実行すると解凍先を聞かれるのでc:¥CQを指定して解凍
スタートメニュー→NEC Electronics Tools→デバイスファイルインストーラーを起動
インストールをクリックして
C:¥CQ¥df780731_v1.10¥NECSETUP.INI
を指定して次へ→同意
あとはデフォルトのまま進む
レジストリの所にμPD78F0730とμPD78F0731が表示されるはず。
終了しておく
□ファイルを取りそろえる。
適当な場所でプロジェクト用にフォルダを作成
□プログラム本体をプロジェクト用にフォルダに作成
[sample1.c]
#pragma sfr
void main()
{
PM6.1 = 0;
while(1){
short i;
for(i=0;i<30000;i++){
}
P6.1 ^= 0x01;
}
}
□以下の4ファイルをプロジェクトファイル内に作成
[ramstart.asm]
NAME @ramstart
EXTRN _main
TSTA CSEG AT 0F000H
trgstart:
BR _main
END
[RAMAPP.dr]
memory ROM : ( 00000H, 01800H )
memory BROM : ( 01800H, 00800H )
memory UROM : ( 02000H, 02000H )
memory IXRAM : ( 0F000H, 00800H )
memory RAM : ( 0FB00H, 00500H )
#プログラム中で明示的に定義されていないセクションの配置アドレスを指定する
MERGE @@CODE : = IXRAM
MERGE @@CNST : = IXRAM
MERGE @@DATA : = IXRAM
[ROMAPP.dr]
memory ROM : ( 00000H, 01800H )
memory BROM : ( 01800H, 00800H )
memory UROM : ( 02000H, 02000H )
memory IXRAM : ( 0F000H, 00800H )
memory RAM : ( 0FB00H, 00500H )
#プログラム中で明示的に定義されていないセクションの配置アドレスを指定する
MERGE @@CODE : = UROM
MERGE @@CNST : = UROM
MERGE @@DATA : = IXRAM
[romstart.asm]
NAME @romstart
EXTRN _main
TSTA CSEG AT 02000H
trgstart:
BR _main
END
□トラ技biosのヘッダーをコピーして作成
toragi.h (これはCDからコピーする)
□起動してワークスペースを作る
スタートメニュー→NEC Electronics Tools→PM+V6.30
起動したら
ファイル→ワークスペースの新規作成
ワークスペース・ファイル名とフォルダ位置を入力
次へ
□使用ツールの指定の画面になる
詳細設定をクリック
CC78K0の所をW4.00 にチェックを付ける
RA78K0の所をW4.01 にチェックを付ける
でOK
次へをクリック
□ソースファイルの設定になる
追加をクリックして
RamStart.asm
samle1.c
を指定
開くをクリック
次へ
残りはデフォルトで次へで進めて
完了をクリック
□設定を行う
ツール→コンパイラオプションの設定→機能拡張
C++コメントの使用を許可する
スタートアップルーチン→標準のスタートアップルーチンを使用するのチェックを外す
標準ライブラリを使用するのチェックを外す
出力→
アセンブラ・ソース・モジュール・ファイル出力のチェックを入れる
Cソース付き(インクルード非展開)にする
OK
ツール→リンカオプション→その他
ディレクティブファイル 参照してRAMAPR.drを指定
ツール→オブジェクトコンバーターオプションの設定→出力1
オブジェクト充てんのチェックを外す
OK
で、ビルド。
プロジェクトフォルダにhexファイルが出来る
loadコマンドで送り込んで
jmp f0000 実行。
おおーLEDぴかぴかしています。成功ですね。