source: anotherchoice/tags/jsp-1.4.4-full-UTF8/config/armv4/frk_aduc/sys_config.c@ 26

Last change on this file since 26 was 26, checked in by ykominami, 10 years ago

initial

File size: 5.8 KB
Line 
1/*
2 * TOPPERS/JSP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2006 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2005-2006 by Logic Research Co., Ltd.
9 *
10 * 上記著作権者
11は,以下の (1)〜(4) の条件か,Free Software Foundation
12 * によってå…
13¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
14 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
15 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
16å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
17 * 利用と呼ぶ)することを無償で許諾する.
18 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
19 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
20 * スコード中に含まれていること.
21 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
22 * 用できる形で再é…
23å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
24å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
25 * 者
26マニュアルなど)に,上記の著作権表示,この利用条件および下記
27 * の無保証規定を掲載すること.
28 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
29 * 用できない形で再é…
30å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
31 * と.
32 * (a) 再é…
33å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
34マニュアルなど)に,上記の著
35 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
36 * (b) 再é…
37å¸ƒã®å½¢æ…
38‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
39 * 報告すること.
40 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
41 * 害からも,上記著作権者
42およびTOPPERSプロジェクトをå…
43è²¬ã™ã‚‹ã“と.
44 *
45 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
46お
47 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
48 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
49 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
50 *
51 */
52
53/*
54 * ターゲットシステム依存モジュール(FRK_ADuC用)
55 */
56
57#include "jsp_kernel.h"
58#include "frk_aduc.h"
59
60
61/*interrupt mask*/
62const UW int_mask_table[MAX_INT_NUM]={
63 MASK_ALL_INT,
64 MASK_IRQ_SWI,
65 MASK_IRQ_TIMER0,
66 MASK_IRQ_TIMER1,
67 MASK_IRQ_TIMER2,
68 MASK_IRQ_TIMER3,
69 MASK_IRQ_FLA_CTRL,
70 MASK_IRQ_ADC_CH,
71 MASK_IRQ_PLL_LOCK,
72 MASK_IRQ_I2C0_SLV,
73 MASK_IRQ_I2C0_MST,
74 MASK_IRQ_I2C1_MST,
75 MASK_IRQ_SPI_SLV,
76 MASK_IRQ_SPI_MST,
77 MASK_IRQ_UART,
78 MASK_IRQ_EXT_IRQ0,
79 MASK_IRQ_COMP,
80 MASK_IRQ_PSM,
81 MASK_IRQ_EXT_IRQ1,
82 MASK_IRQ_PLA_IRQ0,
83 MASK_IRQ_PLA_IRQ1,
84 MASK_IRQ_EXT_IRQ2,
85 MASK_IRQ_EXT_IRQ3,
86 MASK_IRQ_PWM_TRIP
87};
88
89
90/*
91 * 割込みハンドラ登録用テーブル
92 */
93FP int_table[MAX_INT_NUM];
94
95
96/*
97 * OSCの初期化
98 */
99void
100init_clock(void)
101{
102 UW reg;
103
104 /* POWCON key1 */
105 sil_wrw_mem((VP)POWKEY1, POWKEY1_DATA);
106
107 /* Core Clock 41.78MHz , Active mode*/
108 reg = (POWCON_PC_ACT | POWCON_CD_41M);
109 sil_wrw_mem((VP)POWCON, reg);
110
111 /* POWCON key2 */
112 sil_wrw_mem((VP)POWKEY2, POWKEY2_DATA);
113}
114
115
116/*
117 * GPIOの初期化
118 */
119void
120init_gpio(void)
121{
122 /* LED port */
123 sil_wrw_mem((VP)GP4CON, 0); /* GPIO mode */
124 sil_wrw_mem((VP)GP4DAT, P47_DIR); /* Output */
125 sil_wrw_mem((VP)GP4SET, LED); /* LED off */
126
127 /* UART port */
128 sil_wrw_mem((VP)GP0CON, GP07_SIN);
129 sil_wrw_mem((VP)GP1CON, (GP10_SIN|GP11_SOUT|GP12_RTS|
130 GP13_CTS|GP14_RI|GP15_DCD|
131 GP16_DSR|GP17_DTR));
132 sil_wrw_mem((VP)GP2CON, GP20_SOUT);
133
134}
135
136
137/*
138 * 割込み関連の初期化
139 */
140void
141init_IRQ(void)
142{
143 int i;
144
145 /* IRQ割込み禁止 */
146 sil_wrw_mem((VP)IRQCLR, INT_DISABLE_ALL);
147
148 /*
149 * 割込みテーブルの初期化
150 */
151 for(i = 0; i < MAX_INT_NUM; i++){
152 int_table[i] = 0x00; /* リセット */
153 }
154}
155
156
157/*
158 * ターゲットシステム依存の初期化
159 */
160void
161sys_initialize()
162{
163 int i;
164
165 init_clock();
166
167 init_gpio();
168
169 init_IRQ();
170
171 /*
172 * SRAM
173 */
174 for(i = 0; i <=7; i++){
175 arm_vector_add[i] = arm_vector_add[i] + VCT_TB_SRAM/4;
176 }
177
178 for(i=0; i <=14; i++) {
179 *((volatile UW *)VCT_TB_SRAM + i) = *((volatile UW *)VCT_TB + i);
180 }
181
182 sil_wrw_mem((VP)REMAP, REMAP_SRAM);
183
184 /*
185 * ARMのベクタテーブルへ割込みハンドラを登録
186 */
187 arm_install_handler(IRQ_Number, IRQ_Handler);
188
189 /*
190 * sys_putc が可能になるようにUARTを初期化
191 */
192 init_uart();
193}
194
195
196/*
197 * ターゲットシステムの終了
198 */
199void
200sys_exit(void)
201{
202 syslog(LOG_EMERG, "End Kernel.....!");
203 while(1);
204}
205
206
207/*
208 * ターゲットシステムの文字出力
209 */
210
211void
212sys_putc(char c)
213{
214 if (c == '\n') {
215 uart_putc('\r');
216 }
217 uart_putc(c);
218}
219
220
221/*
222 * 割込みハンドラの設定
223 *
224 * 割込み番号 inhno の割込みハンドラの起動番地を inthdr に設定する.
225 */
226void
227define_inh(INHNO inhno, FP inthdr)
228{
229 assert(inhno < MAX_INT_NUM);
230 int_table[inhno] = inthdr;
231
232}
233
234/*
235 * 未定義の割込みがå…
236¥ã£ãŸå ´åˆã®å‡¦ç†
237 */
238void
239undef_interrupt(){
240 syslog(LOG_EMERG, "Unregistered Interrupt occurs.");
241 while(1);
242}
243
244
245/*IRQレジスタがクリアされるまで待
246つ*/
247#define INT_CLEAR_DELAY 0x70
248void poll_intreg(int int_mask)
249{
250 int i;
251
252 //while(*IRQEN & int_mask);
253 for(i=0;i<INT_CLEAR_DELAY;i++);
254 enaint();
255
256}
257
Note: See TracBrowser for help on using the repository browser.