1 | =====================================================================
|
---|
2 | QB-R5F100LE-TB ターゲット依存部
|
---|
3 | Last Modified: '15/6/2
|
---|
4 | =====================================================================
|
---|
5 |
|
---|
6 | ○概要
|
---|
7 |
|
---|
8 | QB-R5F100LE-TBターゲット依存部は,プロセッサに RL78/G13 を搭載した,
|
---|
9 | (株)ルネサスエレクトロニクス製の QB-R5F100LE-TB ボードをサポートしている.
|
---|
10 | http://japan.renesas.com/products/tools/introductory_tools/cpu_board/qb_r5f100le_tb/index.jsp
|
---|
11 |
|
---|
12 | ○カーネルの使用リソース
|
---|
13 |
|
---|
14 | カーネルは以下のリソースを使用する.
|
---|
15 |
|
---|
16 | ・ROM
|
---|
17 | コード,定数,初期値,割込みベクタを配置する.
|
---|
18 | 使用量は使用するAPIの数に依存する.
|
---|
19 |
|
---|
20 | ・RAM
|
---|
21 | データ,スタックを配置する.
|
---|
22 | 使用量はオブジェクト数に依存する.
|
---|
23 |
|
---|
24 | ・タイマ
|
---|
25 | カーネル内部のティックの生成にタイマ・アレイ・ユニットの
|
---|
26 | ユニット0 チャネル0 を使用する.
|
---|
27 | タイムティックの周期及びシステム時刻の精度は共に 1ms とする.
|
---|
28 |
|
---|
29 | ・シリアル
|
---|
30 | シリアルドライバに UART0(シリアル・アレイユニットのユニット0
|
---|
31 | チャネル{0,1}) を使用する.
|
---|
32 | プロセッサの UART0 送受信ポートはボード CN2 の 12ピン(送信)
|
---|
33 | および13ピン(受信)と結線されている.このピンをUARTドライバICや
|
---|
34 | USBシリアル変換モジュール等を利用してPCと接続することで出力を
|
---|
35 | 確認することができる.
|
---|
36 |
|
---|
37 | ○他のターゲットへの移植
|
---|
38 |
|
---|
39 | ターゲット依存部で使用するタイマおよびシリアルは,RL78/G13 の
|
---|
40 | 内蔵機能のみを使用するため,RL78 の同様のプロセッサを用いた環境には
|
---|
41 | 容易にポーティングが可能である.ポーティングに関しては,以下の初期化ルーチンに
|
---|
42 | ターゲット毎の初期化を追加すればよい.
|
---|
43 |
|
---|
44 | ・target_initialize() : target_config.c
|
---|
45 | ターゲット依存部の初期化(C言語)
|
---|
46 | ・_hardware_init_hook : target_support.asm
|
---|
47 | 低レベルのターゲット依存の初期化
|
---|
48 | スタートアップモジュールの中で,メモリの初期化の前に呼び出される
|
---|
49 | 既定ではスタートアップモジュールから利用されておらず,
|
---|
50 | コメントアウトされている.
|
---|
51 |
|
---|
52 |
|
---|
53 | ○デバッグ環境
|
---|
54 |
|
---|
55 | デバッグ環境として,E1 デバッガの使用を想定している.
|
---|
56 |
|
---|
57 |
|
---|
58 | ○コンパイラ
|
---|
59 |
|
---|
60 | 以下の開発環境を用いて動作確認を行った.
|
---|
61 |
|
---|
62 | 処理系
|
---|
63 | ルネサステクノロジ製 コンパイラ CA78K0R V1.70
|
---|
64 |
|
---|
65 | 統合開発環境
|
---|
66 | ルネサステクノロジ製 統合開発環境 Cube Suite+ V2.02.00
|
---|
67 |
|
---|
68 |
|
---|
69 | ○コンソール出力
|
---|
70 |
|
---|
71 | コンソール出力には,UART0を用いる.通信フォーマットは以下の通り.
|
---|
72 |
|
---|
73 | ・19200bps, Data 8bit, Parity none, Stop 1bit, Flow control none
|
---|
74 |
|
---|
75 |
|
---|
76 | ○アドレスマッピング (※1)
|
---|
77 |
|
---|
78 | 0x00000 - 0x0007F ベクタテーブル 128バイト
|
---|
79 | 0x00080 - 0x000Bf callt関数のテーブル用セグメント 64バイト
|
---|
80 | 0x000C0 - 0x000C3 オプションバイト領域 4バイト
|
---|
81 | 0x000C4 - 0x000CD セキュリティID 10バイト
|
---|
82 | 0x000CE - 0x000D7 オンチップデバッグ機能の使用領域 10バイト
|
---|
83 | 0x000D8 - 0x0ffff 内蔵FlashROM 約63.8KB
|
---|
84 | @@CODE ; コード部用セグメント(near)
|
---|
85 | @@BASE ; callt関数・割り込み関数用セグメント
|
---|
86 | @@LCODE ; ライブラリ・コード部用セグメント(near)
|
---|
87 | @@LBASE ; ライブラリ・callt関数用セグメント
|
---|
88 | @@CNST ; 定数データ(near)
|
---|
89 | @@R_INIT ; near初期化データ用セグメント(初期値あり)
|
---|
90 | @@R_INIS ; 初期化データ用セグメント(初期値ありsreg変数)
|
---|
91 | @@CODEL ; コード部用セグメント(far)
|
---|
92 | @@LCODEL ; ライブラリ・コード部用セグメント(far)
|
---|
93 | @@CNSTL ; ROMデータ(far)
|
---|
94 | @@RLINIT ; far初期化データ用セグメント(初期値あり)
|
---|
95 |
|
---|
96 | 0xF0000 - 0xF07FF 2nd SFR領域 2KB
|
---|
97 |
|
---|
98 | 0xF1000 - 0xF1FFF データフラッシュメモリ
|
---|
99 | 0xF2000 - 0xFEEFF ミラー領域(0x2000-0xEEFFと同じ値)
|
---|
100 | 0xFEF00 - 0xFFEDF 内蔵RAM 3.9KB (※2)
|
---|
101 | @@BITS ; boolean型変数, bit型変数用セグメント, BSEG領域
|
---|
102 | @@INIT ; データ領域用セグメント(初期値あり, near配置)
|
---|
103 | @@DATA ; データ領域用セグメント(初期値なし, near配置)
|
---|
104 | @@INIS ; データ領域用セグメント(初期値あり sreg 変数)
|
---|
105 | @@DATS ; データ領域用セグメント(初期値なし sreg 変数)
|
---|
106 | @@INITL ; データ領域用セグメント(初期値あり, far配置)
|
---|
107 | @@DATAL ; データ領域用セグメント(初期値なし, far配置)
|
---|
108 | @@CODER ; RAM配置 コード部用セグメント
|
---|
109 | @@LCODER ; RAM配置 ライブラリ・コード用セグメント
|
---|
110 | @@CNSTR ; RAM配置 ROMデータ用セグメント(near)
|
---|
111 | @@CNSTLR ; RAM配置 ROMデータ用セグメント(far)
|
---|
112 | 0xFFEE0 - 0xFFEFF 汎用レジスタ 32バイト (※2)
|
---|
113 | 0xFFF00 - 0xFFFFF SFR領域 (※2)
|
---|
114 |
|
---|
115 | (※1) @@で始まるセグメントはコンパイルにより生成される.
|
---|
116 | 「CubeSuite+ V2.01.00 統合開発環境ユーザーズマニュアル RL78,78K0Rコーディング編」の
|
---|
117 | 「3. 5 セグメント名一覧」を元にした.
|
---|
118 | http://documentation.renesas.com/doc/products/tool/doc/r20ut2774jj0100_qscd78.pdf
|
---|
119 |
|
---|
120 | (※2) ショート・ダイレクト・アドレッシング領域(0xFFE20-0xFFF1F) と一部重複する
|
---|
121 |
|
---|
122 | ○各種設定の変更
|
---|
123 |
|
---|
124 | 幾つかのパラメータは変更可能になっている.設定ファイル毎に設定可能項目
|
---|
125 | は次のようになっている.
|
---|
126 |
|
---|
127 | ●target.tfの設定項目
|
---|
128 |
|
---|
129 | INTNO_FIX_KERNEL
|
---|
130 | 固定的にカーネル管理の割込みとする割込み番号
|
---|
131 | INTNO_FIX_NONKERNEL
|
---|
132 | 固定的にカーネル管理外の割込みとする割込み番号
|
---|
133 | INHNO_FIX_KERNEL
|
---|
134 | 固定的にカーネル管理の割込みとする割込みハンドラ番号
|
---|
135 | INHNO_FIX_NONKERNEL
|
---|
136 | 固定的にカーネル管理外の割込みとする割込みハンドラ番号
|
---|
137 |
|
---|
138 |
|
---|
139 | ●target_config.h の設定項目
|
---|
140 |
|
---|
141 | ・DEFAULT_ISTKSZ
|
---|
142 | 非タスクコンテキスト用スタックサイズの規定値
|
---|
143 |
|
---|
144 | ●target_syssvc.h の設定項目
|
---|
145 |
|
---|
146 | ・BPS_SETTING
|
---|
147 | コンソールに使用するシリアルポートのボーレート(規定では 19200)
|
---|
148 | ※ 現状ではこのマクロは使用していない.
|
---|
149 |
|
---|
150 | ●CPUロックで用いる割込み優先度TMIN_INTPRIの定義
|
---|
151 |
|
---|
152 | ・C言語用の定義:
|
---|
153 | プロセッサに既定の定義位置:prc_kernel.h
|
---|
154 | ターゲット依存で定義する場合の定義位置:target_config.h(現状では未定義)
|
---|
155 |
|
---|
156 |
|
---|
157 | ○サンプルプロジェクトの実行手順
|
---|
158 | 開発環境がインストールされていることを前提とする.
|
---|
159 | 以下の説明ではパスの区切り文字としてスラッシュ '/' を使用する.
|
---|
160 |
|
---|
161 | 0. ZIP圧縮されているファイルを適当な場所へ展開する.
|
---|
162 | 展開先のパスには日本語文字や空白などを含まない方がよい.
|
---|
163 |
|
---|
164 | 1. ワークスペースファイルを開く
|
---|
165 | <展開先フォルダ>/ssp/target/qb_r5c100le_cs/ssp_rl78/ssp_rl78.mtpj をダブルクリックする.
|
---|
166 | CubeSuite+ がインストールされていれば,統合開発環境が起動する.
|
---|
167 |
|
---|
168 | 2. sample1 プロジェクトをアクティブプロジェクトにする
|
---|
169 | 既定の設定ではすでにアクティブになっている.
|
---|
170 |
|
---|
171 | 3. メニュー「ビルド→リビルドプロジェクト」を選択して,sample1プロジェクトをビルドする
|
---|
172 | 依存関係の設定により先に libkernel, sys-cfg プロジェクトのビルドが行われ,
|
---|
173 | その後,sample1 プロジェクトのビルドが実施される.
|
---|
174 | そして,アプリケーション(sample1),システムライブラリ,システムサービス,
|
---|
175 | 及びカーネルがリンクされ,実行ファイルが生成される.
|
---|
176 |
|
---|
177 | 4. プログラムの実行を確認する.
|
---|
178 |
|
---|
179 | サンプルはシリアルポートの機能を前提としている.プロセッサの
|
---|
180 | UART0 ポートがボードの CN2 12番ピン(TxD0),13番ピン(RxD0)に結線されており,
|
---|
181 | このピンおよび GNDのピンをUARTドライバICあるいはUSB-シリアル変換モジュール等を
|
---|
182 | 利用してPCに接続すると,シリアルからの出力を確認することができる.
|
---|
183 |
|
---|
184 | 次節では,E1 を利用したフラッシュへのプログラム書き込み,及び,実行の
|
---|
185 | 手順について記述する.
|
---|
186 |
|
---|
187 | 5. フラッシュROM へのプログラム書き込み
|
---|
188 |
|
---|
189 | (1) E1をPCおよびターゲットボードに接続する.
|
---|
190 | (2) メニュー「デバッグ→デバッグツールへダウンロード」を選択する.
|
---|
191 | 失敗する場合,以下を確認する.
|
---|
192 | ・E1のドライバがインストールされているかどうか.
|
---|
193 | ・E1とボードの接続が正しいかどうか.ずれていないか,向きは正しいか.
|
---|
194 | ・ターゲットボードに電源が供給されているかどうか.
|
---|
195 | 既定の設定では供給しない設定となっている.
|
---|
196 | E1から電源供給する場合は次の手順で設定変更する.
|
---|
197 | (2-1)「プロジェクト・ツリー」ウィンドウの「ssp_rl78(プロジェクト)
|
---|
198 | --> sample1(サブプロジェクト) --> RL78_E1(Serial)」項目を
|
---|
199 | 右クリックし,コンテキストメニューを表示する.
|
---|
200 | (2-2) コンテキストメニューから「プロパティ」を選択する.
|
---|
201 | (2-3) 「プロパティ」ウィンドウから「接続用設定」タブを選択する.
|
---|
202 | (2-4) 「ターゲットボードとの接続」の項目内にある,
|
---|
203 | 「エミュレータから電源供給する(最大200mA)」を「はい」にする.
|
---|
204 | (3) ダウンロードが完了すると,ターゲットは sta_ker の先頭で実行停止する.
|
---|
205 | (4) メニュー「デバッグ→実行」を選択すると,プログラムの実行を開始する.
|
---|
206 |
|
---|
207 | ○注意事項
|
---|
208 | ・リンク順序について
|
---|
209 | スタートアップモジュール(start.asm)にてRAMの初期化処理を行うためには
|
---|
210 | セクションの先頭アドレスおよび最終アドレスを知る必要がある.
|
---|
211 | それらのアドレスを取得するため segment_s.asm および segment_e.asm を
|
---|
212 | それぞれ実行モジュールの先頭と末尾にリンクする必要がある.
|
---|
213 |
|
---|
214 | segment_s.asm は sample1サブプロジェクトのリンク順序設定で最初にリンク
|
---|
215 | されるよう設定されている.一方で segment_e.asm は libkernel.lib の末尾に
|
---|
216 | リンクされるよう設定されている.
|
---|
217 |
|
---|
218 | これは,sample1サブプロジェクトで libkernel.lib のリンク順序を
|
---|
219 | 変更することができないため,一時的措置としてこのようにしている.
|
---|
220 |
|
---|
221 | 今後において,別ライブラリを追加的にリンクする場合,
|
---|
222 | libkernel.lib が末尾にリンクされるようリンク順序の設定を行う必要がある.
|
---|
223 | 末尾に配置されない場合は,変数セクションの末尾アドレスを正しく取得できず,
|
---|
224 | RAMの初期化が正しく行われない.
|
---|
225 |
|
---|
226 |
|
---|
227 | ○変更履歴
|
---|
228 | 2014/08/21 ・新規作成
|
---|
229 | 2015/6/2 ・SSP-1.3.0対応
|
---|
230 |
|
---|