source: asp3_tinet_ecnl_arm/trunk/asp3_dcre/arch/arm_gcc/mpcore/chip_timer.h@ 352

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

arm向けASP3版ECNLを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr;charset=UTF-8
File size: 5.9 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-2017 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 *
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 * の責任を負わない.
39 *
40 * $Id$
41 */
42
43/*
44 * タイマドライバ(MPCore内蔵タイマ用)
45 *
46 * MPCoreには,コア毎にプライベートタイマとプライベートウォッチドッグ
47 * を持つ.ウォッチドッグは,タイマとして使用することもできるため,こ
48 * の2つのタイマを使って高分解能タイマを実現する.具体的には,ウォッチ
49 * ドッグをタイマモードに設定して現在時刻の管理のために用い,タイマを
50 * 相対時間割込みの発生のために用いる.
51 */
52
53#ifndef TOPPERS_CHIP_TIMER_H
54#define TOPPERS_CHIP_TIMER_H
55
56#include <sil.h>
57#include "mpcore.h"
58
59/*
60 * タイマ割込みハンドラ登録のための定数
61 */
62#define INHNO_TIMER MPCORE_IRQNO_TMR /* 割込みハンドラ番号 */
63#define INTNO_TIMER MPCORE_IRQNO_TMR /* 割込み番号 */
64#define INTPRI_TIMER (TMAX_INTPRI - 1) /* 割込み優先度 */
65#define INTATR_TIMER TA_NULL /* 割込み属性 */
66
67/*
68 * タイマの設定値のデフォルト値の定義
69 */
70#ifndef MPCORE_WDG_LR_VALUE
71#define MPCORE_WDG_LR_VALUE 0xffffffffU /* ウォッチドッグのリロード値 */
72#endif /* MPCORE_WDG_LR_VALUE */
73
74#ifndef MPCORE_WDG_FREQ
75#define MPCORE_WDG_FREQ 1 /* ウォッチドッグの駆動周波数 */
76#endif /* MPCORE_WDG_FREQ */
77
78#ifndef MPCORE_TMR_FREQ
79#define MPCORE_TMR_FREQ 1 /* タイマの駆動周波数 */
80#endif /* MPCORE_TMR_FREQ */
81
82#ifndef TOPPERS_MACRO_ONLY
83
84/*
85 * 高分解能タイマの起動処理
86 */
87extern void target_hrt_initialize(intptr_t exinf);
88
89/*
90 * 高分解能タイマの停止処理
91 */
92extern void target_hrt_terminate(intptr_t exinf);
93
94/*
95 * 高分解能タイマの現在のカウント値の読出し
96 */
97Inline HRTCNT
98target_hrt_get_current(void)
99{
100 /*
101 * ウォッチドッグのカウント値を読み出し,ダウンカウンタであるため,
102 * MPCORE_WDG_LR_VALUEから引き,MPCORE_WDG_FREQで除した値を返す.
103 */
104 return((HRTCNT)((MPCORE_WDG_LR_VALUE - sil_rew_mem(MPCORE_WDG_CNT))
105 / MPCORE_WDG_FREQ));
106}
107
108/*
109 * 高分解能タイマへの割込みタイミングの設定
110 *
111 * 高分解能タイマを,hrtcntで指定した値カウントアップしたら割込みを発
112 * 生させるように設定する.
113 */
114Inline void
115target_hrt_set_event(HRTCNT hrtcnt)
116{
117 /*
118 * タイマのカウント値を(hrtcnt * MPCORE_TMR_FREQ)に設定する.
119 */
120 sil_wrw_mem(MPCORE_TMR_CNT, hrtcnt * MPCORE_TMR_FREQ);
121}
122
123/*
124 * 高分解能タイマ割込みの要求
125 *
126 * 暫定的に,1μ秒後に高分解能タイマ割込みがかかるように設定しているが,
127 * 即座に割込みを要求する方法がわかれば(Set-pending Registerが使える
128 * と思われる),それに差し換える.
129 */
130Inline void target_hrt_raise_event(void)
131{
132 target_hrt_set_event(1U);
133}
134
135/*
136 * 割込みタイミングに指定する最大値
137 */
138#if !defined(TCYC_HRTCNT) || (TCYC_HRTCNT > 4002000002U)
139#define HRTCNT_BOUND 4000000002U
140#else
141#define HRTCNT_BOUND (TCYC_HRTCNT - 2000000U)
142#endif
143
144/*
145 * 高分解能タイマ割込みハンドラ
146 */
147extern void target_hrt_handler(void);
148
149#endif /* TOPPERS_MACRO_ONLY */
150#endif /* TOPPERS_CHIP_TIMER_H */
Note: See TracBrowser for help on using the repository browser.