source: rtos_arduino/trunk/asp_1.9.2/arch/arm_m_gcc/common/core_user.txt@ 136

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

ライブラリとOS及びベーシックなサンプルの追加.

File size: 25.0 KB
Line 
1=====================================================================
2 ARM-Mプロセッサ依存部
3 Last Modified:2015 Nov 23 09:31:43
4=====================================================================
5
6
7(1) 対応しているターゲットシステムの種類・構成
8
9ARM-M依存部は,ARMvx-Mアーキテクチャをターゲットとしている.ARMvx-Mは,
10ARMとは異なり,ARM命令を実行できないため,ARM依存部と分けている.現状
11サポートしているコアは次の通りである.
12
13・Cortex-M0
14・Cortex-M0+
15・Cortex-M3
16・Cortex-M4
17
18(2) 使用する開発環境と動作検証した条件(バージョン,オプション等)
19
20カーネルはGCCを用いてコンパイルする.動作確認したバージョンは各ターゲ
21ット依存部のドキュメントに記載する.
22
23
24(3) ターゲット定義事項
25の規定
26
27(3-1) データ型に関する規定
28
29データ型は arch/gcc/tool_stddef.h で定義されている内
30容で,float型と
31double型は,それぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点
32数である.
33
34(3-2) 割込み処理に関する規定
35
36○割込みハンドラ番号と割込み番号の割当て,両者
37の対応
38
39割込みハンドラ番号と割込み番号は,例外発生時にIPSRにセットされる例外番
40号を用いる.SYSTICKは15番で,外部割込みは16番からの番号が割り付けられ
41ている.
42
43○割込み優å…
44ˆåº¦ã®æ®µéšŽæ•°ã¨TMIN_INTPRIの値
45
46割込み優å…
47ˆåº¦ã®æ®µéšŽæ•°ã¯ï¼ŒSoC毎にハードウェア的にサポートする割込み優å…
48ˆ
49度ビット幅
50が異なるので,ターゲット依存部毎に異なる.ターゲット依存部で
51は,割込み優å…
52ˆåº¦ã®ãƒ“ット幅
53(TBITW_IPRI)とその割込み優å…
54ˆåº¦ä¸­ã®ã‚µãƒ–優å…
55ˆ
56度のビット幅
57(TBITW_SUBPRI)を定義する.
58
59各ビット幅
60の値とCFG_INTで使用可能な割込み優å…
61ˆåº¦ã®ç¯„囲は次の通りである.
62
63 -(2^(TBIW_IPRI)) + (2^TBITW_SUBIPRI) ~ -1
64
65例えば優å…
66ˆåº¦ã®ãƒ“ット幅
67(TBITW_IPRI)が8bit,サブ優å…
68ˆåº¦ã®ãƒ“ット幅
69
70(TBITW_SUBIPRI) が1bitの場合は,-254 ~ -1 の範囲である.
71
72優å…
73ˆåº¦ã®ãƒ“ット幅
74(TBITW_IPRI)が3bit,サブ優å…
75ˆåº¦ã®ãƒ“ット幅
76(TBITW_SUBIPRI)
77が0bitの場合は,-8 ~ -1 の範囲である.
78
79最大優å…
80ˆåº¦(3bitの例では-8)は,内
81部優å…
82ˆåº¦ã¨ã—ては"0x00"となる.この優å…
83ˆ
84度はCPUロックで用いるBASEPRIレジスタではマスクできないため,カーネル管
85理内
86の割込みの最高優å…
87ˆåº¦ï¼ˆTMIN_INTPRI)は,最大値より1つ優å…
88ˆåº¦ãŒä½Žã„値
89以下の値を指定する.
90
91この範囲で,カーネル管理内
92の割込みの最高優å…
93ˆåº¦ï¼ˆTMIN_INTPRI)をターゲ
94ット依存部で設定する.
95
96○dis_intとena_intのサポートの有無,その制限事項
97
98
99dis_intとena_intをサポートする.制限事項
100は特にない.
101
102○CFG_INTの制限事項
103と拡張(ターゲット定義で使用できる割込み属性)
104
105CFG_INTの制限事項
106はなく,ターゲット定義で使用可能な割込み属性は特にな
107い.
108
109○カーネル管理外の割込み
110
111ARMv7-Mでは,カーネル管理外の割込みをサポートする.指定方法は,割込み
112優å…
113ˆåº¦ã®æ®µéšŽæ•°ã§æŒ‡å®šã—た,サポートする割込み優å…
114ˆåº¦ã®æœ€é«˜å€¤ï¼ˆæœ€å°å€¤ï¼‰ã‚ˆ
115り,TMIN_INTPRIの値を大きく(優å…
116ˆåº¦ã‚’低く)設定すると,TMIN_INTPRIより
117値が小い(高優å…
118ˆåº¦ï¼‰ãªå‰²è¾¼ã¿å„ªå…
119ˆåº¦ã‚’設定した割込みを割込み優å…
120ˆåº¦ã¨ã—て
121扱う.
122
123カーネル管理外の割込みはOS実行中も禁止になることはなく(厳密には割込み
124の出口でごく短い区間禁止される),割込み発生時は,カーネルのコードを経
125由せずに呼び出される.
126
127カーネル管理外の割込みに対する,DEF_INH,CFG_INTはサポートする.
128
129(3-3) CPU例外処理に関する規定
130
131○CPU例外ハンドラ番号
132
133CPU例外ハンドラ番号としては,例外発生時にIPSRにセットされる,例外番号
134を用いる.各例外の例外番号は以下の通りである.
135
136 例外 例外番号
137 Reset 1
138 Non-makable Interrupt 2
139 Hard Fault 3
140 Memory Management 4
141 Bus Fault 5
142 Usage Fault 6
143 SVCall 11
144 Debug Monitor 12
145 PendSV 14
146
147なお,Resetと,SVCall(ARMv7-M),PendSV(ARMv6-M)については,カーネルが
148使用するため,ユーザーは使用することができない.
149
150ARM-MアーキテクチャではCPU例外に優å…
151ˆåº¦ã‚’設定することが可能である.
152ARM-M依存部では,å…
153¨ã¦ã®CPU例外の優å…
154ˆåº¦ã‚’CPUロックではマスクできないマ
155スク出来ない値(内
156部優å…
157ˆåº¦0)に初期化している.
158
159(3-4) CPUロック・割込みロック
160
161ARMv7-Mでは,CPUロックは,basepriをTMIN_INTPRIの優å…
162ˆåº¦ã®å‰²è¾¼ã¿ã‚’禁止す
163る値に設定する.割込みロックは,FAULTMASKを'1'に設定することで実現してい
164る.
165
166ARMv6-Mでは,CPUロック/割込みロックå…
167±ã«PRIMASKにより実現している.
168
169(3-5) 性能評価用システム時刻の参ç…
170§ã«é–¢ã™ã‚‹è¦å®š
171
172get_utmをサポートする.精度に関しては,ターゲット毎に異なる.
173
174(3-6) スタートアップルーチンでの初期化内
175容
176
177スタートアップルーチンは,Threadモードで呼び出されることを前提としてい
178る.実行後,割込みロック状æ…
179‹ã¨ã™ã‚‹ï¼Žå‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ…
180‹ã¯ï¼Œã‚«ãƒ¼ãƒãƒ«ã®åˆæœŸ
181化終了時に許可する.スタートアップルーチンで,MSPをアクティブなスタッ
182クとし,MSPの内
183容を初期化するためには,INIT_MSPをターゲット依存部で定
184義する.
185
186(3-7) ベクタテーブルオフセットの初期化
187
188プロセッサ依存の初期化処理で,Vector Table Offset Register をターゲッ
189ト依存部の初期化ルーチンで設定する.なお,ベクターテーブルは,.vector
190のセクション属性が付加されているため,リンカスクリプトでこのセクション
191を指定してé…
192ç½®ã™ã‚‹ï¼Ž
193
194
195(4) タイマドライバ関連の情
196å ±
197
198カーネルのタイムティックとして,SYSTICを使用する場合は,core_config.c
199をコンパイル対象とし,コンフィギュレーションファイルに core_config.cfg
200を指定すること.
201
202周期の基本は1msecとする.周期をCALIBRATIONレジスタの設定内
203容をå…
204ƒã«è¨ˆç®—
205する場合は,SYSTIC_USE_CALIBRATION を定義する.CALIBRATIONレジスタを用
206いない場合は,1msec周期分のカウント値を TIMER_CLOCK に設定する.クロッ
207クソースとして,外部クロックを用いる場合は,SYSTIC_USE_STCLK を用いる.
208
209
210(5) ターゲット依存部での設定項
211目
212
213ターゲット依存部では以下のマクロを定義する必
214要がある.
215
216 ・TMAX_INTNO : 割込み番号の最大値(通常の割込み番号 + 15)
217 ï½¥TBITW_IPRI : 割込み優å…
218ˆåº¦ã®ãƒ“ット幅
219
220 ï½¥TBITW_SUBIPRI : 割込み優å…
221ˆåº¦ã®ãƒ“ット幅
222中のサブ優å…
223ˆåº¦ã®ãƒ“ット幅
224
225 ï½¥TMIN_INTPRI : 割込み優å…
226ˆåº¦ã®æœ€å°å€¤ï¼ˆæœ€é«˜å€¤ï¼‰
227 ・TIC_NUME : タイムティックの周期の分子
228 ・TIC_DENO : タイムティックの周期の分母
229 ・TIMER_CLOCK : タイマ値の内
230部表現とミリ秒単位との変換
231 ï½¥INTPRI_TIMER : タイマ割込み割込み優å…
232ˆåº¦
233 ・INTATR_TIMER : タイマ割込みの割込み属性
234 ・INIT_MSP : スタートアップルーチンでMSPを初期化する場合は定義
235 ・DEFAULT_ISTKSZ : スタックサイズ(8byte単位で指定)
236 ・SIL_DLY_TIM1 : 微少時間待
237ちのための定義
238 ・SIL_DLY_TIM2 : 微少時間待
239ちのための定義
240
241ターゲット依存部のMakefileでは以下を定義する必
242要がある.
243
244 ・CORE_TYPE : コアの種類
245 CORTEX_M4/CORTEX_M3/CORTEX_M0/CORTEX_M0PLUS/
246 ・FPU_USAGE : FPUを使用する場合にいずれかに定義.
247 FPU_NO_PRESERV : コンテキスト保存なし
248 FPU_NO_LAZYSTACKING : コンテキスト保存あり
249 FPU_LAZYSTACKING : コンテキスト保存あり(Lazy stacking)
250 ・FPU_ABI : FPU使用時のABIいずれかを指定
251 softfp : float/dobuleの引数の受け渡しに一般レジスタを使用
252 hard : float/dobuleの引数の受け渡しにFPUレジスタを使用
253
254(6) その他
255
256(6-1) Configureation and Control Register(CCR)のSTKALIGNの制限
257
258システム起動後(正確にはOSの初期化終了後)はCCRのSTKALIGNの設定は,変
259更しないこと.
260
261
262(7) ディレクトリ構成・ファイル構成
263 ./arch/arm_m_gcc/common
264 ./Makefile.core
265 ./arm_m.h
266 ./makeoffset.c
267 ./core.tf
268 ./core_cfg1_out.h
269 ./core_check.tf
270 ./core_config.c
271 ./core_config.h
272 ./core_def.csv
273 ./core_insn.h
274 ./core_kernel.h
275 ./core_rename.def
276 ./core_rename.h
277 ./core_sil.h
278 ./core_stddef.h
279 ./core_support.S
280 ./core_test.h
281 ./core_timer.c
282 ./core_timer.cfg
283 ./core_timer.h
284 ./core_unrename.h
285 ./core_user.txt
286 ./start.S
287
288(8)ARMCCå…
289±æœ‰ã‚³ãƒ¼ãƒ‰ã®è¨˜è¿°æ–¹æ³•
290
291ARMCCとå…
292±æœ‰ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã¯ï¼Œæ¬¡ã®ãƒ«ãƒ¼ãƒ«ã«å¾“ってコードを記述する必
293要がある.
294
2951.メモリバリア命令(Asm("":::"memory"))のマクロ化
296
297ターゲット依存部 ポーティングガイドの(1-6-2)(c)には,次のように記述さ
298れている.
299
300-----
301(c) クリティカルセクションの出å…
302¥å‡¦ç†ã®æœ¬è³ªçš„な部分が,マクロやインライ
303 ン関数呼出しで実現している場合には,クリティカルセクションにå…
304¥ã‚‹å‡¦
305 理の最後と出る処理のå…
306ˆé ­ã«ï¼ŒAsm("":::"memory")という記述をå…
307¥ã‚Œã‚‹ï¼Ž
308-----
309
310メモリバリア命令(Asm("":::"memory"))は,ARMCCと互換性がないため,この
311記述をする箇所は,次のマクロで記述すると,コンパイル時に適切なメモリバ
312リア命令に置き換えられる.
313
314 ARM_MEMORY_CHANGED
315
3162.インクルード方法
317
318ターゲット依存部 ポーティングガイドの1.5には,次のように記述されている.
319
320-----
321その他のヘッダファイルは,「#include "..."」によりインクルードする.ヘッ
322ダファイルが,カレントディレクトリやインクルードするファイルと同じディ
323レクトリ以外のディレクトリに置かれている場合には,次のようにパス指定を
324行う.
325-----
326
327GCC依存部とARMCC依存部でヘッダファイルをå…
328±æœ‰ã§ããªã„場合には,それぞれ
329で同じ名前のファイルを持つ.そして,コンパイルオプションでインクルード
330すべきファイルをå…
331ˆã«æŒ‡å®šã—ている.そのため,ARMCCとå…
332±æœ‰ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã§
333これらのファイルをインクルードする場合には,「#include "..."」ではなく,
334「#include <...>」で記述し,相対パスではなくファイル名のみを記載するこ
335と.
336
3373.アセンブラディレクティブ
338
339GCCとARMCCのアセンブラディレクティブは互換性がない.そのため,ARMCCと
340å…
341±æœ‰ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ¬¡ã«ç¤ºã™ãƒžã‚¯ãƒ­ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–で記述すること.
342
343マクロディレクティブ GCCディレクティブ
344 ASECTION(name) .section name,"a"
345 ATEXT .text
346 AGLOBAL(name) .global name
347 AALIGN(x) .align x
348 ALONG .long
349 ALABEL(label) label:
350 AOR |
351 ATHUMB(name) __athumb name
352
353
354(9)アイドル処理
355
356実行するべきタスクがない場合は,ディスパッチャーで割込みを許可して,割
357込みを待
358つ(dispatcher_2).ARM-M依存部のコードでは,次のようになって
359いる.
360
361 PRIMASK をセット
362 å…
363¨å‰²è¾¼ã¿è¨±å¯
364 wfi
365 PRIMASK をクリア(割込みを受け付ける)
366 CPUロック状æ…
367‹ã¸
368
369ターゲット依存で,上記の処理の代わりに,省電力モード等に移行する処理を
370記述したい場合には,ターゲット依存部で,TOPPERS_CUSTOM_IDLEを定義し,
371代わりに実行した処理を toppers_asm_custom_idle というアセンブラマクロ
372として記述する.
373
374なお,toppers_asm_custom_idle の記述にあたっては,次のレジスタは
375oppers_asm_custom_idleの前後で使用するため,oppers_asm_custom_idle 内
376
377で使用する場合は,前後で保存復帰すること.これらのレジスタは Calee
378saved レジスタであるため, oppers_asm_custom_idle として関数呼び出しを
379した場合は,呼び出した関数で自動的に保存復帰されるため,アセンブラレベ
380ルでの保存復帰は必
381要ない.
382
383レジスタ : 内
384容
385r4 : '0'
386r5 : 'IIPM_LOCK'
387r6 : reqflgのアドレス
388r7 : lock_flgのアドレス
389sp : 非タスクコンテキスト用のスタックのå…
390ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹(msp)
391
392アセンブラマクロはC言語記述中に展開するとエラーとなる.core_support.S で
393は,TOPPERS_ASM_MACRO というマクロを定義しているため,ターゲット依存部
394で toppers_asm_custom_idle アセンブラマクロを定義する際には,
395TOPPERS_ASM_MACRO を条件コンパイルの条件として用いること.
396
397(10)FPU
398Cortex-M4FのFPUをサポートしている.FPUの使用方法は次の3種類から選択可
399能である.それぞれMakefile内
400でFPU_USAGEマクロを定義して指定する.指定
401がない場合はFPUを無効とする.
402
403FPU_NO_PRESERV
404ディスパッチャ等ではFPUコンテキストの保存復帰を行わない.
405FPUを使用可能なタスクは1個もしくは,システム中の最高優å…
406ˆåº¦ã®ISR群で使
407用可能.
408
409FPU_NO_LAZYSTACKING
410ディスパッチャ等ではFPUコンテキストの保存復帰を行う.Lazy stacking は
411使用しない.å…
412¨ã¦ã®ã‚¿ã‚¹ã‚¯/ISRでFPUを使用可能.
413
414FPU_LAZYSTACKING
415ディスパッチャ等ではFPUコンテキストの保存復帰を行う.Lazy stacking を
416使用する.å…
417¨ã¦ã®ã‚¿ã‚¹ã‚¯/ISRでFPUを使用可能.
418
419(11)その他
420
4211. ベクターテーブルのセクション指定
422
423core.tf で以下の _kernel_vector_table のé…
424åˆ—の変数の宣言の生成の際に,
425GEN_VECTOR_TABLE_VARNAME という関数が定義されていれば,core.tf では変
426数の宣言は行わず,GEN_VECTOR_TABLE_VARNAME を呼び出す.
427
428const FP _kernel_vector_table[] =
429
430GEN_VECTOR_TABLE_VARNAME が宣言されている場合でも,é…
431åˆ—の本体の生成は,
432core.tfで行う.
433
4342. ARMv6-Mでの割込みロック(SIL_LOC_INT())
435
436CPUロック・割込みロックにPRIMASKを使用しているため,CPUロック・割込み
437ロック中にHardwareFault以外の例外が発生して受け付けられなくなるという
438制約がある.
439
440(12) バージョン履歴
4412015/11/22
442・Cortex-M4FのFPUのサポートを追加.
443
4442015/11/14
445・ARMv7-M
446 ・core_sil.h
447 ・割込みロック(SIL_LOC_INT())をBASEPRIを使用するように変更.
448 ・å…
449ƒã®FAULTMASKだとFAULTMASKをセットした状æ…
450‹ã§ä¾‹å¤–が発生すると例外
451 が発生しないため.
452
4532015/11/04
454・ARMv6-M対応に関する変更
455 ・ARMv7-Mに影響を及ぼす変更
456 ・例外フレームのフォーマットを変更(basepriとEXC_RETURNの順序を変更)
457 ・エントリポイント(_start)をリネームの対象に変更.
458 ・Cライブラリの_startと名前が重複するため.
459 ・Makefile.coreで -nostdlib を付けないように変更.
460 ・ターゲット依存部で指定する
461
4622014/12/01
463・core_support.S
464 2013/08/20 の修正でPSP上への割込み優å…
465ˆåº¦ãƒžã‚¹ã‚¯(r2)とEXC_RETURN(lr)の
466 保存をstfmdで行うにしたが,スタックへの積み方がlr,r2となっているため
467 ,割込み・例外出口のコードとの整合性がとれていなかった.r2,lrと保存
468 するようにlrをr0に一旦コピーしてr0(lr),r2とstmfdに指定するよう変更.
469
4702014/07/23
471・target_timer_probe_int()において,SYSTIC_CONTROL_STATUS を一度読み込
472 むとクリアされるため,割込み等で複数回読み込む使い方には適応しない.
473 そのため,NVICのペンディングレジスタを読み込むように変更.
474
4752012/10/17
476・1.8.0対応のため,char_t の箇所を他の型に変更.
477
4782013/08/20
479・core_support.S
480 例外/割込み例外発生時のPSP上への割込み優å…
481ˆåº¦ãƒžã‚¹ã‚¯(r2)とEXC_RETURN(lr)
482 の保存をstmfd1命令で実施するように変更.
483
4842013/03/10
485・core_support.S
486 sub/addはアセンブラにより32bit命令nsub.w/add.wと変換される.16bit命
487 令のsubs/addsでも問題ないため,変更.
488
4892012/06/18
490・xxx_stddef.h を相対パスではなくファイル名のみで指定するように変更.
491 どのファイルを用いるかは他のファイルと同様にコンパイラへのインクルー
492 ド指定の順序とする.
493・core.tf で _kernel_vector_table のé…
494åˆ—の変数の宣言部分を生成する際に,
495 GEN_VECTOR_TABLE_VARNAME という関数が定義されていれば,呼び出すよう
496 に変更.
497 セクション指定方法がコンパイラ毎に異なるため用意.
498
4992012/02/29
500・Makefile.core
501 ・CDEFSにTOPPERS_LABEL_ASMを指定していたが,ARM用のgccではアセンブラ
502 のシンボルの前に_を付けないため削除.
503
5042012/02/02
505・core_config.h
506 ・x_set_ipm()で,iipmが'0'(IIPM_ENAALL)の時の問題を修正.
507・core_support.S
508 ・toppers_asm_custom_idleの前後で使用するレジスタを変更.この変更に
509 より,toppers_asm_custom_idle で関数呼び出しをする場合は,アセンブ
510 ラレベルでのレジスタの保存が必
511要なくなった.
512
5132012/02/23
514・core_support.S
515 ・core_exc_entryでbasepriを読み込んだあと,å…
516¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ…
517‹ã®ãƒã‚§
518 ックために上書きしていた問題を修正
519 ・call_texrtnとcall_texrtnの呼び出しをb命令で記述すると,16bit命令と
520 して解釈するコンパイラがあるため,メモリé…
521ç½®ã«ã‚ˆã£ã¦ã¯ãƒ¬ãƒ³ã‚¸ãŒè¶³ã‚Š
522 なくなる.bx命令に変更することで問題を修正.
523
5242012/01/31
525・core_timer.c
526 ・タイマ割込みハンドラにて,probe_int のため,COUNTFLAGをクリアするた
527 めに読み込んでいたレジスタが誤っていた問題を修正.
528
5292011/12/03
530・core_test.h の多重インクルード防止マクロの名称修正
531 ・CHIP を CORE に修正.
532
533・ARMCC対応に伴う変更
534 ・core_asm.inc(追加)
535 ・GCCのアセンブラのディレクティブの定義を記述したファイルを追加.
536 ・core_config.h(変更)
537 ・core_insn.h のインクルード方法を""から<>に変更して,コンパイラの
538 引数で指定された順でインクルードファイルをサーチするよう変更.
539 ・メモリバリア命令(Asm("":::"memory"))をマクロ化してcore_insn.h に
540 定義を使用するよう変更.
541 ・core_insn.h(変更)
542 ・メモリバリア命令(Asm("":::"memory"))のマクロ定義を追加
543 ・core_support.S(変更)
544 ・ARMCCとファイルをå…
545±æœ‰ã™ã‚‹ãŸã‚ï¼Œãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–をマクロに書き換え.
546 ・start.S(変更)
547 ・ARMCCとファイルをå…
548±æœ‰ã™ã‚‹ãŸã‚ï¼Œãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–をマクロに書き換え.
549
5502011/07/26
551・CCRのSTKALIGNが'1'の場合への対応
552 割込み・例外の出å…
553¥å£å‡¦ç†ã§ã¯ï¼Œã‚¹ã‚¿ãƒƒã‚¯ã¯å¸¸ã«8byte境界となるように変
554 更.
555
5562011/07/25
557・CPU例外の優å…
558ˆåº¦ã®åˆæœŸåŒ–
559 CPUロックでマスクできない優å…
560ˆåº¦ï¼ˆå†…
561部優å…
562ˆåº¦0)に初期化する処理を追加.
563
564・CFG_INTで使用できる割込み優å…
565ˆåº¦ã®æœ€å¤§å€¤ã®ä¿®æ­£(core.tf)
566 ・最大値が1つ大きな値となっていた.
567
568・カーネル管理外の割込みの扱いの変更
569 ・å…
570±é€šéƒ¨ã§ã®æ‰±ã„の変更に伴う変更.
571
572・タイマ割込みハンドラでのCOUNTFLAGのクリア処理の修正
573 SYSTIC_CONTROL_STATUSレジスタのCOUNTFLAGをクリアするには,
574 SYSTIC_CURRENT_VALUEレジスタを読み込む必
575要があるが,誤って
576 SYSTIC_CONTROL_STATUSレジスタを読み込んでいた.
577
578・core_int_entryにおけるbasepriの設定
579 NVIC優å…
580ˆåº¦ãƒžã‚¹ã‚¯ãŒè‡ªå‹•çš„に設定されるため優å…
581ˆåº¦ãƒžã‚¹ã‚¯ã®ç‚¹ã§ã¯å¿…
582要な
583 いが,x_get_ipm()がbasepriを参ç…
584§ã™ã‚‹ãŸã‚ï¼Œbasepriも更新するよう変更.
585
5862011/07/24
587・_ret_int_2/svc_handler の変更
588 割込み優å…
589ˆåº¦ãƒžã‚¹ã‚¯ãŒå…
590¨è§£é™¤çŠ¶æ…
591‹ã§ã—かタスク例外を呼び出さないように
592 仕様が変更されたため,_ret_int_2では,割込み優å…
593ˆåº¦ãƒžã‚¹ã‚¯ã‚’,å…
594¨è§£é™¤
595 状æ…
596‹ï¼ˆTIPM_ENAALL)に設定するよう変更.
597 svc_handlerはタスクにリターンする時にbasepriをIIPM_ENAALLにするよう
598 に変更.
599
600・x_config_int()/set_exc_int_priority()の修正
601 x_config_int()から,set_exc_int_priority()に対して外部優å…
602ˆåº¦ã‚’引数に
603 して呼び出しいたため,内
604部優å…
605ˆåº¦ã‚’引数で呼び出すよう修正.
606 set_exc_int_priority()も受け取った引数を内
607部優å…
608ˆåº¦ã¨ã—て優å…
609ˆåº¦ã‚’設定
610 するように修正.
611
6122011/07/23
613・å…
614±é€šéƒ¨ã‚’1.4.0にupdate.
615
616・arm依存部と同様にチップ依存部を置けるようにディレクトリ構造を変更
617
618・arm依存部と同様にファイル名のプリフィックスをcoreに変更.
619
620・call_atexitの削除
621 software_term_hook の呼び出しは,core_terminate()に移動.
622
623・å…
624±é€šéƒ¨ã‚’1.7.0にupdate.
625
626・タスクコンテキストブロックの型名の変更
627 CTXB型をTSKCTXB型に名称変更.
628
629・ターゲット依存部でサポートする機能を示すマクロの変更
630 TOPPERS_SUPPORT_DIS_INTをTOPPERS_TARGET_SUPPORT_DIS_INTに,
631 TOPPERS_SUPPORT_ENA_INTをTOPPERS_TARGET_SUPPORT_ENA_INTに,
632 変更.
633
634・exc_sense_unlockの定義を削除.
635
636・オフセットファイルをコンフィギュレータで生成する方法への対応
637
638・CHECK_FUNC_ALIGN,CHECK_FUNC_NONNULL,CHECK_STACK_ALIGN,
639 CHECK_STACK_NONNULL,CHECK_MPF_ALIGN,CHECK_MPF_NONNULLの定義を,タ
640 ーゲット依存部のテンプレートファイル(パス3)からヘッダファイルに移
641 動.
642
643・割込みと例外のå…
644¥ã‚Šå£å‡¦ç†ã®åå‰ã‚’変更
645 int_entryをcore_int_entryへexc_entryをcore_exc_entryに変更.
646 オフセットの取得方法が変更となったため,å…
647ƒã®åå‰ã®ã¾ã¾ã ã¨cfg1_out.c
648 がコンパイルエラーとなるために変更.
649
650・ターゲット依存部で定義する名称のリネームの追加
651
652・call_texrtnを呼び出す条件に「ipmflgがtrue」を追加
653
654・カーネル管理外のCPU例外の扱いの変更
655
6562011/07/22
657・x_disable_int() : prc_config.h の修正
658 割込み禁止レジスタのアドレスを取得する際に,ベースの値をuint32_tの
659 ポインタにキャストしていなったため,正しいアドレスが生成できていな
660 かった問題を修正.
661
662・非タスクコンテキスト用のスタックの初期値マクロ(TOPPERS_ISTKPT)の修正
663 : prc_config.h
664 バイト単位で取得するように,(char_t *) にキャストして掲載するように修
665 正.
666
667・LOG_INH_ENTRYとLOG_INH_LEAVEの誤記 : prc_support.S
668 LOG_INH_ENTRYとLOG_INH_LEAVEであるべき箇所が LOG_EXC_ENTRYと
669 LOG_EXC_ENTRYになっている問題を修正.
670
671・TOPPERS_CUSTOM_IDLE のtypoの修正 : prc_support.S
672
673・svn_hanlderの修正 : prc_support.S
674 一律EXC_FRAME_SIZE分のスタックを捨てていたが,Configureation and
675 Control Register(CCR)のSTKALIGNが'1'の場 合は,8byte境界にアライン
676 されるため,捨てるサイズが異なる.アラインされたかは,xPSRの9ビッ
677 トをチェックすることにより判定する.
678
679・prc.tfの修正
680 boostのバージョンによって変わる挙動を吸収.
681 http://www.toppers.jp/TOPPERS-USERS/201004/msg00034.html
682
683・_kernel_istkpt の削除 : prc_cfg1_out.h
684 _kernel_istkpt が必
685要ないターゲットが存在するため,必
686要なら,ターゲ
687 ット依存部で定義するように変更.
688
6892008/08/22
690・prc_user.txt/prc_design.txt
691 ・2008/8/21の技術検討会での議論結果を反映.
692
693・prc_support.S/prc_config.c/prc_config.h/arm_m.h
694 ・コンテキスト判定をexc_ncntからアクティブなスタックに変更
695
696・prc_config.c
697 ・set_exc_int_priority() でサポート可能なIRQの上限を239に拡張.
698
699・start.S
700 ・起動時はThreadモードを前提としていることを明記.
701 ・ブートローダー等から起動される場合を想定し,MSPを有効にするように
702 変更.
703
704・prc_timer.c
705 ・コメントを修正
706 ・デバッグ用コードを削除
707
7082008/07/11
709・最初のリリース
Note: See TracBrowser for help on using the repository browser.