source: azure_iot_hub_riscv/trunk/asp_baseplatform/target/k210_gcc/target_timer.h@ 453

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

ファイルを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr;charset=UTF-8
File size: 4.2 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-2008 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 * Copyright (C) 2017-2019 by TOPPERS PROJECT Educational Working Group.
11 *
12 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
13 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
14 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
15 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17 * スコード中に含まれていること.
18 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
20 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21 * の無保証規定を掲載すること.
22 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24 * と.
25 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
26 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
27 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28 * 報告すること.
29 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
30 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
31 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
32 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
33 * 免責すること.
34 *
35 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
36 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
37 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
38 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
39 * の責任を負わない.
40 *
41 * @(#) $Id$
42 */
43
44/*
45 * タイマドライバ(K210用)
46 */
47
48#ifndef TOPPERS_TARGET_TIMER_H
49#define TOPPERS_TARGET_TIMER_H
50
51/*
52 * ターゲット依存定義
53 */
54#include "target_syssvc.h"
55
56/*
57 * タイマ割込みハンドラ登録のための定数
58 */
59#define INTPRI_TIMER TIRQ_LEVEL4 /* 割込み優先度 */
60
61/*
62 * CLINT周波数定義
63 */
64#define CLINT_FREQ (SYS_CLOCK / 50)
65
66/*
67 * プロセッサ依存定義
68 */
69#include "riscv_gcc/prc_timer.h"
70
71/*
72 * 累積値の読み出し
73 */
74Inline CLOCK
75target_current_timer_value(void)
76{
77 return *((volatile CLOCK *)(TADR_CLIC_BASE+TOFF_CLINT_MTIME));
78}
79
80/*
81 * ターゲット値の読み出し
82 */
83Inline CLOCK
84target_get_target_timer_value(void)
85{
86 uint32_t core_id = read_csr(mhartid);
87 return *((volatile CLOCK *)(TADR_CLIC_BASE+TOFF_CLINT_MTIMECMP + core_id * sizeof(CLOCK)));
88}
89
90/*
91 * ターゲット値の書き込み
92 */
93Inline void
94target_set_target_timer_value(CLOCK mtimecmp)
95{
96 uint32_t core_id = read_csr(mhartid);
97 *((volatile CLOCK *)(TADR_CLIC_BASE+TOFF_CLINT_MTIMECMP + core_id * sizeof(CLOCK))) = mtimecmp;
98}
99
100/*
101 * タイマの現在値の読出し
102 */
103Inline CLOCK
104target_timer_get_current(void)
105{
106 CLOCK clk;
107
108 clk = target_current_timer_value() - (target_get_target_timer_value() - TO_CLOCK(TIC_NUME, TIC_DENO));
109 return(clk);
110}
111
112#define target_timer_probe_int prc_timer_probe_int
113
114#endif /* TOPPERS_TARGET_TIMER_H */
Note: See TracBrowser for help on using the repository browser.