- 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.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r279 r321 7 7 * Graduate School of Information Science, Nagoya Univ., JAPAN 8 8 * 9 * ä¸è¨èä½æ¨©è 10 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 11 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 12 * å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 14 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 15 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 16 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 17 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 18 * ç¨ã§ããå½¢ã§åé 19 å¸ããå ´åã«ã¯ï¼åé 20 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 21 * è 22 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 23 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 24 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 25 * ç¨ã§ããªãå½¢ã§åé 26 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 27 * ã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (b) åé 33 å¸ã®å½¢æ 34 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 35 * å ±åãããã¨ï¼ 36 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 37 * 害ãããï¼ä¸è¨èä½æ¨©è 38 ããã³TOPPERSããã¸ã§ã¯ããå 39 責ãããã¨ï¼ 40 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 41 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 42 ããã³TOPPERSããã¸ã§ã¯ãã 43 * å 44 責ãããã¨ï¼ 45 * 46 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 * ã®è²¬ä»»ãè² ããªãï¼ 9 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 11 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 14 * スコード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 16 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 17 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 18 * の無保証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 20 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 21 * と. 22 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 23 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 24 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 25 * 報告すること. 26 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 27 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 29 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 30 * 免責すること. 31 * 32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 * の責任を負わない. 52 37 * 53 38 * $Id$ … … 55 40 56 41 /* 57 * ã¿ã¤ããã©ã¤ãï¼RZ/A1 OSã¿ã¤ãç¨ï¼42 * タイマドライバ(RZ/A1 OSタイマ用) 58 43 * 59 * RZ/A1ã¯2ãã£ã³ãã«ã®OSã¿ã¤ããæã¤ãï¼ãã®å 60 ã®1ã¤ãç¨ãã¦é«å解è½ã¿ 61 * ã¤ããï¼ãã1ã¤ãç¨ãã¦ãªã¼ãã©ã³ã¿ã¤ããå®ç¾ããï¼ 44 * RZ/A1は2チャンネルのOSタイマを持つが,その内の1つを用いて高分解能タ 45 * イマを,もう1つを用いてオーバランタイマを実現する. 62 46 */ 63 47 … … 72 56 73 57 /* 74 * ã¿ã¤ãã®èµ·åå¦ç58 * タイマの起動処理 75 59 */ 76 60 void … … 78 62 { 79 63 /* 80 * OS ã¿ã¤ããããªã¼ã©ã³ãã³ã°ã³ã³ãã¢ã¢ã¼ãã«è¨å®ããï¼64 * OSタイマをフリーランニングコンペアモードに設定する. 81 65 */ 82 66 sil_wrb_mem(OSTM_CTL(OSTM0_BASE), OSTM_CTL_FRCMP); 83 67 84 68 /* 85 * OS ã¿ã¤ãã®è¨å®å¤ãæ大å¤ã«ãã¦ããï¼69 * OSタイマの設定値を最大値にしておく. 86 70 */ 87 71 sil_wrw_mem(OSTM_CMP(OSTM0_BASE), 0xffffffff); 88 72 89 73 /* 90 * OS ã¿ã¤ããåä½éå§ããï¼74 * OSタイマを動作開始する. 91 75 */ 92 76 sil_wrb_mem(OSTM_TS(OSTM0_BASE), OSTM_TS_START); 93 77 94 78 /* 95 * ã¿ã¤ãå²è¾¼ã¿è¦æ±ãã¯ãªã¢ããï¼79 * タイマ割込み要求をクリアする. 96 80 */ 97 81 clear_int(INTNO_OSTM0); … … 99 83 100 84 /* 101 * ã¿ã¤ãã®åæ¢å¦ç85 * タイマの停止処理 102 86 */ 103 87 void … … 105 89 { 106 90 /* 107 * OS ã¿ã¤ããåæ¢ããï¼91 * OSタイマを停止する. 108 92 */ 109 93 sil_wrb_mem(OSTM_TT(OSTM0_BASE), OSTM_TT_STOP); 110 94 111 95 /* 112 * ã¿ã¤ãå²è¾¼ã¿è¦æ±ãã¯ãªã¢ããï¼96 * タイマ割込み要求をクリアする. 113 97 */ 114 98 clear_int(INTNO_OSTM0); … … 116 100 117 101 /* 118 * é«å解è½ã¿ã¤ãã¸ã®å²è¾¼ã¿ã¿ã¤ãã³ã°ã®è¨å®102 * 高分解能タイマへの割込みタイミングの設定 119 103 */ 120 104 void … … 125 109 126 110 /* 127 * ç¾å¨ã®ã«ã¦ã³ãå¤ãèªã¿ï¼hrtcntå¾ã«å²è¾¼ã¿ãçºçããããã«è¨å®ããï¼111 * 現在のカウント値を読み,hrtcnt後に割込みが発生するように設定する. 128 112 */ 129 113 current = sil_rew_mem(OSTM_CNT(OSTM0_BASE)); … … 131 115 132 116 /* 133 * ä¸ã§ç¾å¨ã®ã«ã¦ã³ãå¤ãèªãã§ä»¥éã«ï¼cnt以ä¸ã«ã¦ã³ãã¢ãããã¦ã134 * ãå ´åã«ã¯ï¼å²è¾¼ã¿ãçºçãããï¼117 * 上で現在のカウント値を読んで以降に,cnt以上カウントアップしてい 118 * た場合には,割込みを発生させる. 135 119 */ 136 120 if (sil_rew_mem(OSTM_CNT(OSTM0_BASE)) - current >= cnt) { … … 140 124 141 125 /* 142 * é«å解è½ã¿ã¤ãå²è¾¼ã¿ã®è¦æ±126 * 高分解能タイマ割込みの要求 143 127 */ 144 128 void … … 149 133 150 134 /* 151 * ã¿ã¤ãå²è¾¼ã¿ãã³ãã©135 * タイマ割込みハンドラ 152 136 */ 153 137 void … … 155 139 { 156 140 /* 157 * é«å解è½ã¿ã¤ãå²è¾¼ã¿ãå¦çããï¼141 * 高分解能タイマ割込みを処理する. 158 142 */ 159 143 signal_time(); 160 144 } 161 145 /* 162 * ãªã¼ãã©ã³ã¿ã¤ããã©ã¤ã146 * オーバランタイマドライバ 163 147 */ 164 148 #ifdef TOPPERS_SUPPORT_OVRHDR 165 149 166 150 /* 167 * ãªã¼ãã©ã³ã¿ã¤ãã®åæåå¦ç151 * オーバランタイマの初期化処理 168 152 */ 169 153 void … … 171 155 { 172 156 /* 173 * OS ã¿ã¤ããã¤ã³ã¿ã¼ãã«ã¿ã¤ãã¢ã¼ãã«è¨å®ããï¼157 * OSタイマをインターバルタイマモードに設定する. 174 158 */ 175 159 sil_wrb_mem(OSTM_CTL(OSTM1_BASE), OSTM_CTL_INTERVAL); 176 160 177 161 /* 178 * ãªã¼ãã©ã³ã¿ã¤ãå²è¾¼ã¿è¦æ±ãã¯ãªã¢ããï¼162 * オーバランタイマ割込み要求をクリアする. 179 163 */ 180 164 clear_int(INTNO_OSTM1); … … 182 166 183 167 /* 184 * ãªã¼ãã©ã³ã¿ã¤ãã®åæ¢å¦ç168 * オーバランタイマの停止処理 185 169 */ 186 170 void … … 188 172 { 189 173 /* 190 * OS ã¿ã¤ããåæ¢ããï¼174 * OSタイマを停止する. 191 175 */ 192 176 sil_wrb_mem(OSTM_TT(OSTM1_BASE), OSTM_TT_STOP); 193 177 194 178 /* 195 * ãªã¼ãã©ã³ã¿ã¤ãå²è¾¼ã¿è¦æ±ãã¯ãªã¢ããï¼179 * オーバランタイマ割込み要求をクリアする. 196 180 */ 197 181 clear_int(INTNO_OSTM1); … … 199 183 200 184 /* 201 * ãªã¼ãã©ã³ã¿ã¤ãã®åæ¢185 * オーバランタイマの停止 202 186 */ 203 187 PRCTIM … … 207 191 208 192 /* 209 * OS ã¿ã¤ããåæ¢ããï¼193 * OSタイマを停止する. 210 194 */ 211 195 sil_wrb_mem(OSTM_TT(OSTM1_BASE), OSTM_TT_STOP); … … 213 197 if (probe_int(INTNO_OSTM1)) { 214 198 /* 215 * å²è¾¼ã¿è¦æ±ãçºçãã¦ããå ´å199 * 割込み要求が発生している場合 216 200 */ 217 201 clear_int(INTNO_OSTM1); … … 225 209 226 210 /* 227 * ãªã¼ãã©ã³ã¿ã¤ãã®ç¾å¨å¤ã®èªåºã211 * オーバランタイマの現在値の読出し 228 212 */ 229 213 PRCTIM … … 234 218 if (probe_int(INTNO_OSTM1)) { 235 219 /* 236 * å²è¾¼ã¿è¦æ±ãçºçãã¦ããå ´å220 * 割込み要求が発生している場合 237 221 */ 238 222 return(0U); … … 245 229 246 230 /* 247 * ãªã¼ãã©ã³ã¿ã¤ãå²è¾¼ã¿ãã³ãã©231 * オーバランタイマ割込みハンドラ 248 232 * 249 * ãã®ã«ã¼ãã³ã«æ¥ãã¾ã§ã«ï¼target_ovrtimer_stopãå¼ã°ãã¦ããããï¼ 250 * OSã¿ã¤ããåæ¢ããå¿ 251 è¦ã¯ãªãï¼ 233 * このルーチンに来るまでに,target_ovrtimer_stopが呼ばれているため, 234 * OSタイマを停止する必要はない. 252 235 */ 253 236 void 254 237 target_ovrtimer_handler(void) 255 238 { 256 call_ovrhdr(); /* ãªã¼ãã©ã³ãã³ãã©ã®èµ·åå¦ç*/239 call_ovrhdr(); /* オーバランハンドラの起動処理 */ 257 240 } 258 241
Note:
See TracChangeset
for help on using the changeset viewer.