source: EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_timer.h@ 270

Last change on this file since 270 was 270, checked in by coas-nagasima, 7 years ago

mruby版ECNLプロトタイピング・ツールを追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-chdr
File size: 6.8 KB
Line 
1/*
2 * TOPPERS/ASP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2005-2016 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
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 * の責任を負わない.
54 *
55 * $Id: chip_timer.h 270 2017-02-09 04:03:47Z coas-nagasima $
56 */
57
58/*
59 * タイマドライバ(RZ/A1 OSタイマ用)
60 *
61 * RZ/A1は2チャンネルのOSタイマを持つが,その内
62の1つを用いて高分解能タ
63 * イマを,もう1つを用いてオーバランタイマを実現する.
64 */
65
66#ifndef TOPPERS_CHIP_TIMER_H
67#define TOPPERS_CHIP_TIMER_H
68
69#include <sil.h>
70#include "rza1.h"
71
72/*
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 * オーバランタイマ割込みハンドラ登録のための定数
83 */
84#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 /* 割込み属性 */
90#endif /* TOPPERS_SUPPORT_OVRHDR */
91
92/*
93 * OSタイマの周波数の想定値のチェック
94 *
95 * 現在の実装
96は,クロックが33.33…MHzの場合のみに対応している.
97 */
98#if OSTM_CLK != 33333333UL
99#error Unsupported OS time clock.
100#endif /* OSTM_CLK != 33333333UL */
101
102/*
103 * OSタイマレジスタの番地の定義
104 */
105#define OSTM_CMP(base) ((uint32_t *)(base + 0x00U))
106#define OSTM_CNT(base) ((uint32_t *)(base + 0x04U))
107#define OSTM_TE(base) ((uint8_t *)(base + 0x10U))
108#define OSTM_TS(base) ((uint8_t *)(base + 0x14U))
109#define OSTM_TT(base) ((uint8_t *)(base + 0x18U))
110#define OSTM_CTL(base) ((uint8_t *)(base + 0x20U))
111
112/*
113 * OSタイマ カウント開始トリガレジスタの設定値の定義
114 */
115#define OSTM_TS_START 0x01U
116
117/*
118 * OSタイマ カウント停止トリガレジスタの設定値の定義
119 */
120#define OSTM_TT_STOP 0x01U
121
122/*
123 * OSタイマ 制御レジスタの設定値の定義
124 */
125#define OSTM_CTL_INTERVAL 0x00U /* インターバルタイマモード */
126#define OSTM_CTL_FRCMP 0x02U /* フリーランニングコンペアモード */
127
128#ifndef TOPPERS_MACRO_ONLY
129
130/*
131 * 高分解能タイマの起動処理
132 */
133extern void target_hrt_initialize(intptr_t exinf);
134
135/*
136 * 高分解能タイマの停止処理
137 */
138extern void target_hrt_terminate(intptr_t exinf);
139
140/*
141 * 高分解能タイマの現在のカウント値の読出し
142 */
143Inline HRTCNT
144target_hrt_get_current(void)
145{
146 uint32_t cnt, cnt1;
147
148 cnt = sil_rew_mem(OSTM_CNT(OSTM0_BASE));
149
150 /* μ秒単位に変換(クロックが33.33…MHzである前提)*/
151 cnt1 = cnt / 1000000000;
152 return((HRTCNT)((cnt - cnt1 * 999999999) * 3 / 100 + cnt1 * 30000000));
153}
154
155/*
156 * 高分解能タイマへの割込みタイミングの設定
157 *
158 * 高分解能タイマを,hrtcntで指定した値カウントアップしたら割込みを発
159 * 生させるように設定する.
160 */
161extern void target_hrt_set_event(HRTCNT hrtcnt);
162
163/*
164 * 高分解能タイマ割込みの要求
165 */
166extern void target_hrt_raise_event(void);
167
168/*
169 * 割込みタイミングに指定する最大値
170 */
171#define HRTCNT_BOUND 100000002U
172
173/*
174 * 高分解能タイマ割込みハンドラ
175 */
176extern void target_hrt_handler(void);
177
178#ifdef TOPPERS_SUPPORT_OVRHDR
179
180/*
181 * オーバランタイマの初期化処理
182 */
183extern void target_ovrtimer_initialize(intptr_t exinf);
184
185/*
186 * オーバランタイマの停止処理
187 */
188extern void target_ovrtimer_terminate(intptr_t exinf);
189
190/*
191 * オーバランタイマの動作開始
192 */
193Inline void
194target_ovrtimer_start(PRCTIM ovrtim)
195{
196 uint32_t cnt = ovrtim * 33 + ovrtim / 3 + 1;
197
198 sil_wrw_mem(OSTM_CMP(OSTM1_BASE), cnt);
199 sil_wrb_mem(OSTM_TS(OSTM1_BASE), OSTM_TS_START);
200}
201
202/*
203 * オーバランタイマの停止
204 */
205extern PRCTIM target_ovrtimer_stop(void);
206
207/*
208 * オーバランタイマの現在値の読出し
209 */
210extern PRCTIM target_ovrtimer_get_current(void);
211
212/*
213 * オーバランタイマ割込みハンドラ
214 */
215extern void target_ovrtimer_handler(void);
216
217#endif /* TOPPERS_SUPPORT_OVRHDR */
218#endif /* TOPPERS_MACRO_ONLY */
219#endif /* TOPPERS_CHIP_TIMER_H */
Note: See TracBrowser for help on using the repository browser.