- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_timer.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 47 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 33 * 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * ã¿ã¤ããã©ã¤ãï¼RZ/A1 OSã¿ã¤ãç¨ï¼44 * タイマドライバ(RZ/A1 OSタイマ用) 60 45 * 61 * RZ/A1ã¯2ãã£ã³ãã«ã®OSã¿ã¤ããæã¤ãï¼ãã®å 62 ã®1ã¤ãç¨ãã¦é«å解è½ã¿ 63 * ã¤ããï¼ãã1ã¤ãç¨ãã¦ãªã¼ãã©ã³ã¿ã¤ããå®ç¾ããï¼ 46 * RZ/A1は2チャンネルのOSタイマを持つが,その内の1つを用いて高分解能タ 47 * イマを,もう1つを用いてオーバランタイマを実現する. 64 48 */ 65 49 … … 71 55 72 56 /* 73 * ã¿ã¤ãå²è¾¼ã¿ãã³ãã©ç»é²ã®ããã®å®æ° 74 */ 75 #define INHNO_TIMER INTNO_OSTM0 /* å²è¾¼ã¿ãã³ãã©çªå· */ 76 #define INTNO_TIMER INTNO_OSTM0 /* å²è¾¼ã¿çªå· */ 77 #define INTPRI_TIMER (TMAX_INTPRI - 1) /* å²è¾¼ã¿åªå 78 度 */ 79 #define INTATR_TIMER TA_EDGE /* å²è¾¼ã¿å±æ§ */ 80 81 /* 82 * ãªã¼ãã©ã³ã¿ã¤ãå²è¾¼ã¿ãã³ãã©ç»é²ã®ããã®å®æ° 57 * タイマ割込みハンドラ登録のための定数 58 */ 59 #define INHNO_TIMER INTNO_OSTM0 /* 割込みハンドラ番号 */ 60 #define INTNO_TIMER INTNO_OSTM0 /* 割込み番号 */ 61 #define INTPRI_TIMER (TMAX_INTPRI - 1) /* 割込み優先度 */ 62 #define INTATR_TIMER TA_EDGE /* 割込み属性 */ 63 64 /* 65 * オーバランタイマ割込みハンドラ登録のための定数 83 66 */ 84 67 #ifdef TOPPERS_SUPPORT_OVRHDR 85 #define INHNO_OVRTIMER INTNO_OSTM1 /* å²è¾¼ã¿ãã³ãã©çªå· */ 86 #define INTNO_OVRTIMER INTNO_OSTM1 /* å²è¾¼ã¿çªå· */ 87 #define INTPRI_OVRTIMER TMAX_INTPRI /* å²è¾¼ã¿åªå 88 度 */ 89 #define INTATR_OVRTIMER TA_EDGE /* å²è¾¼ã¿å±æ§ */ 68 #define INHNO_OVRTIMER INTNO_OSTM1 /* 割込みハンドラ番号 */ 69 #define INTNO_OVRTIMER INTNO_OSTM1 /* 割込み番号 */ 70 #define INTPRI_OVRTIMER TMAX_INTPRI /* 割込み優先度 */ 71 #define INTATR_OVRTIMER TA_EDGE /* 割込み属性 */ 90 72 #endif /* TOPPERS_SUPPORT_OVRHDR */ 91 73 92 74 /* 93 * OS ã¿ã¤ãã®å¨æ³¢æ°ã®æ³å®å¤ã®ãã§ãã¯75 * OSタイマの周波数の想定値のチェック 94 76 * 95 * ç¾å¨ã®å®è£ 96 ã¯ï¼ã¯ããã¯ã33.33â¦MHzã®å ´åã®ã¿ã«å¯¾å¿ãã¦ããï¼ 77 * 現在の実装は,クロックが33.33…MHzの場合のみに対応している. 97 78 */ 98 79 #if OSTM_CLK != 33333333UL … … 101 82 102 83 /* 103 * OS ã¿ã¤ãã¬ã¸ã¹ã¿ã®çªå°ã®å®ç¾©84 * OSタイマレジスタの番地の定義 104 85 */ 105 86 #define OSTM_CMP(base) ((uint32_t *)(base + 0x00U)) … … 111 92 112 93 /* 113 * OS ã¿ã¤ã ã«ã¦ã³ãéå§ããªã¬ã¬ã¸ã¹ã¿ã®è¨å®å¤ã®å®ç¾©94 * OSタイマ カウント開始トリガレジスタの設定値の定義 114 95 */ 115 96 #define OSTM_TS_START 0x01U 116 97 117 98 /* 118 * OS ã¿ã¤ã ã«ã¦ã³ãåæ¢ããªã¬ã¬ã¸ã¹ã¿ã®è¨å®å¤ã®å®ç¾©99 * OSタイマ カウント停止トリガレジスタの設定値の定義 119 100 */ 120 101 #define OSTM_TT_STOP 0x01U 121 102 122 103 /* 123 * OS ã¿ã¤ã å¶å¾¡ã¬ã¸ã¹ã¿ã®è¨å®å¤ã®å®ç¾©124 */ 125 #define OSTM_CTL_INTERVAL 0x00U /* ã¤ã³ã¿ã¼ãã«ã¿ã¤ãã¢ã¼ã*/126 #define OSTM_CTL_FRCMP 0x02U /* ããªã¼ã©ã³ãã³ã°ã³ã³ãã¢ã¢ã¼ã*/104 * OSタイマ 制御レジスタの設定値の定義 105 */ 106 #define OSTM_CTL_INTERVAL 0x00U /* インターバルタイマモード */ 107 #define OSTM_CTL_FRCMP 0x02U /* フリーランニングコンペアモード */ 127 108 128 109 #ifndef TOPPERS_MACRO_ONLY 129 110 130 111 /* 131 * é«å解è½ã¿ã¤ãã®èµ·åå¦ç112 * 高分解能タイマの起動処理 132 113 */ 133 114 extern void target_hrt_initialize(intptr_t exinf); 134 115 135 116 /* 136 * é«å解è½ã¿ã¤ãã®åæ¢å¦ç117 * 高分解能タイマの停止処理 137 118 */ 138 119 extern void target_hrt_terminate(intptr_t exinf); 139 120 140 121 /* 141 * é«å解è½ã¿ã¤ãã®ç¾å¨ã®ã«ã¦ã³ãå¤ã®èªåºã122 * 高分解能タイマの現在のカウント値の読出し 142 123 */ 143 124 Inline HRTCNT … … 148 129 cnt = sil_rew_mem(OSTM_CNT(OSTM0_BASE)); 149 130 150 /* μç§åä½ã«å¤æï¼ã¯ããã¯ã33.33â¦MHzã§ããåæï¼*/131 /* μ秒単位に変換(クロックが33.33…MHzである前提)*/ 151 132 cnt1 = cnt / 1000000000; 152 133 return((HRTCNT)((cnt - cnt1 * 999999999) * 3 / 100 + cnt1 * 30000000)); … … 154 135 155 136 /* 156 * é«å解è½ã¿ã¤ãã¸ã®å²è¾¼ã¿ã¿ã¤ãã³ã°ã®è¨å®137 * 高分解能タイマへの割込みタイミングの設定 157 138 * 158 * é«å解è½ã¿ã¤ããï¼hrtcntã§æå®ããå¤ã«ã¦ã³ãã¢ãããããå²è¾¼ã¿ãçº159 * çãããããã«è¨å®ããï¼139 * 高分解能タイマを,hrtcntで指定した値カウントアップしたら割込みを発 140 * 生させるように設定する. 160 141 */ 161 142 extern void target_hrt_set_event(HRTCNT hrtcnt); 162 143 163 144 /* 164 * é«å解è½ã¿ã¤ãå²è¾¼ã¿ã®è¦æ±145 * 高分解能タイマ割込みの要求 165 146 */ 166 147 extern void target_hrt_raise_event(void); 167 148 168 149 /* 169 * å²è¾¼ã¿ã¿ã¤ãã³ã°ã«æå®ããæ大å¤150 * 割込みタイミングに指定する最大値 170 151 */ 171 152 #define HRTCNT_BOUND 100000002U 172 153 173 154 /* 174 * é«å解è½ã¿ã¤ãå²è¾¼ã¿ãã³ãã©155 * 高分解能タイマ割込みハンドラ 175 156 */ 176 157 extern void target_hrt_handler(void); … … 179 160 180 161 /* 181 * ãªã¼ãã©ã³ã¿ã¤ãã®åæåå¦ç162 * オーバランタイマの初期化処理 182 163 */ 183 164 extern void target_ovrtimer_initialize(intptr_t exinf); 184 165 185 166 /* 186 * ãªã¼ãã©ã³ã¿ã¤ãã®åæ¢å¦ç167 * オーバランタイマの停止処理 187 168 */ 188 169 extern void target_ovrtimer_terminate(intptr_t exinf); 189 170 190 171 /* 191 * ãªã¼ãã©ã³ã¿ã¤ãã®åä½éå§172 * オーバランタイマの動作開始 192 173 */ 193 174 Inline void … … 201 182 202 183 /* 203 * ãªã¼ãã©ã³ã¿ã¤ãã®åæ¢184 * オーバランタイマの停止 204 185 */ 205 186 extern PRCTIM target_ovrtimer_stop(void); 206 187 207 188 /* 208 * ãªã¼ãã©ã³ã¿ã¤ãã®ç¾å¨å¤ã®èªåºã189 * オーバランタイマの現在値の読出し 209 190 */ 210 191 extern PRCTIM target_ovrtimer_get_current(void); 211 192 212 193 /* 213 * ãªã¼ãã©ã³ã¿ã¤ãå²è¾¼ã¿ãã³ãã©194 * オーバランタイマ割込みハンドラ 214 195 */ 215 196 extern void target_ovrtimer_handler(void);
Note:
See TracChangeset
for help on using the changeset viewer.