source: atk2-sc3-1.4.0-ntisr/arch/v850_gcc/prc_user.txt@ 172

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

ATK2-SC3 1.4.0 RH850依存部 非信頼C2ISR対応を追加

  • Property svn:executable set to *
File size: 14.9 KB
Line 
1
2 TOPPERS/ATK2-SC3
3 <V850プロセッサ依存部マニュアル(GCC版)>
4
5このドキュメントはV850プロセッサ依存部のGCC版情
6報を記述したものである.
7
8----------------------------------------------------------------------
9TOPPERS ATK2
10 Toyohashi Open Platform for Embedded Real-Time Systems
11 Automotive Kernel Version 2
12
13Copyright (C) 2013-2014 by Center for Embedded Computing Systems
14 Graduate School of Information Science, Nagoya Univ., JAPAN
15Copyright (C) 2013-2014 by FUJI SOFT INCORPORATED, JAPAN
16Copyright (C) 2013-2014 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
17Copyright (C) 2013-2014 by Renesas Electronics Corporation, JAPAN
18Copyright (C) 2013-2014 by Sunny Giken Inc., JAPAN
19Copyright (C) 2013-2014 by TOSHIBA CORPORATION, JAPAN
20Copyright (C) 2013-2014 by Witz Corporation, JAPAN
21
22上記著作権者
23は,以下の (1)〜(3)の条件を満たす場合に限り,本ドキュメ
24ント(本ドキュメントを改変したものを含む.以下同じ)を使用・複製・改
25変・再é…
26å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
27(1) 本ドキュメントを利用する場合には,上記の著作権表示,この利用条件
28 および下記の無保証規定が,そのままの形でドキュメント中に含まれて
29 いること.
30(2) 本ドキュメントを改変する場合には,ドキュメントを改変した旨の記述
31 を,改変後のドキュメント中に含めること.ただし,改変後のドキュメ
32 ントが,TOPPERSプロジェクト指定の開発成果物である場合には,この限
33 りではない.
34(3) 本ドキュメントの利用により直接的または間接的に生じるいかなる損害
35 からも,上記著作権者
36およびTOPPERSプロジェクトをå…
37è²¬ã™ã‚‹ã“と.また,
38 本ドキュメントのユーザまたはエンドユーザからのいかなる理由に基づ
39 く請求からも,上記著作権者
40およびTOPPERSプロジェクトをå…
41è²¬ã™ã‚‹ã“と.
42
43本ドキュメントは,AUTOSAR(AUTomotive Open System ARchitecture)仕様
44に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するものではな
45い.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利用する
46者
47に対して,AUTOSARパートナーになることを求めている.
48
49本ドキュメントは,無保証で提供されているものである.上記著作権者
50およ
51びTOPPERSプロジェクトは,本ドキュメントに関して,特定の使用目的に対す
52る適合性も含めて,いかなる保証も行わない.また,本ドキュメントの利用
53により直接的または間接的に生じたいかなる損害に関しても,その責任を負
54わない.
55
56$Id: prc_user.txt 187 2015-06-25 03:39:04Z t_ishikawa $
57----------------------------------------------------------------------
58
59○概要
60
61V850プロセッサ依存部(以下,V850依存部)は,ルネサスエレクトロニクスの
62V850E2M/V850E2Sコア(V850E2v3アーキテクチャ)または,G3M/G3Kコア(V850E3V5ア
63ーキテクチャ)を用いたLSIをサポートしている.
64
65現状サポートしているLSIは,次に2種類である.V850プロセッサ依存部では,
66プロセッサと割り込みコントローラのみを使用するため,他の
67V850E2M/V850E2SコアもしくはG3M/G3Kコアを用いたLSIへのポーティングは容
68易である.
69
70 ・V850E2/Fx4
71 ・RH850/F1L
72 ・RH850/F1H
73
74○開発環境
75
76カーネルのコンパイルは,GCC を用いている.動作確認を行なったバージョン
77は以下のものである.
78
79V850E2v3アーキテクチャ
80V850E3v5アーキテクチャ
81 ・gcc version 4.9-GNUV850_v14.01 (GCC_Build_2.01)
82 KPITのWebサイトからå…
83¥æ‰‹
84
85デバッガは,CS+を使用して動作確認をしている.動作確認をしたバージョン
86は次の通りである.
87
88 ・V3.00.000
89
90このバージョンでは,GCCで生成したオブジェクトのLMAに非対応である.すな
91わち,初期値付き変数のためにデータセクション(.data)のVMAとLMAが異なる
92elfファイルを作成しても,VMAの場所にデータがロードされる.オブジェクト
93ファイルのデータセクションのVMAをLMAのアドレスに上書きするRubyスクリプ
94トconv2cs+.rb を用意している.ビルド時に次の様にmakeを実行するとオブジ
95ェクトファイルが変更される.
96
97 make cs
98
99
100○周辺回路
101
102ATK2のSC1カーネルのサンプルを動作させるためには,周辺回路として,UART
103とタイマが必
104要となる.V850依存部では,UARTとしては,アシンクロナス・シ
105リアル・インタフェース(UARTEn)を,タイマとしては,タイマアレイユニッ
106ト(TAUn)をサポートしている.使用するチャネルはターゲット毎に異なる.
107
108
109○TAUn割込みハンドラ(in taua_timer.c)
110
111IncrementCounter(SysTimerCnt)により,SysTimerCntのソフトウェアカウンタを
112インクリメントしている.IncrementCounter(SysTimerCnt)の戻り値がE_OK以外の
113場合,ShutdownOS()を呼び出している.
114
115
116○割込み優å…
117ˆåº¦
118
119CFG_INTに指定可能な割込み優å…
120ˆåº¦ã¨ã—ては,以下の値を設定可能である.
121
122V850E2M : -1 〜 -15
123V850E2S : -1 〜 -7
124G3M : -1 〜 -15
125G3K : -1 〜 -7
126
127
128○割込み属性
129
130CFG_INTでサポートしている割込み属性はない.
131
132
133○未登録の割込み
134
135未登録の割込みが発生した場合は,prc_config.c で定義されている,
136default_int_handler() を呼び出す.default_int_handler() は,発生した割
137り込みの割込み番号をコンソールに出力した後,target_exit() を呼び出す.
138
139
140○C1ISRの扱い
141
142・C1ISRにはユーザによって以下の処理が記述されるべきである.
143 ・C1ISRで使用するレジスタの内
144容を退避
145 ・C1ISRが実行中であることを判別するための情
146報を保存する
147 ・現在の実装
148ではiipm
149 ・退避したレジスタの復帰
150 ・eret命令でC1ISRを終了する
151
152
153○CPU例外要因情
154報取得
155
156・CPU例外発生した場合,ユーザは,プロテクションからCPU例外情
157報を取得で
158 き,取得できるのは,CPU例外発生時の以下の情
159報がある.
160 ・CPU例外要因番号(変数:v850_cpu_exp_no)
161 ・プログラムカウンタ(変数:v850_cpu_exp_pc)
162 ・スタックポインタ(変数:v850_cpu_exp_sp)
163 ・更に,CPU例外発生時に各レジスタはスタックに保存しているので,
164 v850_cpu_exp_spを使って保存してあるレジスタの値を取得するこ
165 とができる.保存してあるレジスタとアドレスの情
166報はアセンブリ
167 コードを参ç…
168§ã™ã‚‹ï¼Ž
169
170・しかし,プロテクションフック無効の場合,上記のCPU例外要因保持用変数が
171 定義されないため,使用しないでください(使用した場合,コンパイルエラー
172 となる).
173
174
175○制限事項
176
177
178ep相対でアクセスするtinyデータセクションはサポートしない.
179
180
181○変更履歴
1822015/04/10
183・prc_common.tf
184 割込み優å…
185ˆåº¦ãƒ¬ãƒ™ãƒ«ã®å¤‰æ›´ã®è¿½å¾“忘れ
186
1872015/04/07
188・Platform_Types.h
189 stdint.h をインクルードするよう変更.
190
1912015/04/01
192・割込み優å…
193ˆåº¦ã®ãƒ¬ãƒ™ãƒ«ã‚’G3M/E2Mは16段階に,G3K/E2Sは8段階に修正.
194
1952015/03/31
196・prc_support.S/prc_insn.h
197 PSW.EBV,EBASE,INTBP,ISPR,PMR,ICSR,INTCFG の更新時はdi状æ…
198‹ã¨ã™
199 る必
200要があるため,該当箇所を修正.
201
2022015/01/07
203・prc_support.S
204 _ei_exception_entry で保存していないr20を使用していた問題を修正.
205
2062014/12/24
207・prc.tf,prc_config.c,prc_insn.h,prc_support.S
208 V850E3v5におけるEIレベル割込みを直接ベクタ方式からテーブル参ç…
209§æ–¹å¼ã¸å¤‰æ›´ï¼Ž
210 ※v850-elf-objdump -d 実行時,Segmentation faultが発生するが,実行モ
211 ジュールの生成には問題ない.正しく生成するためには,
212 v850-elf-objdumpに以下のオプションを追加する.
213 --architecture=v850-rh850
214
2152014/12/10
216・start.S
217 dataセクションの初期化の終了条件を__idata_endのアドレスは初期化しな
218 いように修正.
219
2202014/12/09
221・コンパイラをKPITからå…
222¬é–‹ã•ã‚Œã¦ã„ã‚‹4.9に変更.
223・CS+でデータセクションを正しくロードするため,VMAをLMAに上書きするス
224 クリプトを追加.
225
2262014/12/05
227・v850e2v3において,PMRを設定した後にSYNCMを実行するように変更.
228・v850e2v3の対象コンパイラをv850e3v5と合わせて4.9系に変更.
229
2302014/12/04
231・prc_config.h
232 x_set_ipm()でPMRを変更していたが,OS割込み禁止もPMRで実現されている
233 ため,API実行中に割込みがOS割込み禁止以下の値となってしまう問題を修
234 正.
235
2362014/11/15
237・prc_support.S
238 _interruptで多重割込みで破壊されるr2を使用していた問題を修正.
239
2402014/11/05
241・tauj_hw_counter.c
242 ハードウェアカウンタとして使用するTAUJのチャネルを変更できるように変
243 更.
244
2452014/10/23
246・Makefile.prc
247 ・コアタイプ(RH850G3K や RH850G3M)をターゲット依存部から受け取り,
248 RH850G3Kの場合は,コンパイルオプションに -msoft-float を追加.
249 RH850G3MかつUSE_HFLOATが指定された場合は,FPUを有効にするためのマ
250 クロとコンパイルオプションを有効にする.定義されていなければ,
251 -msoft-floatとする.
252
2532014/10/17
254・prc_support.S
255 ・アイドル時にdiにより割り込みを禁止してからhaltを呼び出すように変更.
256
2572014/10/15
258・prc_support.S
259 ・ベクタテーブルから例外に応じて,_fe_exception_entry/
260 _ei_exception_entry を呼び出すように変更.
261
2622014/10/14
263・prc_support.S
264 ・アイドル時にhaltを呼び出すように変更.
265 ・ディスパッチャのアイドルループにおいて,callevelを変更しないように修正.
266 ・IPSRを変更後,syncpを呼び出すように変更.
267
2682014/10/10
269・prc_support.S
270 dispatch_r で r30(ep)の復帰時のベースアドレスに更新したspを使用して
271 た問題を修正.
272
2732014/09/25
274・v850e2_fx4.h ターゲット依存部で定義した型番からコアのタイプの指定マ
275 クロ(_V850E2M_ or _V850E2S_)を定義するよう変更.
276
2772014/09/14
278・PMRを変更した後は,"syncp"を実行して設定が反映されるのを同期するよう
279 に変更.
280
2812014/09/08
282・RLIN3 UART ドライバのポートを変更可能に.
283
2842014/08/19
285・V850のターゲット指定を-mv850e2に変更.-mv850e2v3だと以下の問題が発生
286 するため.
287 ・アセンブラファイルに書かれたbranch命令が32bit命令としてアセンブルされる.
288 ・不正な命令が出力される
289 trncf.sw r8,r8
290
2912014/07/17
292・RH850のサポートの追加.
293
2942014/07/15
295・prc_support.S
296 ・int_nestedでisrcb_tableのアドレスの取得に問題があったため修正.
297 ・割込み・ディスパッチャで保存する復帰するレジスタの変更.
298
2992014/07/10
300・start.S
301 hardware_init_hookとsoftware_init_hookへのジャンプをラベル経由ではな
302 く,レジスタ経由に変更.
303・ターゲット依存部の名称変更
304 v850e2_xxx から v850_xxx に変更
305・V850E3V5のサポート
306 ・マクロ __v850e2v3__ と __v850e3v5__ により切り分け
307 ・割込みコントローラに対するアクセスを関数やマクロ経由に変更
308 ・V850E3V5ではコアと統合されているためアクセス方法が異なる.
309・tfのベクターテーブルの出力用コードをCX版とå…
310±æœ‰ã™ã‚‹ãŸã‚ã«ï¼Œå‡ºåŠ›ç”¨ã‚³ãƒ¼ãƒ‰
311 prc_common.tfにまとめ,Os_Lcfg_asm.Sに出力するように変更.
312・prc_support.Sをcxとツール変換でå…
313±æœ‰ã™ã‚‹ãŸã‚ã«å¤‰æ›´ï¼Ž
314 ・prc_support.S/start.S/v850asm.inc
315
3162014/07/09
317・prc_support.S で Lea で 32bit即値をロードしていた箇所を mov に変更.
318
3192014/02/26
320・ディスパッチャと割込みの出å…
321¥å£ã§ä¿å­˜ãƒ»å¾©å¸°ã™ã‚‹ãƒ¬ã‚¸ã‚¹ã‚¿ã®ä¿®æ­£ï¼Ž
322 割込み出å…
323¥å£ : r2,r5を保存するよう変更
324 ディスパッチャ : r31, r2, ep(r30)を保存しないように変更
325・割込み出口処理で current_iintpri を常にå…
326ƒã®å€¤ã«æˆ»ã™ã‚ˆã†ã«å¤‰æ›´ï¼Ž
327
3282014/01/10
329・静的APIファイルを削除
330
3312013/10/01
332・prc_support.S
333 OUTER_LOCK_OS_INT において,以下の命令を2回実行していたが,1回でよい
334 ため,2回目を削除.
335 Lea _pmr_isr2_mask, AMARG(reg13)
336 ei_exception_2/fe_exception_2 において,_kerflgのアドレスを読み込ん
337 だ後,内
338容を読み込まずに比較していた問題を修正.
339
3402013/09/17
341・V850E2Sをサポートしたため,アーキテクチャ依存部の名称を v850e2m から
342 v850e2 に変更.
343・コアのマクロをv850e2_fx4.h v850e2_px4.h で定義するように変更.それ
344 に伴い,v850e2_fx4l.h を追加.
345
3462013/09/14
347・コアのマクロを追加
348 _V850E2S_
349 _V850E2M_
350
3512013/08/31
352・CubeSuite+のバージョンを更新.
353
3542013/08/07
355・0x50 : EIレベルソフトウェア例外 と 0x70 : 浮動小数点演算例外 で,
356_ei_exception_entry を呼び出すように修正.
357
3582013/06/24
359・prc_support.S prc_def.csv prc_offset.tf
360 ・割込みのエントリでの多重割込み時のスタックのチェック方法を スタック
361 残量チェック方式 に変更.
362・uart.c
363 ・"Os_Lcfg.h" をインクルードするよう変更.
364
3652013/04/23
366・100ナノ秒単位で時間計測可能な get_tim_100ntime() を追加.
367 ・タイマの分周比を2^5から2^0に変更.
368・SystemTime100NsType を追加(uint32)
369
3702013/04/20
371・uart.c
372 ・プリスケーラーの設定値をターゲット依存部で定義できるように変更.
373・taua_timer.c
374 ・カウント値をターゲット依存部で定義できるように変更.
375・v850e2_fx4.h
376 ・FG4用の定義を追加.
377 ・カウント値を削除.
378・v850e2_fx4.c
379 ・write_protected_reg()で保護レジスタを書き込む時にdi/eiを無条件で実
380 行していた問題を修正.
381・v850e2_px4.h
382 ・カウント値を削除.
383
3842013/04/18
385・get_tim_utime()
386 ・タイマのオーバーフロー時の扱いに問題があったため修正.
387・target_timer_get_current()
388 ・ハードウェアの仕様はダウンカウントであるが,アップカウントとしてコ
389 ードが記述されていたため修正.
390
3912013/03/25
392・start_r で ei をしていたが,必
393要無いため削除.
394
3952013/02/05
396・CHECK_STKSZ_ALIGN/CHECK_FUNC_ALIGN/CHECK_STACK_ALIGN が他の箇所で定
397 義されていれば定義しないように変更.
398
3992013/02/01
400・最初のリリース.
401
402以上.
Note: See TracBrowser for help on using the repository browser.