Changeset 95 for ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_user.txt
- Timestamp:
- Jun 2, 2015, 3:39:53 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_user.txt
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 1 1 ===================================================================== 2 ARM-M vZbT˶2 ARM-Mプロセッサ依存部 3 3 Last Modified: '13/04/07 4 4 ===================================================================== 5 5 6 6 7 (1) εĢé^[QbgVXeÌíÞE\¬7 (1) 対応しているターゲットシステムの種類・構成 8 8 9 ARM-M ˶ÍCARMVx-MA[LeN`ð^[QbgƵĢéDARMVx-MÍC10 ARM ÆÍÙÈèCARM½ßðÀsÅ«È¢½ßCARM˶ƪ¯Ä¢éD9 ARM-M依存部は,ARMVx-Mアーキテクチャをターゲットとしている.ARMVx-Mは, 10 ARMとは異なり,ARM命令を実行できないため,ARM依存部と分けている. 11 11 12 12 13 (2) gp·éJ«Ʈìص½ðio[WCIvVj13 (2) 使用する開発環境と動作検証した条件(バージョン,オプション等) 14 14 15 J[lÍGCCðp¢ÄRpC·éD®ìmFµ½o[WÍe^[Q 16 bg˶ÌhL 17 gÉLÚ·éD 15 カーネルはGCCを用いてコンパイルする.動作確認したバージョンは各ターゲ 16 ット依存部のドキュメントに記載する. 18 17 19 18 20 (3) ^[Qbgè`ÌKè19 (3) ターゲット定義事項の規定 21 20 22 (3-1) f[^^ÉÖ·éKè21 (3-1) データ型に関する規定 23 22 24 f[^^Í arch/gcc/tool_stddef.h Åè`³êÄ¢éàeÅCfloat^Æ 25 double ^ÍC»ê¼êIEEE754ÌP¸x®¬_Æ{¸x®¬_26 Å éD 23 データ型は arch/gcc/tool_stddef.h で定義されている内容で,float型と 24 double型は,それぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点 25 数である. 27 26 28 (3-2) ÝÉÖ·éKè27 (3-2) 割込み処理に関する規定 29 28 30 ÝnhÔÆÝÔÌÄC¼ÒÌÎ 29 ○割込みハンドラ番号と割込み番号の割当て,両者の対応 31 30 32 ÝnhÔÆÝÔÍCáO¶ÉIPSRÉZbg³êéáOÔ 33 ðp¢éDSYSTICKÍ15ÔÅCOÝÍ16Ô©çÌÔªèt¯çê 34 Ä¢éD 31 割込みハンドラ番号と割込み番号は,例外発生時にIPSRにセットされる例外番 32 号を用いる.SYSTICKは15番で,外部割込みは16番からの番号が割り付けられ 33 ている. 35 34 36 ÝDæxÌiKiTMIN_INTPRIÌljC»ÌÝèû@ 35 ○割込み優先度の段階数(TMIN_INTPRIの値),その設定方法 37 36 38 ÝDæxÌiKÍCSoCÉn[hEFAIÉT|[g·éÝDæ 39 xrbgªÙÈéÌÅC^[Qbg˶ÉÙÈéD^[Qbg˶Š40 ÍCÝDæxÌrbgiTBITW_IPRIjÆ»ÌÝDæxÌTuDæ 41 xÌrbgiTBITW_SUBPRIjðè`·éDerbgÌlÆÝèÂ\ÈDæ 42 xÌÍÍÍÌÊèÅ éD 37 割込み優先度の段階数は,SoC毎にハードウェア的にサポートする割込み優先 38 度ビット幅が異なるので,ターゲット依存部毎に異なる.ターゲット依存部で 39 は,割込み優先度のビット幅(TBITW_IPRI)とその割込み優先度中のサブ優先 40 度のビット幅(TBITW_SUBPRI)を定義する.各ビット幅の値と設定可能な優先 41 度の範囲は次の通りである. 43 42 44 -(2^(TBIW_IPRI)) + (2^TBITW_SUBIPRI)) `-143 -(2^(TBIW_IPRI)) + (2^TBITW_SUBIPRI)) 〜 -1 45 44 46 á¦ÎDæxÌrbg(TBITW_IPRI)ª8bitCTuDæxÌrbg 47 (TBITW_SUBIPRI) ª1bitÌêÍC-254 ` -1 ÌÍÍÅ éD45 例えば優先度のビット幅(TBITW_IPRI)が8bit,サブ優先度のビット幅 46 (TBITW_SUBIPRI) が1bitの場合は,-254 〜 -1 の範囲である. 48 47 49 ±ÌÍÍÅCJ[lÇàÌÝÌÅDæxiTMIN_INTPRIjð^[Q 50 bg˶ÅÝè·éD 48 この範囲で,カーネル管理内の割込みの最高優先度(TMIN_INTPRI)をターゲ 49 ット依存部で設定する. 51 50 52 eÝÌÝDæxÍCCFG_INTÅTMIN_INTPRIÈãÌlðwè·éD 51 各割込みの割込み優先度は,CFG_INTでTMIN_INTPRI以上の値を指定する. 53 52 54 dis_intÆena_intÌT|[gÌL³C»Ì§À 53 ○dis_intとena_intのサポートの有無,その制限事項 55 54 56 dis_int Æena_intðT|[g·éD§ÀÍÁÉÈ¢D55 dis_intとena_intをサポートする.制限事項は特にない. 57 56 58 CFG_INŢÀÆg£i^[Qbgè`ÅgpÅ«éÝ®«j 57 ○CFG_INTの制限事項と拡張(ターゲット定義で使用できる割込み属性) 59 58 60 CFG_INT ̧ÀÍÈC^[Qbgè`ÅgpÂ\ÈÝ®«ÍÁÉÈ61 ¢D 59 CFG_INTの制限事項はなく,ターゲット定義で使用可能な割込み属性は特にな 60 い. 62 61 63 J[lÇOÌÝ 62 ○カーネル管理外の割込み 64 63 65 J[lÇOÌÝðT|[g·éDwèû@ÍCÝDæxÌiK 66 Åwèµ½CT|[g·éÝDæxÌÅliŬljæèC 67 TMIN_INTPRI ðå«Ýè·éÆCTMIN_INTPRIæèlª¬¢iDæxjÈ68 ÝDæxðÝèµ½ÝðÝDæxƵĵ¤D 64 カーネル管理外の割込みをサポートする.指定方法は,割込み優先度の段階数 65 で指定した,サポートする割込み優先度の最高値(最小値)より, 66 TMIN_INTPRIを大きく設定すると,TMIN_INTPRIより値が小い(高優先度)な割 67 込み優先度を設定した割込みを割込み優先度として扱う. 69 68 70 J[lÇOÌÝÍOSÀsàÖ~ÉÈé±ÆÍÈiµ§ÉÍÝ 71 ÌoûŲZ¢æÔÖ~³êéjCݶÍCJ[lÌR[hðo 72 R¹¸ÉÄÑo³êéD 69 カーネル管理外の割込みはOS実行中も禁止になることはなく(厳密には割込み 70 の出口でごく短い区間禁止される),割込み発生時は,カーネルのコードを経 71 由せずに呼び出される. 73 72 74 J[lÇOÌÝÉηéCDEF_INH,CFG_INTÍT|[g·éD 73 カーネル管理外の割込みに対する,DEF_INH,CFG_INTはサポートする. 75 74 76 (3-3) CPU áOÉÖ·éKè75 (3-3) CPU例外処理に関する規定 77 76 78 CPUáOnhÔ 77 ○CPU例外ハンドラ番号 79 78 80 CPU áOnhÔƵÄÍCáO¶ÉIPSRÉZbg³êéCáOÔ81 ðp¢éDeáOÌáOÔÍȺÌÊèÅ éD 79 CPU例外ハンドラ番号としては,例外発生時にIPSRにセットされる,例外番号 80 を用いる.各例外の例外番号は以下の通りである. 82 81 83 áO áOÔ82 例外 例外番号 84 83 Reset 1 85 84 Non-makable Interrupt 2 … … 92 91 PendSV 14 93 92 94 ȨCResetÆCSVCallÉ¢ÄÍCJ[lªgp·é½ßC[U[Íg 95 p·é±ÆªÅ«È¢D 93 なお,Resetと,SVCallについては,カーネルが使用するため,ユーザーは使 94 用することができない. 96 95 97 (3-4) CPU bNEÝbN96 (3-4) CPUロック・割込みロック 98 97 99 CPU bNÍCbasepriðTMIN_INTPRIÌDæxÌÝðÖ~·élÉÝè·100 éDÝbNÍCFAULTMASKð'1'ÉÝè·é±ÆÅÀ»µÄ¢éD 98 CPUロックは,basepriをTMIN_INTPRIの優先度の割込みを禁止する値に設定す 99 る.割込みロックは,FAULTMASKを'1'に設定することで実現している. 101 100 102 (3-5) «\]¿pVXeÌQÆÉÖ·éKè101 (3-5) 性能評価用システム時刻の参照に関する規定 103 102 104 get_utm ðT|[g·éD¸xÉÖµÄÍC^[QbgÉÙÈéD103 get_utmをサポートする.精度に関しては,ターゲット毎に異なる. 105 104 106 (3-6) X^[gAbv[`ÅÌú»àe105 (3-6) スタートアップルーチンでの初期化内容 107 106 108 X^[gAbv[`ÍCThread[hÅÄÑo³êé±ÆðOñƵĢ 109 éDÀsãCÝbNóÔiFAULTMASKðZbgjÆ·éDÝbN 110 óÔÍCJ[lÌú»I¹É·éDX^[gAbv[`ÅC 111 MSP ðANeBuÈX^bNƵCMSPÌàeðú»·é½ßÉÍCINIT_MSP112 ð^[Qbg˶Åè`·éD 107 スタートアップルーチンは,Threadモードで呼び出されることを前提としてい 108 る.実行後,割込みロック状態(FAULTMASKをセット)とする.割込みロック 109 状態は,カーネルの初期化終了時に許可する.スタートアップルーチンで, 110 MSPをアクティブなスタックとし,MSPの内容を初期化するためには,INIT_MSP 111 をターゲット依存部で定義する. 113 112 114 (3-7) xN^e[uItZbgÌú»113 (3-7) ベクタテーブルオフセットの初期化 115 114 116 vZbT˶Ìú»ÅCVector Table Offset Register ð^[Qb 117 g˶Ìú»[`ÅÝè·éDȨCxN^[e[uÍC.vector118 ÌZNV®«ªtÁ³êÄ¢é½ßCJXNvgűÌZNV 119 ðwèµÄzu·éD 115 プロセッサ依存の初期化処理で,Vector Table Offset Register をターゲッ 116 ト依存部の初期化ルーチンで設定する.なお,ベクターテーブルは,.vector 117 のセクション属性が付加されているため,リンカスクリプトでこのセクション 118 を指定して配置する. 120 119 121 120 122 (4) ^C}hCoÖAÌîñ121 (4) タイマドライバ関連の情報 123 122 124 J[lÌ^CeBbNƵÄCSYSTICðgp·éêÍCprc_config.c 125 ðRpCÎÛƵCRtBM 126 [Vt@CÉ prc_config.cfg 127 ðwè·é±ÆD 123 カーネルのタイムティックとして,SYSTICを使用する場合は,prc_config.c 124 をコンパイル対象とし,コンフィギュレーションファイルに prc_config.cfg 125 を指定すること. 128 126 129 üúÌî{Í1msecÆ·éDüúðCALIBRATIONWX^ÌÝèàeð³ÉvZ 130 ·éêÍCSYSTIC_USE_CALIBRATION ðè`·éDCALIBRATIONWX^ðp 131 ¢È¢êÍC1msecüúªÌJEglð TIMER_CLOCK ÉÝè·éDNb 132 N\[XƵÄCONbNðp¢éêÍCSYSTIC_USE_STCLK ðp¢éD 127 周期の基本は1msecとする.周期をCALIBRATIONレジスタの設定内容を元に計算 128 する場合は,SYSTIC_USE_CALIBRATION を定義する.CALIBRATIONレジスタを用 129 いない場合は,1msec周期分のカウント値を TIMER_CLOCK に設定する.クロッ 130 クソースとして,外部クロックを用いる場合は,SYSTIC_USE_STCLK を用いる. 133 131 134 132 135 (5) ^[Qbg˶ÅÌÝèÚ133 (5) ターゲット依存部での設定項目 136 134 137 ^[Qbg˶ÅÍȺÌ}Nðè`·éKvª éD 135 ターゲット依存部では以下のマクロを定義する必要がある. 138 136 139 ¥TMAX_INTNO : ÝÔÌÅål(ÊíÌÝÔ+ 15)140 ¥TBITW_IPRI : ÝDæxÌrbg141 ¥TBITW_SUBIPRI : ÝDæxÌrbgÌTuDæxÌrbg142 ¥TMIN_INTPRI : ÝDæxÌŬliÅlj143 ¥TIC_NUME : ^CeBbNÌüú̪q144 ¥TIC_DENO : ^CeBbNÌüú̪ê145 ¥TIMER_CLOCK : ^C}lÌà\»Æ~bPÊÆÌÏ·146 ¥INTPRI_TIMER : ^C}ÝÝDæx147 ¥INTATR_TIMER : ^C}ÝÌÝ®«148 ¥INIT_MSP : X^[gAbv[`ÅMSPðú»·éêÍè`149 ¥DEFAULT_ISTKSZ : X^bNTCYi8bytePÊÅwèj150 ¥SIL_DLY_TIM1 : ÷Ôҿ̽ßÌè`151 ¥SIL_DLY_TIM2 : ÷Ôҿ̽ßÌè`137 ・TMAX_INTNO : 割込み番号の最大値(通常の割込み番号 + 15) 138 ・TBITW_IPRI : 割込み優先度のビット幅 139 ・TBITW_SUBIPRI : 割込み優先度のビット幅中のサブ優先度のビット幅 140 ・TMIN_INTPRI : 割込み優先度の最小値(最高値) 141 ・TIC_NUME : タイムティックの周期の分子 142 ・TIC_DENO : タイムティックの周期の分母 143 ・TIMER_CLOCK : タイマ値の内部表現とミリ秒単位との変換 144 ・INTPRI_TIMER : タイマ割込み割込み優先度 145 ・INTATR_TIMER : タイマ割込みの割込み属性 146 ・INIT_MSP : スタートアップルーチンでMSPを初期化する場合は定義 147 ・DEFAULT_ISTKSZ : スタックサイズ(8byte単位で指定) 148 ・SIL_DLY_TIM1 : 微少時間待ちのための定義 149 ・SIL_DLY_TIM2 : 微少時間待ちのための定義 152 150 153 151 154 (6) fBNg\¬Et@C\¬152 (6) ディレクトリ構成・ファイル構成 155 153 ./arch/arm_m_gcc/ 156 154 ./Makefile.prc … … 177 175 ./start.S 178 176 179 (12) o[Wð177 (12) バージョン履歴 180 178 181 179 2008/08/22 182 Eprc_user.txt/prc_design.txt183 E2008/8/21ÌZp¢ïÅÌc_Êð½fD184 Eprc_support.S/prc_config.c/prc_config.h/arm_m.h185 EReLXg»èðexc_ncnt©çANeBuÈX^bNÉÏX186 Eprc_config.c187 Eset_exc_int_priority() ÅT|[gÂ\ÈIRQÌãÀð239Ég£D188 Estart.S189 EN®ÍThread[hðOñƵĢé±Æð¾LD190 Eu[g[_[©çN®³êéêðzèµCMSPðLøÉ·éæ¤É191 ÏXD192 Eprc_timer.c193 ERgðC³194 EfobOpR[hðí180 ・prc_user.txt/prc_design.txt 181 ・2008/8/21の技術検討会での議論結果を反映. 182 ・prc_support.S/prc_config.c/prc_config.h/arm_m.h 183 ・コンテキスト判定をexc_ncntからアクティブなスタックに変更 184 ・prc_config.c 185 ・set_exc_int_priority() でサポート可能なIRQの上限を239に拡張. 186 ・start.S 187 ・起動時はThreadモードを前提としていることを明記. 188 ・ブートローダー等から起動される場合を想定し,MSPを有効にするように 189 変更. 190 ・prc_timer.c 191 ・コメントを修正 192 ・デバッグ用コードを削除 195 193 196 194 2008/07/11 197 EÅÌ[X195 ・最初のリリース 198 196 199 197 2013/04/07 200 EáO¶ÉÝ/CPUáO¶ñÌCNgªsíêĢȩÁ½201 âèÌC³198 ・例外処理発生時に割込み/CPU例外発生回数のインクリメントが行われていなかった 199 問題の修正 -
Property svn:mime-type
set to
Note:
See TracChangeset
for help on using the changeset viewer.