source: rc_os_nios2/atk2-sc1_1.3.2/target/nios2_dev_gcc/target_config.c@ 128

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

追加.

File size: 5.8 KB
Line 
1/*
2 * TOPPERS ATK2
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 * Automotive Kernel Version 2
5 *
6 * Copyright (C) 2008-2015 by Center for Embedded Computing Systems
7 * Graduate School of Information Science, Nagoya Univ., JAPAN
8 * Copyright (C) 2011-2015 by FUJI SOFT INCORPORATED, JAPAN
9 * Copyright (C) 2011-2013 by Spansion LLC, USA
10 * Copyright (C) 2011-2015 by NEC Communication Systems, Ltd., JAPAN
11 * Copyright (C) 2011-2015 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
12 * Copyright (C) 2011-2014 by Renesas Electronics Corporation, JAPAN
13 * Copyright (C) 2011-2015 by Sunny Giken Inc., JAPAN
14 * Copyright (C) 2011-2015 by TOSHIBA CORPORATION, JAPAN
15 * Copyright (C) 2011-2015 by Witz Corporation
16 * Copyright (C) 2014-2015 by AISIN COMCRUISE Co., Ltd., JAPAN
17 * Copyright (C) 2014-2015 by eSOL Co.,Ltd., JAPAN
18 * Copyright (C) 2014-2015 by SCSK Corporation, JAPAN
19 *
20 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
21 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
22 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
23 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
24 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
25 * スコード中に含まれていること.
26 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
27 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
28 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
29 * の無保証規定を掲載すること.
30 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
31 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
32 * と.
33 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
34 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
35 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
36 * 報告すること.
37 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
38 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
39 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
40 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
41 * 免責すること.
42 *
43 * 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕
44 * 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので
45 * はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利
46 * 用する者に対して,AUTOSARパートナーになることを求めている.
47 *
48 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
49 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
50 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
51 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
52 * の責任を負わない.
53 *
54 * $Id: target_config.c 1801 2015-03-27 06:34:43Z t_ishikawa $
55 */
56
57/*
58 * ターゲット依存モジュール(NIOS2_DEV用)
59 */
60
61#include "kernel_impl.h"
62#include "nios2_gcc/prc_sil.h"
63#include "target_sysmod.h"
64#ifdef ENABLE_RETURN_MAIN
65#include "interrupt.h"
66#endif /* ENABLE_RETURN_MAIN */
67#ifdef TOPPERS_ENABLE_TRACE
68#include "logtrace/trace_config.h"
69#endif /* TOPPERS_ENABLE_TRACE */
70
71#ifdef USE_UART
72#include "nios2_gcc/uart.h"
73#else /* USE_UART */
74#include "nios2_gcc/jtag_uart.h"
75#endif /* USE_UART */
76
77/* 内部関数のプロトタイプ宣言 */
78static void hw_version_check(void);
79
80LOCAL_INLINE void
81nios2_dev_putc_rom(char8 c)
82{
83#ifndef RC_ROM_BOOT
84 while ((sil_rew_iop((void *) (JTAG_UART_PORT1_BASE + JTAG_UART_CONTROL_OFFSET)) & JTAG_UART_CONTROL_WSAPCE) == 0U) {
85 /* 実行すべき処理がない */
86 }
87 sil_wrw_iop((void *) (JTAG_UART_PORT1_BASE + JTAG_UART_DATA_OFFSET), (uint32) c);
88#else /* RC_ROM_BOOT */
89 volatile int cnt = 0;
90 static boolean enable = TRUE;
91 if (enable == TRUE) {
92 while ((sil_rew_iop((void *) (JTAG_UART_PORT1_BASE + JTAG_UART_CONTROL_OFFSET)) & JTAG_UART_CONTROL_WSAPCE) == 0U) {
93 /* 実行すべき処理がない */
94 if(cnt++ == 2000000){
95 enable = FALSE;
96 break;
97 }
98 }
99 sil_wrw_iop((void *) (JTAG_UART_PORT1_BASE + JTAG_UART_DATA_OFFSET), (uint32) c);
100 }
101#endif /* RC_ROM_BOOT */
102}
103
104
105/*
106 * 文字列の出力
107 */
108void
109target_fput_str(const char8 *c)
110{
111 while (*c != '\0') {
112 nios2_dev_putc_rom(*c);
113 c++;
114 }
115 nios2_dev_putc_rom('\n');
116}
117
118/*
119 * バージョンチェック
120 */
121static void
122hw_version_check(void)
123{
124 /* コア数を確認 */
125 if (sil_rew_iop((void *) (SYSVER_NUM_CORE)) != TNUM_HWCORE) {
126 target_fput_str("Number of core is mismatch!!");
127 while (1) {
128 }
129 }
130
131 if (sil_rew_iop((void *) (SYSVER_MAJOR_VAR)) != MAJOR_VAR) {
132 target_fput_str("Hardware Major version is mismatch!!");
133 while (1) {
134 }
135 }
136}
137void
138target_hardware_initialize(void)
139{
140 /*
141 * ハードウェアバージョンの確認
142 */
143 hw_version_check();
144
145 prc_hardware_initialize();
146}
147
148/*
149 * ターゲット依存の初期化
150 */
151void
152target_initialize(void)
153{
154 /*
155 * Nios2依存の初期化
156 */
157 prc_initialize();
158
159#ifdef TOPPERS_ENABLE_TRACE
160 /*
161 * トレースログ機能の初期化
162 */
163 trace_initialize((uintptr) (TRACE_AUTOSTOP));
164#endif /* TOPPERS_ENABLE_TRACE */
165}
166
167/*
168 * ターゲット依存の終了処理
169 */
170void
171target_exit(void)
172{
173#ifdef TOPPERS_ENABLE_TRACE
174 /*
175 * トレースログのダンプ
176 */
177 trace_dump(&target_fput_log);
178#endif /* TOPPERS_ENABLE_TRACE */
179
180#ifndef ENABLE_RETURN_MAIN
181 /*
182 * シャットダウン処理の出力
183 */
184 target_fput_str("Kernel Exit...");
185#else
186 target_fput_str("Kernel Shutdown...");
187#endif /* ENABLE_RETURN_MAIN */
188
189 /*
190 * Nios2依存の終了処理
191 */
192 prc_terminate();
193
194#ifdef ENABLE_RETURN_MAIN
195 kerflg = FALSE;
196 except_nest_cnt = 0U;
197 nested_lock_os_int_cnt = 0U;
198 sus_all_cnt = 0U;
199 sus_all_cnt_ctx = 0U;
200 sus_os_cnt = 0U;
201 sus_os_cnt_ctx = 0U;
202
203 Asm("movia r2, _ostkpt");
204 Asm("ldw sp, 0(r2)");
205 Asm("call main");
206#endif /* ENABLE_RETURN_MAIN */
207
208 while (1) {
209 }
210}
211
212/*
213 * ターゲット依存の文字出力
214 */
215void
216target_fput_log(char8 c)
217{
218 nios2_dev_putc_rom(c);
219}
Note: See TracBrowser for help on using the repository browser.