source: autosar_os_training/trunk/program/internal_resources/toppers_atk2.c@ 124

Last change on this file since 124 was 124, checked in by ertl-honda, 9 years ago

AUTOSAR OS教材用のファイルをコミット.

File size: 5.3 KB
Line 
1/*
2 * TOPPERS ATK2
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 * Automotive Kernel Version 2
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2004-2013 by Center for Embedded Computing Systems
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 * Copyright (C) 2011-2013 by FUJISOFT INCORPORATED, JAPAN
11 * Copyright (C) 2011-2013 by FUJITSU VLSI LIMITED, JAPAN
12 * Copyright (C) 2011-2013 by NEC Communication Systems, Ltd., JAPAN
13 * Copyright (C) 2011-2013 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
14 * Copyright (C) 2011-2013 by Renesas Electronics Corporation, JAPAN
15 * Copyright (C) 2011-2013 by Sunny Giken Inc., JAPAN
16 * Copyright (C) 2011-2013 by TOSHIBA CORPORATION, JAPAN
17 * Copyright (C) 2004-2013 by Witz Corporation, JAPAN
18 *
19 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
20 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
21 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
22 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
23 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
24 * スコード中に含まれていること.
25 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
26 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
27 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
28 * の無保証規定を掲載すること.
29 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
30 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
31 * と.
32 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
33 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
34 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
35 * 報告すること.
36 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
37 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
38 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
39 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
40 * 免責すること.
41 *
42 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
43 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
44 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
45 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
46 * の責任を負わない.
47 *
48 * $Id: toppers_atk2.c 919 2014-01-09 11:19:14Z fsi-asanoto $
49 */
50
51#include "Os.h"
52#include "t_syslog.h"
53#include "t_stdlib.h"
54#include "sysmod/serial.h"
55#include "sysmod/syslog.h"
56#include "toppers_atk2.h"
57
58#include "sysmod/banner.h"
59#include "target_sysmod.h"
60#include "target_serial.h"
61
62#include "device.h"
63
64/*
65 * 内部関数プロトタイプ宣言
66 */
67sint32 main(void);
68void busy_wait(void);
69
70TASK(main_task);
71TASK(hpri_task);
72
73
74/*
75 * ユーザメイン関数
76 *
77 * アプリケーションモードの判断と,カーネル起動
78 */
79sint32
80main(void){
81 /*
82 * カーネル起動
83 */
84 StartOS(AppMode1);
85
86 while(1){
87 }
88} /* main */
89
90
91/*
92 * スタートアップフックルーチン
93 */
94#ifdef CFG_USE_STARTUPHOOK
95void
96StartupHook(void){
97 /* システムログ機能の初期化 */
98 syslog_initialize();
99
100 /* 出力するログ情報の重要度設定 */
101 syslog_msk_log(LOG_UPTO(LOG_INFO));
102
103 /* シリアルIOモジュール初期化処理 */
104 InitSerial();
105
106 /* カーネル起動メッセージの出力 */
107 print_banner();
108
109 /* PSW初期化 */
110 switch_push_init();
111
112 /* DSW初期化 */
113 switch_dip_init();
114} /* StartupHook */
115#endif /* CFG_USE_STARTUPHOOK */
116
117
118/*
119 * ループ回数
120 */
121#define DELAY_LOOP 0x8000000L
122
123/*
124 * ビジーループ関数
125 */
126void
127busy_wait(void){
128 long i;
129 for(i = 0; i < DELAY_LOOP; i++);
130}
131
132uint8 main_task_end = 0;
133
134/*
135 * main_task
136 */
137TASK(main_task){
138
139 syslog(LOG_INFO, "main_task Start!");
140
141 for(;;) {
142 /* 終了要求判定 */
143 if(main_task_end == 1){
144 main_task_end = 0;
145 syslog(LOG_INFO, "main_task End!");
146 TerminateTask();
147 }
148 syslog(LOG_INFO, "main_task is running.");
149 busy_wait();
150 }
151} /* TASK( main_task ) */
152
153
154/*
155 * hpri_task(高優先度タスク)
156 */
157TASK(hpri_task){
158 syslog(LOG_INFO, "hpri_task Start!");
159 syslog(LOG_INFO, "hpri_task End!");
160 TerminateTask();
161} /* TASK( hpri_task ) */
162
163
164/*
165 * mpri_task(中優先度タスク)
166 */
167TASK(mpri_task){
168 syslog(LOG_INFO, "mpri_task Start!");
169 syslog(LOG_INFO, "mpri_task End!");
170 TerminateTask();
171} /* TASK( mpri_task ) */
172
173
174/*
175 * lpri_task(低優先度タスク)
176 */
177TASK(lpri_task){
178 syslog(LOG_INFO, "lpri_task Start!");
179 syslog(LOG_INFO, "lpri_task End!");
180 TerminateTask();
181} /* TASK( lpri_task ) */
182
183
184/*
185 * PSW2割込み(C2ISR)
186 */
187ISR(psw2_int){
188 syslog(LOG_INFO, "psw2_int Start!");
189 main_task_end = 1;
190}
191
192
193/*
194 * PSW1割込み(C2ISR)
195 */
196ISR(psw1_int){
197 uint8 dsw_state;
198
199 syslog(LOG_INFO, "psw1_int Start!");
200
201 /* DSW状態取得 */
202 dsw_state = switch_dip_sense();
203
204 /* DSW状態判定 */
205 if(((dsw_state & DSW1) == DSW1)){
206 syslog(LOG_INFO, "psw1_int : ActivateTask(hpri_task);");
207 ActivateTask(hpri_task);
208 }
209
210 if(((dsw_state & DSW2) == DSW2)){
211 syslog(LOG_INFO, "psw1_int : ActivateTask(mpri_task);");
212 ActivateTask(mpri_task);
213 }
214
215 if(((dsw_state & DSW3) == DSW3)){
216 syslog(LOG_INFO, "psw1_int : ActivateTask(lpri_task);");
217 ActivateTask(lpri_task);
218 }
219
220 if(((dsw_state & DSW4) == DSW4)){
221 syslog(LOG_INFO, "psw1_int : ActivateTask(main_task);");
222 ActivateTask(main_task);
223 }
224}
Note: See TracBrowser for help on using the repository browser.