source: atk2-sc3_fl850f1l/arch/v850_gcc/prc_user.txt@ 117

Last change on this file since 117 was 117, checked in by ertl-ishikawa, 9 years ago

ATK2-SC3 1.3.2 FL850F1L(RH850F1L)依存部(GCC/GHS/CCRH)を追加

File size: 11.3 KB
Line 
1
2 TOPPERS/ATK2-SC3
3 <V850プロセッサ依存部マニュアル(GCC版)>
4
5このドキュメントはV850プロセッサ依存部のGCC版情報を記述したものである.
6
7----------------------------------------------------------------------
8TOPPERS ATK2
9 Toyohashi Open Platform for Embedded Real-Time Systems
10 Automotive Kernel Version 2
11
12Copyright (C) 2013-2014 by Center for Embedded Computing Systems
13 Graduate School of Information Science, Nagoya Univ., JAPAN
14Copyright (C) 2013-2014 by FUJI SOFT INCORPORATED, JAPAN
15Copyright (C) 2013-2014 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
16Copyright (C) 2013-2014 by Renesas Electronics Corporation, JAPAN
17Copyright (C) 2013-2014 by Sunny Giken Inc., JAPAN
18Copyright (C) 2013-2014 by TOSHIBA CORPORATION, JAPAN
19Copyright (C) 2013-2014 by Witz Corporation, JAPAN
20
21上記著作権者は,以下の (1)〜(3)の条件を満たす場合に限り,本ドキュメ
22ント(本ドキュメントを改変したものを含む.以下同じ)を使用・複製・改
23変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
24(1) 本ドキュメントを利用する場合には,上記の著作権表示,この利用条件
25 および下記の無保証規定が,そのままの形でドキュメント中に含まれて
26 いること.
27(2) 本ドキュメントを改変する場合には,ドキュメントを改変した旨の記述
28 を,改変後のドキュメント中に含めること.ただし,改変後のドキュメ
29 ントが,TOPPERSプロジェクト指定の開発成果物である場合には,この限
30 りではない.
31(3) 本ドキュメントの利用により直接的または間接的に生じるいかなる損害
32 からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
33 本ドキュメントのユーザまたはエンドユーザからのいかなる理由に基づ
34 く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
35
36本ドキュメントは,AUTOSAR(AUTomotive Open System ARchitecture)仕様
37に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するものではな
38い.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利用する
39者に対して,AUTOSARパートナーになることを求めている.
40
41本ドキュメントは,無保証で提供されているものである.上記著作権者およ
42びTOPPERSプロジェクトは,本ドキュメントに関して,特定の使用目的に対す
43る適合性も含めて,いかなる保証も行わない.また,本ドキュメントの利用
44により直接的または間接的に生じたいかなる損害に関しても,その責任を負
45わない.
46
47$Id: prc_user.txt 187 2015-06-25 03:39:04Z t_ishikawa $
48----------------------------------------------------------------------
49
50○概要
51
52V850プロセッサ依存部(以下,V850依存部)は,ルネサスエレクトロニクスの
53V850E2M/V850E2Sコア(V850E2v3アーキテクチャ)または,G3M/G3Kコア(V850E3V5ア
54ーキテクチャ)を用いたLSIをサポートしている.
55
56現状サポートしているLSIは,次に2種類である.V850プロセッサ依存部では,
57プロセッサと割り込みコントローラのみを使用するため,他の
58V850E2M/V850E2SコアもしくはG3M/G3Kコアを用いたLSIへのポーティングは容
59易である.
60
61 ・V850E2/Fx4
62 ・RH850/F1L
63 ・RH850/F1H
64
65○開発環境
66
67カーネルのコンパイルは,GCC を用いている.動作確認を行なったバージョン
68は以下のものである.
69
70V850E2v3アーキテクチャ
71V850E3v5アーキテクチャ
72 ・gcc version 4.9-GNUV850_v14.01 (GCC_Build_2.01)
73 KPITのWebサイトから入手
74
75デバッガは,CS+を使用して動作確認をしている.動作確認をしたバージョン
76は次の通りである.
77
78 ・V3.00.000
79
80このバージョンでは,GCCで生成したオブジェクトのLMAに非対応である.すな
81わち,初期値付き変数のためにデータセクション(.data)のVMAとLMAが異なる
82elfファイルを作成しても,VMAの場所にデータがロードされる.オブジェクト
83ファイルのデータセクションのVMAをLMAのアドレスに上書きするRubyスクリプ
84トconv2cs+.rb を用意している.ビルド時に次の様にmakeを実行するとオブジ
85ェクトファイルが変更される.
86
87 make cs
88
89
90○周辺回路
91
92ATK2のSC1カーネルのサンプルを動作させるためには,周辺回路として,UART
93とタイマが必要となる.V850依存部では,UARTとしては,アシンクロナス・シ
94リアル・インタフェース(UARTEn)を,タイマとしては,タイマアレイユニッ
95ト(TAUn)をサポートしている.使用するチャネルはターゲット毎に異なる.
96
97
98○TAUn割込みハンドラ(in taua_timer.c)
99
100IncrementCounter(SysTimerCnt)により,SysTimerCntのソフトウェアカウンタを
101インクリメントしている.IncrementCounter(SysTimerCnt)の戻り値がE_OK以外の
102場合,ShutdownOS()を呼び出している.
103
104
105○割込み優先度
106
107CFG_INTに指定可能な割込み優先度としては,以下の値を設定可能である.
108
109V850E2M : -1 〜 -15
110V850E2S : -1 〜 -7
111G3M : -1 〜 -15
112G3K : -1 〜 -7
113
114
115○割込み属性
116
117CFG_INTでサポートしている割込み属性はない.
118
119
120○未登録の割込み
121
122未登録の割込みが発生した場合は,prc_config.c で定義されている,
123default_int_handler() を呼び出す.default_int_handler() は,発生した割
124り込みの割込み番号をコンソールに出力した後,target_exit() を呼び出す.
125
126
127○C1ISRの扱い
128
129・C1ISRにはユーザによって以下の処理が記述されるべきである.
130 ・C1ISRで使用するレジスタの内容を退避
131 ・C1ISRが実行中であることを判別するための情報を保存する
132 ・現在の実装ではiipm
133 ・退避したレジスタの復帰
134 ・eret命令でC1ISRを終了する
135
136
137○CPU例外要因情報取得
138
139・CPU例外発生した場合,ユーザは,プロテクションからCPU例外情報を取得で
140 き,取得できるのは,CPU例外発生時の以下の情報がある.
141 ・CPU例外要因番号(変数:v850_cpu_exp_no)
142 ・プログラムカウンタ(変数:v850_cpu_exp_pc)
143 ・スタックポインタ(変数:v850_cpu_exp_sp)
144 ・更に,CPU例外発生時に各レジスタはスタックに保存しているので,
145 v850_cpu_exp_spを使って保存してあるレジスタの値を取得するこ
146 とができる.保存してあるレジスタとアドレスの情報はアセンブリ
147 コードを参照する.
148
149・しかし,プロテクションフック無効の場合,上記のCPU例外要因保持用変数が
150 定義されないため,使用しないでください(使用した場合,コンパイルエラー
151 となる).
152
153
154○制限事項
155
156ep相対でアクセスするtinyデータセクションはサポートしない.
157
158
159○変更履歴
1602015/04/10
161・prc_common.tf
162 割込み優先度レベルの変更の追従忘れ
163
1642015/04/07
165・Platform_Types.h
166 stdint.h をインクルードするよう変更.
167
1682015/04/01
169・割込み優先度のレベルをG3M/E2Mは16段階に,G3K/E2Sは8段階に修正.
170
1712015/03/31
172・prc_support.S/prc_insn.h
173 PSW.EBV,EBASE,INTBP,ISPR,PMR,ICSR,INTCFG の更新時はdi状態とす
174 る必要があるため,該当箇所を修正.
175
1762015/01/07
177・prc_support.S
178 _ei_exception_entry で保存していないr20を使用していた問題を修正.
179
1802014/12/24
181・prc.tf,prc_config.c,prc_insn.h,prc_support.S
182 V850E3v5におけるEIレベル割込みを直接ベクタ方式からテーブル参照方式へ変更.
183 ※v850-elf-objdump -d 実行時,Segmentation faultが発生するが,実行モ
184 ジュールの生成には問題ない.正しく生成するためには,
185 v850-elf-objdumpに以下のオプションを追加する.
186 --architecture=v850-rh850
187
1882014/12/10
189・start.S
190 dataセクションの初期化の終了条件を__idata_endのアドレスは初期化しな
191 いように修正.
192
1932014/12/09
194・コンパイラをKPITから公開されている4.9に変更.
195・CS+でデータセクションを正しくロードするため,VMAをLMAに上書きするス
196 クリプトを追加.
197
1982014/12/05
199・v850e2v3において,PMRを設定した後にSYNCMを実行するように変更.
200・v850e2v3の対象コンパイラをv850e3v5と合わせて4.9系に変更.
201
2022014/12/04
203・prc_config.h
204 x_set_ipm()でPMRを変更していたが,OS割込み禁止もPMRで実現されている
205 ため,API実行中に割込みがOS割込み禁止以下の値となってしまう問題を修
206 正.
207
2082014/11/15
209・prc_support.S
210 _interruptで多重割込みで破壊されるr2を使用していた問題を修正.
211
2122014/11/05
213・tauj_hw_counter.c
214 ハードウェアカウンタとして使用するTAUJのチャネルを変更できるように変
215 更.
216
2172014/10/23
218・Makefile.prc
219 ・コアタイプ(RH850G3K や RH850G3M)をターゲット依存部から受け取り,
220 RH850G3Kの場合は,コンパイルオプションに -msoft-float を追加.
221 RH850G3MかつUSE_HFLOATが指定された場合は,FPUを有効にするためのマ
222 クロとコンパイルオプションを有効にする.定義されていなければ,
223 -msoft-floatとする.
224
2252014/10/17
226・prc_support.S
227 ・アイドル時にdiにより割り込みを禁止してからhaltを呼び出すように変更.
228
2292014/10/15
230・prc_support.S
231 ・ベクタテーブルから例外に応じて,_fe_exception_entry/
232 _ei_exception_entry を呼び出すように変更.
233
2342014/10/14
235・prc_support.S
236 ・アイドル時にhaltを呼び出すように変更.
237 ・ディスパッチャのアイドルループにおいて,callevelを変更しないように修正.
238 ・IPSRを変更後,syncpを呼び出すように変更.
239
2402014/10/10
241・prc_support.S
242 dispatch_r で r30(ep)の復帰時のベースアドレスに更新したspを使用して
243 た問題を修正.
244
2452014/09/25
246・v850e2_fx4.h ターゲット依存部で定義した型番からコアのタイプの指定マ
247 クロ(_V850E2M_ or _V850E2S_)を定義するよう変更.
248
2492014/09/14
250・PMRを変更した後は,"syncp"を実行して設定が反映されるのを同期するよう
251 に変更.
252
2532014/09/08
254・RLIN3 UART ドライバのポートを変更可能に.
255
2562014/08/19
257・V850のターゲット指定を-mv850e2に変更.-mv850e2v3だと以下の問題が発生
258 するため.
259 ・アセンブラファイルに書かれたbranch命令が32bit命令としてアセンブルされる.
260 ・不正な命令が出力される
261 trncf.sw r8,r8
262
2632014/07/17
264・RH850のサポートの追加.
265
2662014/07/15
267・prc_support.S
268 ・int_nestedでisrcb_tableのアドレスの取得に問題があったため修正.
269 ・割込み・ディスパッチャで保存する復帰するレジスタの変更.
270
2712014/07/10
272・start.S
273 hardware_init_hookとsoftware_init_hookへのジャンプをラベル経由ではな
274 く,レジスタ経由に変更.
275・ターゲット依存部の名称変更
276 v850e2_xxx から v850_xxx に変更
277・V850E3V5のサポート
278 ・マクロ __v850e2v3__ と __v850e3v5__ により切り分け
279 ・割込みコントローラに対するアクセスを関数やマクロ経由に変更
280 ・V850E3V5ではコアと統合されているためアクセス方法が異なる.
281・tfのベクターテーブルの出力用コードをCX版と共有するために,出力用コード
282 prc_common.tfにまとめ,Os_Lcfg_asm.Sに出力するように変更.
283・prc_support.Sをcxとツール変換で共有するために変更.
284 ・prc_support.S/start.S/v850asm.inc
285
2862014/07/09
287・prc_support.S で Lea で 32bit即値をロードしていた箇所を mov に変更.
288
2892014/02/26
290・ディスパッチャと割込みの出入口で保存・復帰するレジスタの修正.
291 割込み出入口 : r2,r5を保存するよう変更
292 ディスパッチャ : r31, r2, ep(r30)を保存しないように変更
293・割込み出口処理で current_iintpri を常に元の値に戻すように変更.
294
2952014/01/10
296・静的APIファイルを削除
297
2982013/10/01
299・prc_support.S
300 OUTER_LOCK_OS_INT において,以下の命令を2回実行していたが,1回でよい
301 ため,2回目を削除.
302 Lea _pmr_isr2_mask, AMARG(reg13)
303 ei_exception_2/fe_exception_2 において,_kerflgのアドレスを読み込ん
304 だ後,内容を読み込まずに比較していた問題を修正.
305
3062013/09/17
307・V850E2Sをサポートしたため,アーキテクチャ依存部の名称を v850e2m から
308 v850e2 に変更.
309・コアのマクロをv850e2_fx4.h v850e2_px4.h で定義するように変更.それ
310 に伴い,v850e2_fx4l.h を追加.
311
3122013/09/14
313・コアのマクロを追加
314 _V850E2S_
315 _V850E2M_
316
3172013/08/31
318・CubeSuite+のバージョンを更新.
319
3202013/08/07
321・0x50 : EIレベルソフトウェア例外 と 0x70 : 浮動小数点演算例外 で,
322_ei_exception_entry を呼び出すように修正.
323
3242013/06/24
325・prc_support.S prc_def.csv prc_offset.tf
326 ・割込みのエントリでの多重割込み時のスタックのチェック方法を スタック
327 残量チェック方式 に変更.
328・uart.c
329 ・"Os_Lcfg.h" をインクルードするよう変更.
330
3312013/04/23
332・100ナノ秒単位で時間計測可能な get_tim_100ntime() を追加.
333 ・タイマの分周比を2^5から2^0に変更.
334・SystemTime100NsType を追加(uint32)
335
3362013/04/20
337・uart.c
338 ・プリスケーラーの設定値をターゲット依存部で定義できるように変更.
339・taua_timer.c
340 ・カウント値をターゲット依存部で定義できるように変更.
341・v850e2_fx4.h
342 ・FG4用の定義を追加.
343 ・カウント値を削除.
344・v850e2_fx4.c
345 ・write_protected_reg()で保護レジスタを書き込む時にdi/eiを無条件で実
346 行していた問題を修正.
347・v850e2_px4.h
348 ・カウント値を削除.
349
3502013/04/18
351・get_tim_utime()
352 ・タイマのオーバーフロー時の扱いに問題があったため修正.
353・target_timer_get_current()
354 ・ハードウェアの仕様はダウンカウントであるが,アップカウントとしてコ
355 ードが記述されていたため修正.
356
3572013/03/25
358・start_r で ei をしていたが,必要無いため削除.
359
3602013/02/05
361・CHECK_STKSZ_ALIGN/CHECK_FUNC_ALIGN/CHECK_STACK_ALIGN が他の箇所で定
362 義されていれば定義しないように変更.
363
3642013/02/01
365・最初のリリース.
366
367以上.
Note: See TracBrowser for help on using the repository browser.