Ignore:
Timestamp:
Jun 27, 2017, 10:53:32 AM (7 years ago)
Author:
ertl-honda
Message:

3.1.0を反映

Location:
asp3_wo_tecs/trunk/arch/arm_gcc/doc
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • asp3_wo_tecs/trunk/arch/arm_gcc/doc/arm_design.txt

    r302 r306  
    33                ARMコア依存部 設計メモ
    44
    5                 対応バージョン: Release 3.B.0
    6                 最終更新: 2015å¹´8月18日
    7 
     5                対応バージョン: Release 3.1.0
     6                最終更新: 2016å¹´5月14日
     7
     8----------------------------------------------------------------------
     9 TOPPERS/ASP Kernel
     10     Toyohashi Open Platform for Embedded Real-Time Systems/
     11     Advanced Standard Profile Kernel
     12
     13 Copyright (C) 2014-2016 by Embedded and Real-Time Systems Laboratory
     14             Graduate School of Information Science, Nagoya Univ., JAPAN
     15 
     16 ä¸Šè¨˜è‘—作権è€
     17は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     18 ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
     19 å¤‰ãƒ»å†é
     20å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
     21 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     22     æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
     23     ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
     24 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     25     ç”¨ã§ãã‚‹å½¢ã§å†é
     26å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
     27å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
     28     è€
     29マニュアルなど)に,上記の著作権表示,この利用条件および下記
     30     ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
     31 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     32     ç”¨ã§ããªã„形で再é
     33å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
     34     ã¨ï¼Ž
     35   (a) 再é
     36å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
     37マニュアルなど)に,上記の著
     38       ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
     39   (b) 再é
     40å¸ƒã®å½¢æ
     41‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
     42       å ±å‘Šã™ã‚‹ã“と.
     43 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     44     å®³ã‹ã‚‰ã‚‚,上記著作権è€
     45およびTOPPERSプロジェクトをå
     46è²¬ã™ã‚‹ã“と.
     47     ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
     48     ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
     49およびTOPPERSプロジェクトを
     50     å
     51è²¬ã™ã‚‹ã“と.
     52 
     53 æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
     54お
     55 ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     56 ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
     57 ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
     58 ã®è²¬ä»»ã‚’負わない.
     59 
     60 $Id: arm_design.txt 751 2016-05-14 15:03:06Z ertl-hiro $
    861----------------------------------------------------------------------
    962
     
    55108ARMv7-A,ARMv7-Rに準拠したプロセッサコアを持つターゲットシステム(チッ
    56109プ)にå
    57 ±é€šã«ä½¿ç”¨ã§ãã‚‹éƒ¨åˆ†ã§ã‚る.
     110±é€šã«ä½¿ç”¨ã§ãã‚‹éƒ¨åˆ†ã§ã‚る.ただし,これに該当するすべてのARMコア
     111に対応できているわけではない.新しいチップにポーティングする際には,コ
     112ア依存部に何らかの修正がå¿
     113要になることも多いと思われる.
    58114
    59115ARMコアのプロセッサコア略称を"arm"とする.GNU開発環境向けのARMコア依存
     
    284340ˆã®cpsrをspsrに復帰 */
    285341        msr             spsr_cxsf, r0
    286         ldmfd   sp!, {r0-r4,r12,lr,pc}^         /* 例外処理からの復帰 */
    287 ----------------------------------------
    288 
    289 ã“こで,スクラッチレジスタに加えてr4も復帰しているのは,例外の出å
    290 ¥å£å‡¦
    291 ç†ã§ã‚¹ã‚¯ãƒ©ãƒƒãƒãƒ¬ã‚¸ã‚¹ã‚¿ä»¥å¤–に使えるレジスタとして,r4を確保するためであ
    292 ã‚‹ï¼Ž
     342        ldmfd   sp!, {r0-r5,r12,lr,pc}^         /* 例外処理からの復帰 */
     343----------------------------------------
     344
     345ここで,スクラッチレジスタに加えてr4とr5も復帰しているのは,例外の出å
     346¥
     347口処理でスクラッチレジスタ以外に使えるレジスタとして,r4とr5を確保する
     348ためである(実際には,r4だけが使えれば十分であるが,スタックポインタを
     3498バイト境界にアラインするためにr5も保存/復帰している).
    293350
    294351この出口を実行する時点で,スタックは次のようになっているå¿
     
    310367        |       r4       |
    311368        +----------------+ <- sp+0x18
     369        |       r5       |
     370        +----------------+ <- sp+0x1c
    312371        |       r12      |
    313         +----------------+ <- sp+0x1c
     372        +----------------+ <- sp+0x20
    314373        |       lr       |
    315         +----------------+ <- sp+0x20
     374        +----------------+ <- sp+0x24
    316375        |    戻り番地    |
    317         +----------------+
     376        +----------------+ <- sp+0x28
    318377
    319378これに対応する例外のå
     
    325384         */
    326385        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_IRQ_BIT)
    327         stmfd   sp!, {r0-r4,r12,lr,pc}          /* pcはスペース確保のため */  (*1)
     386        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */  (*1)
    328387
    329388        /*
     
    339398         */
    340399        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_IRQ_BIT)
    341         str             r2, [sp,#0x1c]                  /* 戻り番地をスタックに保存 */              (*2)
     400        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */              (*2)
    342401        push    {r1}                                    /* spsrをスタックに保存 */
    343402----------------------------------------
     
    346405り,その時点で保存するpcの値は使わない.(*2)で,確保したスペースに戻り
    347406番地を格納する.格納å
    348 ˆã‚’[sp,#0x1c]とするのは,この時点ではspは上の図の
    349 ï¼ˆsp+0x04)を指しており,戻り番地は(sp+0x20)に格納したいためである.
     407ˆã‚’[sp,#0x20]とするのは,この時点ではspは上の図の
     408(sp+0x04)を指しており,戻り番地は(sp+0x24)に格納したいためである.
    350409
    351410例外を受け付けるとIビットをセットするため,例外のå
     
    393452
    394453----------------------------------------
    395         ldmfd   sp!, {r0-r4,r12,lr}
     454        ldmfd   sp!, {r0-r5,r12,lr}
    396455        rfefd   sp!
    397456----------------------------------------
    398457
    399 ã“こで,スクラッチレジスタに加えてr4も復帰しているのは,例外の出å
    400 ¥å£å‡¦
    401 ç†ã§ã‚¹ã‚¯ãƒ©ãƒƒãƒãƒ¬ã‚¸ã‚¹ã‚¿ä»¥å¤–に使えるレジスタとして,r4を確保するためであ
    402 ã‚‹ï¼Ž
     458ここで,スクラッチレジスタに加えてr4とr5も復帰しているのは,例外の出å
     459¥
     460口処理でスクラッチレジスタ以外に使えるレジスタとして,r4とr5を確保する
     461ためである(実際には,r4だけが使えれば十分であるが,スタックポインタを
     4628バイト境界にアラインするためにr5も保存/復帰している).
    403463
    404464この出口を実行する時点で,スタックは次のようになっているå¿
     
    418478        |       r4       |
    419479        +----------------+ <- sp+0x14
     480        |       r5       |
     481        +----------------+ <- sp+0x18
    420482        |       r12      |
    421         +----------------+ <- sp+0x18
     483        +----------------+ <- sp+0x1c
    422484        |       lr       |
    423         +----------------+ <- sp+0x1c
     485        +----------------+ <- sp+0x20
    424486        |    戻り番地    |
    425         +----------------+ <- sp+0x20
     487        +----------------+ <- sp+0x24
    426488        |      cpsr      |
    427         +----------------+
     489        +----------------+ <- sp+0x28
    428490
    429491これに対応する例外のå
     
    443505         */
    444506        cps             #CPSR_SVC_MODE
    445         stmfd   sp!, {r0-r4,r12,lr}
     507        stmfd   sp!, {r0-r5,r12,lr}
    446508----------------------------------------
    447509
     
    585647中でå¿
    586648要なæƒ
    587 å ±ï¼ˆä¾‹ãˆã°ï¼Œå‰²è¾¼ã¿ç•ªå·ï¼‰ã¯ï¼Œirc_begin_intでスタック上に保存
    588 ã—ておくå¿
    589 è¦ãŒã‚る.これを可能にするために,irc_begin_intが呼び出された
    590 ã‚‰ï¼Œirc_end_intもå¿
    591 ãšå‘¼ã³å‡ºã•ã‚Œã‚‹ã‚ˆã†ã«ã—ておく.スプリアス割込みの場合
    592 ã«ã‚‚,irc_end_intを呼び出すようにしている.
    593 
     649報(例えば,割込み番号)は,irc_begin_intでスタックのå
     650ˆé ­ã«
     651保存しておくå¿
     652要がある.これに用いるために,スタックのå
     653ˆé ­ã«1ワードの空
     654き領域を設けている.
     655
     656irc_end_intでå¿
     657要なæƒ
     658報が1ワードで不足する場合には,irc_begin_intでスタッ
     659クに積み,irc_end_intでスタックから取り出す.これを可能にするために,
     660irc_begin_intが呼び出されたら,irc_end_intもå¿
     661ず呼び出されるようにして
     662おく.スプリアス割込みの場合にも,irc_end_intを呼び出すようにしている.
    594663サブルーチン(irc_begin_int)の中でスタックに積み増すのは,一般には採用
    595664しないプログラミング技法であるが,irc_begin_intからirc_end_intに渡すæƒ
     
    894963報を記憶している領域のå
    895964ˆé ­ç•ªåœ°ã‚’第1パラメータ,CPU例外ハンド
    896 ãƒ©ç•ªå·ã‚’第2パラメータとして呼び出す.r12に保存されているCPU例外のæƒ
    897 å ±ã‚’
    898 è¨˜æ†¶ã—ている領域のå
    899 ˆé ­ç•ªåœ°ãŒä¿å­˜ã•ã‚Œã‚‹ã‚ˆã†ã«ï¼Œå¿
    900 è¦ã«å¿œã˜ã¦ï¼Œã‚¹ã‚¿ãƒƒã‚¯ã«
    901 ä¿å­˜ã™ã‚‹ï¼Ž
     965ラ番号を第2パラメータとして呼び出す.
    902966
    903967----------------------------------------
     
    919983クに戻す.その後,CPU例外が発生した状況を判断するための追加æƒ
    920984報をスタッ
    921 ã‚¯ä¸Šã‹ã‚‰æ¨ã¦ã‚‹ï¼Žä¾‹å¤–ネストカウントが0になった場合の処理は,割込みハンド
    922 ãƒ©ã®å‡ºå£å‡¦ç†ã¨å
    923 ±é€šã§ã‚るため,ret_int_1に分岐する.
     985ク上から捨てる.例外ネストカウントが0になった場合の処理は,追加æƒ
     986報をス
     987タック上から捨てること以外は,割込みハンドラの出口処理と同様である.
    924988
    925989----------------------------------------
     
    9571021#endif /* TOPPERS_SUPPORT_OVRHDR */
    9581022                }
    959 ----------------------------------------
    960 
    961 ä»¥ä¸Šã®å‡¦ç†ã«ã¯ï¼Œå‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ã®å‡ºå£å‡¦ç†ã®ãƒ«ãƒ¼ãƒãƒ³ã‚’流用する.
    962 
    963 ----------------------------------------
    9641023                CPU例外処理からのリターン後に,CPUロック解除状æ
    9651024‹ã«æˆ»ã‚‹ã‚ˆã†ã«æº–備する
     
    9721031----------------------------------------
    9731032
    974 ã‚¹ã‚¯ãƒ©ãƒƒãƒãƒ¬ã‚¸ã‚¹ã‚¿ã‚’復帰した後,例外からリターンする.
    975 
    9761033●スタックポインタが不正の場合の対策
    9771034
  • asp3_wo_tecs/trunk/arch/arm_gcc/doc/arm_memo.txt

    r302 r306  
    8282        - 物理メモリシステムアーキテクチャ(PMSA)でのレジスタ
    8383        - パフォーマンスモニタレジスタ
     84・その他(備忘録)
    8485
    8586○参考文献
     
    651652・ARMv7-A(VMSA)におけるキャッシュ・分岐予測メンテナンス操作
    652653        - ICIALLIS, ICIALLU, ICIMVAU … 命令キャッシュと分岐予測の無効化
    653         - BPIALLIS, CPIALL, CPIMVA      … 分岐予測の無効化
     654        - BPIALLIS, BPIALL, BPIMVA      … 分岐予測の無効化
    654655        - DCIMVAC, DCISW                        … データ/統合キャッシュの無効化
    655656        - DCCMVAC, DCCSW, DCCMVAU       â€¦ データ/統合キャッシュのクリーン
     
    13221323●パフォーマンスモニタレジスタ
    13231324
     1325○その他(備忘録)
     1326
     1327●スタックのアラインメント
     1328
     1329ARMアーキテクチャ向けプロシージャコール標準(AAPCS)では,すべての外部
     1330インタフェースにおいて,スタックポインタを8バイト境界でアラインするå¿
     1331要
     1332がある。
     1333
    13241334以上
  • asp3_wo_tecs/trunk/arch/arm_gcc/doc/arm_vmsa_memo.txt

    r302 r306  
    55                作成è€
    66: 高田広章(名古屋大学)
    7                 最終更新: 2015å¹´8月6日
     7                最終更新: 2016å¹´1月16日
    88
    99○メモの位置づけ
     
    382382±æœ‰ï¼ˆ1)か非å
    383383±æœ‰ï¼ˆ0)か
     384・ビット[0]
     385        ページテーブルウォークがキャッシュできる(1)かできない(0)か
    384386・他のビットは未使用
     387
     388・ARMv5以前は,ビット[4:0]はサポートしておらず,0にすべき(以下の記述よ
     389り判断).
     390
     391参考文献[1]のB4.7.1節より
     392--------------------
     393Prior to VMSAv6, a single TTBR existed. Only bits[31:14] of the
     394Translation Table Base Register are significant, and bits[13:0] should
     395be zero.
     396--------------------
    385397
    386398●TTBR1(Translation Table Base Register 1)… (0, c2, c0, 1)
  • asp3_wo_tecs/trunk/arch/arm_gcc/doc/gic_design.txt

    r302 r306  
    33                GIC(ARM Generic Interrupt Controller)依存部 設計メモ
    44
    5                 対応バージョン: Release 3.B.0
    6                 最終更新: 2015å¹´7月24日
    7 
     5                対応バージョン: Release 3.0.0
     6                最終更新: 2016å¹´1月16日
     7
     8----------------------------------------------------------------------
     9 TOPPERS/ASP Kernel
     10     Toyohashi Open Platform for Embedded Real-Time Systems/
     11     Advanced Standard Profile Kernel
     12
     13 Copyright (C) 2014-2016 by Embedded and Real-Time Systems Laboratory
     14             Graduate School of Information Science, Nagoya Univ., JAPAN
     15 
     16 ä¸Šè¨˜è‘—作権è€
     17は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     18 ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
     19 å¤‰ãƒ»å†é
     20å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
     21 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     22     æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
     23     ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
     24 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     25     ç”¨ã§ãã‚‹å½¢ã§å†é
     26å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
     27å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
     28     è€
     29マニュアルなど)に,上記の著作権表示,この利用条件および下記
     30     ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
     31 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     32     ç”¨ã§ããªã„形で再é
     33å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
     34     ã¨ï¼Ž
     35   (a) 再é
     36å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
     37マニュアルなど)に,上記の著
     38       ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
     39   (b) 再é
     40å¸ƒã®å½¢æ
     41‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
     42       å ±å‘Šã™ã‚‹ã“と.
     43 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     44     å®³ã‹ã‚‰ã‚‚,上記著作権è€
     45およびTOPPERSプロジェクトをå
     46è²¬ã™ã‚‹ã“と.
     47     ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
     48     ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
     49およびTOPPERSプロジェクトを
     50     å
     51è²¬ã™ã‚‹ã“と.
     52 
     53 æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
     54お
     55 ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     56 ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
     57 ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
     58 ã®è²¬ä»»ã‚’負わない.
     59 
     60 $Id: gic_design.txt 533 2016-01-15 23:29:33Z ertl-hiro $
    861----------------------------------------------------------------------
    962
     
    1467        - GIC依存部を構成するファイル
    1568・チップ依存のパラメータ
     69        - アプリケーションから参ç
     70§ã§ãã‚‹ãƒ‘ラメータ
     71        - カーネルå†
     72部で使用するパラメータ
    1673・GICにおける割込みハンドラおよびCPU例外ハンドラの出å
    1774¥å£å‡¦ç†
    1875        - GICにおける割込みハンドラの出å
     76¥å£å‡¦ç†
     77        - GICにおけるCPU例外ハンドラの出å
    1978¥å£å‡¦ç†
    2079
     
    43102GIC依存部は,次の3つのファイルで構成される.
    44103
    45 gic_kernel_impl.h
    46 gic_kernel_impl.c
    47 gic_support.S
     104  arch/arm_gcc/common/
     105        gic_kernel_impl.h       ã‚«ãƒ¼ãƒãƒ«ã®å‰²è¾¼ã¿GIC依存部のヘッダファイル
     106        gic_kernel_impl.c       ã‚«ãƒ¼ãƒãƒ«ã®å‰²è¾¼ã¿GIC依存部
     107        gic_support.S           ã‚«ãƒ¼ãƒãƒ«ã®å‰²è¾¼ã¿GIC依存部のアセンブリ言語部
    48108
    49109○チップ依存のパラメータ
    50110
    51 TMIN_INTPRI
    52 TMAX_INTPRI
    53 
    54 ã‚«ãƒ¼ãƒãƒ«ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜éƒ¨ã®ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰gic_kernel_impl.hをインク
    55 ãƒ«ãƒ¼ãƒ‰ã™ã‚‹å‰ã«ï¼Œå¿
    56 è¦ã«å¿œã˜ã¦ï¼Œä»¥ä¸‹ã®å®šæ•°ã‚’マクロ定義しておく.
     111●アプリケーションから参ç
     112§ã§ãã‚‹ãƒ‘ラメータ
     113
     114target_kernel.h(または,そこからインクルードされるファイル)で,以下の
     115定数をマクロ定義しておく.
     116
     117(1) TMIN_INTPRI                 å‰²è¾¼ã¿å„ªå
     118ˆåº¦ã®æœ€å°å€¤ï¼ˆæœ€é«˜å€¤ï¼‰
     119(2) TMAX_INTPRI                 å‰²è¾¼ã¿å„ªå
     120ˆåº¦ã®æœ€å¤§å€¤ï¼ˆæœ€ä½Žå€¤ï¼‰
     121
     122TMAX_INTPRIは,-1に定義する.TMAX_INTPRIは,ターゲットチップのGICでサポー
     123トする割込み優å
     124ˆåº¦ã®æ®µæ•°ã«ã‚ˆã‚Šï¼Œ-15,-31,-63,-127,-255のいずれかに定
     125義する.
     126
     127●カーネルå†
     128部で使用するパラメータ
     129
     130target_kernel_impl.h(または,そこからインクルードされるファイル)から
     131gic_kernel_impl.hをインクルードする前に,å¿
     132要に応じて,以下の定数をマク
     133ロ定義しておく.
    57134
    58135(1) GIC_TNUM_INTNO              割込みの数
     
    62139Peripheral Interrupt)の合計数.
    63140
    64 (2) GIC_PRI_LEVEL               å‰²è¾¼ã¿å„ªå
    65 ˆåº¦ã®æ®µæ•°
    66 
    67 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒãƒƒãƒ—のGICがサポートする割込み優å
    68 ˆåº¦ã®æ®µæ•°ï¼Ž16,32,64,128,
    69 256のいずれか.
    70 
    71 (3) GICC_BASE                   CPUインタフェースのベースアドレス
    72 (4) GICD_BASE                   ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュータのベースアドレス
     141(2) GICC_BASE                   CPUインタフェースのベースアドレス
     142(3) GICD_BASE                   ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュータのベースアドレス
    73143
    74144GICのCPUインタフェースおよびディストリビュータのベースアドレス.
    75145
    76 (5) TOPPERS_SAFEG_SECURE        セキュアモード(オプション)
     146(4) TOPPERS_SAFEG_SECURE        セキュアモード(オプション)
    77147
    78148セキュアモードでカーネルを動作させ,FIQをカーネル管理の割込みと扱う場合
    79149に,このシンボルをマクロ定義する.
    80150
    81 (6) GIC_ARM11MOCORE             ARM11 MPCoreへの対応(オプション)
     151(5) GIC_ARM11MPCORE             ARM11 MPCoreへの対応(オプション)
    82152
    83153ARM11 MPCoreのDistributed Interrupt Controllerの場合には,このシンボル
     
    284354¥å£å‡¦ç†
    285355
    286 
     356GICにおけるCPU例外ハンドラのå
     357¥å£å‡¦ç†ï¼ˆirc_begin_exc)では,CPU例外発生
     358前の割込み優å
     359ˆåº¦ãƒžã‚¹ã‚¯ã‚’スタックに保存し,CPU例外ハンドラのå
     360¥å£å‡¦ç†
     361(irc_end_exc)で割込み優å
     362ˆåº¦ãƒžã‚¹ã‚¯ã‚’å
     363ƒã«æˆ»ã™ï¼Ž
     364
     365----------------------------------------
     366ALABEL(irc_begin_exc)
     367        /*
     368         *  割込み優å
     369ˆåº¦ãƒžã‚¹ã‚¯ã‚’保存する.
     370         */
     371        ldr             r1, =GICC_PMR           /* 現在の割込み優å
     372ˆåº¦ã‚’取得 */
     373        ldr             r2, [r1]
     374        push    {r2}                            /* irc_end_excで用いるæƒ
     375報を保存 */
     376        bx              lr
     377----------------------------------------
     378ALABEL(irc_end_exc)
     379        /*
     380         *  割込み優å
     381ˆåº¦ãƒžã‚¹ã‚¯ã‚’å
     382ƒã«æˆ»ã™ï¼Ž
     383         */
     384        pop             {r2}                            /* irc_begin_excで保存したæƒ
     385報を復帰 */
     386        ldr             r1, =GICC_PMR           /* 割込み優å
     387ˆåº¦ãƒžã‚¹ã‚¯ã‚’å
     388ƒã«æˆ»ã™ */
     389        str             r2, [r1]
     390        bx              lr
     391----------------------------------------
    287392
    288393以上
  • asp3_wo_tecs/trunk/arch/arm_gcc/doc/gic_memo.txt

    r302 r306  
    55                作成è€
    66: 高田広章(名古屋大学)
    7                 最終更新: 2015å¹´7月25日
     7                最終更新: 2016å¹´3月24日
    88
    99○メモの位置づけ
     
    340340        - 各割込みのコンフィギュレーションを2ビットで設定
    341341        - レベルトリガかエッジトリガかを設定
     342                        上位ビットが0:レベルトリガ
     343                        上位ビットが1:エッジトリガ
    342344        - GICv1より前の一部の実è£
    343345では,N-Nモデルか1-Nモデルかもここで設定
    344                         0:N-Nモデル
    345                         1:1-Nモデル
     346                        下位ビットが0:N-Nモデル
     347                        下位ビットが1:1-Nモデル
     348        - GICv1以降では,下位ビットをどのように設定すべきか?
     349                        文献[1]には明記がない
     350                        文献[2]によると,1にすべきとも読める
     351        → GIC_ARM11MPCOREが定義されていれば1,そうでなければ0に初期化する.
    346352
    347353割込みノンセキュアアクセス制御レジスタ(GICD_NSCARn)0xe00〜0xefc … オプション
  • asp3_wo_tecs/trunk/arch/arm_gcc/doc/mpcore_memo.txt

    r302 r306  
    55                作成è€
    66: 高田広章(名古屋大学)
    7                 最終更新: 2015å¹´8月9日
     7                最終更新: 2016å¹´1月16日
    88
    99○メモの位置づけ
     
    2222
    2323・参考文献
     24・MPCoreとは?
     25・SCU(Snoop Control Unit)
    2426・ARM CT11MPcore with RealView Emulation Baseboard
    2527        - 用語の整理
     
    5355HBI-0159, HBI-0175, HBI-0176
    5456DUI0351E_realview_platform_baseboard_for_arm11_mpcore_ug.pdf
     57
     58○MPCoreとは?
     59
     60MPCoreとは,ARMコアを1〜4個と,SCU(Snoop Control Unit)など,マルチコ
     61アシステムにå¿
     62要な周辺回路を含むプロセッサアーキテクチャの名称と思われ
     63る.
     64
     65参考文献[1]によると,ARM11 MPCoreとは,1〜4個のMP11 CPU(コア)を載せ,
     66SCU,DIC(Distributed Interrupt Controller),コア毎のプライベートタイ
     67マとプライベートウォッチドッグ,AXIインタフェースなどを含むプロセッサの
     68名称である.MP11 CPUとは,ARM11を拡張したコアのことと思われる.
     69
     70参考文献[2]によると,Cortex-A9 MPCoreとは,1〜4個のCortex-A9プロセッサ
     71(コア)を載せ,SCU,GIC(Generic Interrupt Controller),プライベート
     72ペリフェラル(グローバルタイマ,コア毎のプライベートタイマとウォッチドッ
     73グ),AXIインタフェース(オプション)などを含むプロセッサの名称である.
     74
     75以上より,MPCoreチップ依存部には,SCU,GIC(またはDIC),プライベートペ
     76リフェラルを扱うコードを含めるのが妥当と考えられる.ただし,GIC(および
     77DIC)については,別のARMプロセッサにもå
     78±é€šã§ä½¿ã‚ã‚Œã‚‹ãŸã‚ï¼ŒARMコア依存部
     79に含める.
     80
     81○SCU(Snoop Control Unit)
     82
     83SCUは,各コアが持つL1キャッシュのコヒーレンスを保つための回路である.
     84ARM11 MPCoreでは,SCUがパフォーマンスモニタの機能を持っているが,
     85Cortex-Aシリーズでは,パフォーマンスモニタは独立した機能として用意され
     86ており,SCUはパフォーマンスモニタの機能を持たない.
     87
     88以下では,SCUの制御レジスタについてまとめる.
     89
     90SCU制御レジスタ(MPCORE_SCU_CTRL)… 32ビット
     91!ARM11 MPCoreとCortex-A9 MPCoreで,ビットé
     92ç½®ãŒç•°ãªã‚‹ï¼Ž
     93
     94SCUコンフィギュレーションレジスタ(MPCORE_SCU_CONFIG)… 32ビット
     95
     96SCU CPUパワーステータスレジスタ(MPCORE_SCU_CPUSTAT)… 32ビット
     97!ARM11 MPCoreとCortex-A9 MPCoreで,ビットé
     98ç½®ãŒç•°ãªã‚‹ï¼Ž
     99
     100SCUå
     101¨ç„¡åŠ¹åŒ–レジスタ(MPCORE_SCU_INVALL)… 32ビット
     102        - このレジスタに書き込むことで,タグメモリを無効化できる.
    55103
    56104○ARM CT11MPcore with RealView Emulation Baseboard
     
    133181        - 以下のレジスタのアドレスを決める
    134182                + ARM11 MPCoreのレジスタ
    135                         Snoop Control Unit(SCU)の制御レジスタ
     183                        SCUの制御レジスタ
    136184                + L220キャッシュコントローラのレジスタ
    137185                + ARM11 MPCoreテストチップのレジスタ
     
    167215蔵タイマ([1] 9.2節)
    168216
    169 ARM11 MPCoreは,コア毎に,タイマとウォッチドッグを持つ.ウォッチドッグ
    170 ã¯ï¼Œã‚¿ã‚¤ãƒžã¨ã—て使用することもできる.
     217ARM11 MPCoreは,コア毎に,プライベートタイマとプライベートウォッチドッ
     218グを持つ.ウォッチドッグは,タイマとして使用することもできる.
    171219
    172220●タイマ
Note: See TracChangeset for help on using the changeset viewer.