source: asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_config.c@ 61

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

ASP for EWARM のコミット.

File size: 5.1 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-2007 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 *
11 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
12 * ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
13 * •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
14 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
15 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
16 * ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
17 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
18 * —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
19ƒƒ“ƒgi—˜—p
20 * ŽÒƒ}ƒjƒ…
21ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
22 * ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
23 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
24 * —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
25 * ‚ƁD
26 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
27ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
28ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
29 * ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
30 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
31 * •ñ‚·‚邱‚ƁD
32 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
33 * ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
34 * ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
35 * —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
36 * –Ɛӂ·‚邱‚ƁD
37 *
38 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
39 * ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
40 * ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
41 * ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
42 * ‚̐ӔC‚𕉂í‚È‚¢D
43 *
44 */
45
46/*
47 * ƒ^[ƒQƒbƒgˆË‘¶ƒ‚ƒWƒ…
48[ƒ‹iSTM32 DISCOVERY—pj
49 */
50#include "kernel_impl.h"
51#include <sil.h>
52#include "stm32_discovery.h"
53#include "target_serial.h"
54#include "target_syssvc.h"
55
56STK_T _target_istk[DEFAULT_ISTKSZ];
57
58/*
59 * GPIOƒŒƒWƒXƒ^‘€ìŠÖ”
60 */
61#pragma inline
62void set_cr_mode(uint32_t reg, uint_t p, int_t v)
63{
64 if (p < 8) {
65 sil_andw((void*)GPIO_CRL(reg), ~CR_MODE_MASK(p));
66 sil_orw((void*)GPIO_CRL(reg), CR_MODE(p, v));
67 } else if (8 <= p && p < 16) {
68 sil_andw((void*)GPIO_CRH(reg), ~CR_MODE_MASK(p - 8));
69 sil_orw((void*)GPIO_CRH(reg), CR_MODE(p - 8, v));
70 }
71}
72
73#pragma inline
74void set_cr_cnf(uint32_t reg, uint_t p, int_t v)
75{
76 if (p < 8) {
77 sil_andw((void*)GPIO_CRL(reg), ~CR_CNF_MASK(p));
78 sil_orw((void*)GPIO_CRL(reg), CR_CNF(p, v));
79 } else if (8 <= p && p < 16) {
80 sil_andw((void*)GPIO_CRH(reg), ~CR_CNF_MASK(p - 8));
81 sil_orw((void*)GPIO_CRH(reg), CR_CNF(p - 8, v));
82 }
83}
84
85#pragma inline
86void set_port_pull(uint32_t reg, uint_t p, bool_t up)
87{
88 if (up) {
89 sil_wrw_mem((void*)GPIO_BSRR(reg), 0x01 << p);
90 } else {
91 sil_wrw_mem((void*)GPIO_BRR(reg), 0x01 << p);
92 }
93}
94
95/*
96 * ƒ^[ƒQƒbƒgˆË‘¶•”@‰Šú‰»ˆ—
97 */
98void target_initialize(void)
99{
100 /*
101 * ƒvƒƒZƒbƒTƒNƒƒbƒN(RCC)‚̏‰Šú‰»
102 */
103 /* HSE‚Ì—LŒø‰» */
104 sil_orw((void*)RCC_CR, CR_HSE_ON);
105
106 /* HSE—LŒø‘Ò‚¿ */
107 while ((sil_rew_mem((void*)RCC_CR) & CR_HSE_RDY) == 0) ;
108
109 /* FLASH ROM‚Í2wait‘Ò‚¿ */
110 sil_andw((void*)FLASH_ACR, ~ACR_LATENCY_MASK);
111 sil_orw((void*)FLASH_ACR, ACR_LATENCY_TWO);
112
113 /* HCLK = SYSCLK, PCLK2 = HCLK, PCLK1 = HCLK/2 */
114 sil_orw((void*)RCC_CFGR, 0x00 | (0x01 << 17) | (0x00 << 11) | (0x04 << 8));
115
116 /* PLLCLK = 4MHz x 6 = 24, HSE as PLL clock */
117 sil_orw((void*)RCC_CFGR, 0x04 << 18);
118 sil_orw((void*)RCC_CFGR, CFGR_PLL_SRC);
119
120 /* PLL‚Ì—LŒø‰» */
121 sil_orw((void*)RCC_CR, CR_PLL_ON);
122
123 /* PLL—LŒø‘Ò‚¿ */
124 while ((sil_rew_mem((void*)RCC_CR) & CR_PLL_RDY) == 0) ;
125
126 /* PLL‚ðƒVƒXƒeƒ€ƒNƒƒbƒN‚É‘I‘ð */
127 sil_orw((void*)RCC_CFGR, CFGR_SW_PLL);
128
129 /* PLL‚̃VƒXƒeƒ€ƒNƒƒbƒN‘I‘ð‘Ò‚¿ */
130 while ((sil_rew_mem((void*)RCC_CFGR) & CFGR_SWS_MASK) != (CFGR_SW_PLL << 2)) ;
131
132
133 /*
134 * ƒvƒƒZƒbƒTˆË‘¶•”‚̏‰Šú‰»
135 */
136 core_initialize();
137
138 /*
139 * ƒyƒŠƒtƒFƒ‰ƒ‹‚Ì—LŒø‰»
140 */
141 sil_orw((void*)RCC_APB2ENR, APB2ENR_USART1_EN | APB2ENR_IOPA_EN |
142 APB2ENR_IOPC_EN | APB2ENR_AFIO_EN);
143 /*
144 * I/Oƒ|[ƒg‚̏‰Šú‰»
145 */
146 /* USART1(RX) ƒvƒ‹ƒAƒbƒv */
147 set_cr_mode(GPIOA_BASE, 10, MODE_INPUT);
148 set_cr_cnf(GPIOA_BASE, 10, CNF_IN_FLOATING);
149
150 /* USART1(TX) */
151 set_cr_mode(GPIOA_BASE, 9, MODE_OUTPUT_50MHZ);
152 set_cr_cnf(GPIOA_BASE, 9, CNF_OUT_AF_PP);
153
154 /* LEDƒ|[ƒg */
155 set_cr_mode(GPIOC_BASE, 9, MODE_OUTPUT_50MHZ);
156 set_cr_cnf(GPIOC_BASE, 9, CNF_OUT_GP_PP);
157
158 /*
159 * ƒo[ƒi[o—Í—p‚̃VƒŠƒAƒ‹‰Šú‰»
160 */
161 target_usart_init(SIO_PORTID);
162}
163
164/*
165 * ƒ^[ƒQƒbƒgˆË‘¶•”@I—¹ˆ—
166 */
167void target_exit(void)
168{
169 /* ƒvƒƒZƒbƒTˆË‘¶•”‚̏I—¹ˆ— */
170 core_terminate();
171}
172
173/*
174 * ƒVƒXƒeƒ€ƒƒO‚̒჌ƒxƒ‹o—Í‚Ì‚½‚ß‚Ì•¶Žšo—Í
175 */
176void target_fput_log(char_t c)
177{
178 if (c == '\n') {
179 sio_pol_snd_chr('\r', SIO_PORTID);
180 }
181 sio_pol_snd_chr(c, SIO_PORTID);
182}
Note: See TracBrowser for help on using the repository browser.