source: asp3_wo_tecs/trunk/target/nucleo_f401re_gcc/target_kernel_impl.c@ 303

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

nucleo_f401re依存部の追加

File size: 5.8 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-2016 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 *
11 * 上記著作権者
12は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
13 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
14 * 変・再é…
15å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
16 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
17 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
18 * スコード中に含まれていること.
19 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
20 * 用できる形で再é…
21å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
22å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
23 * 者
24マニュアルなど)に,上記の著作権表示,この利用条件および下記
25 * の無保証規定を掲載すること.
26 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
27 * 用できない形で再é…
28å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
29 * と.
30 * (a) 再é…
31å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
32マニュアルなど)に,上記の著
33 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
34 * (b) 再é…
35å¸ƒã®å½¢æ…
36‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
37 * 報告すること.
38 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
39 * 害からも,上記著作権者
40およびTOPPERSプロジェクトをå…
41è²¬ã™ã‚‹ã“と.
42 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
43 * 由に基づく請求からも,上記著作権者
44およびTOPPERSプロジェクトを
45 * å…
46è²¬ã™ã‚‹ã“と.
47 *
48 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
49お
50 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
51 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
52 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
53 * の責任を負わない.
54 *
55 */
56
57/*
58 * ターゲット依存モジュール(NUCLEO_F401RE用)
59 */
60#include "kernel_impl.h"
61#include <sil.h>
62
63/*
64 * 起動直後の初期化(system_stm32f4xx.c)
65 */
66extern void SystemInit(void);
67
68/*
69 * クロックの初期化(systemclock_config.c)
70 */
71extern void SystemClock_Config(void);
72
73/*
74 * バーナ出力用のUARTの初期化
75 */
76static void usart_early_init(void);
77
78/*
79 * エラー時の処理
80 */
81extern void Error_Handler(void);
82
83/*
84 * 起動時のハードウェア初期化処理
85 */
86void
87hardware_init_hook(void) {
88 SystemInit();
89
90 /*
91 * -fdata-sectionsを使用するとistkが削除され,
92 * cfgのパス3のチェックがエラーとなるため,
93 * 削除されないようにする
94 */
95 SystemCoreClock = (uint32_t)istk;
96}
97
98/*
99 * cfgのpass3でエラーになるないように
100 */
101extern const ID _kernel_tmax_tskid;
102extern const ID _kernel_tmax_semid;
103extern const ID _kernel_tmax_flgid;
104extern const ID _kernel_tmax_dtqid;
105
106volatile ID dummy;
107
108/*
109 * ターゲット依存部 初期化処理
110 */
111void
112target_initialize(void)
113{
114 dummy = _kernel_tmax_tskid;
115 dummy = _kernel_tmax_semid;
116 dummy = _kernel_tmax_flgid;
117 dummy = _kernel_tmax_dtqid;
118
119 /*
120 * HALによる初期化
121 * HAL_Init() : stm32f4xx_hal.c の内
122容から必
123要な初期化のみ呼び出す.
124 */
125 __HAL_FLASH_INSTRUCTION_CACHE_ENABLE();
126 __HAL_FLASH_DATA_CACHE_ENABLE();
127 __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
128
129 /*
130 * クロックの初期化
131 */
132 SystemClock_Config();
133
134 /*
135 * コア依存部の初期化
136 */
137 core_initialize();
138
139 /*
140 * 使用するペリフェラルにクロックを供給
141 */
142
143 /*
144 * UserLEDの初期化
145 */
146 BSP_LED_Init(LED2);
147
148 /*
149 * バーナー出力用のシリアル初期化
150 */
151 usart_early_init();
152}
153
154/*
155 * ターゲット依存部 終了処理
156 */
157void
158target_exit(void)
159{
160 /* チップ依存部の終了処理 */
161 core_terminate();
162 while(1);
163}
164
165static UART_HandleTypeDef UartHandle;
166
167void
168usart_early_init()
169{
170 usart_low_init();
171
172 UartHandle.Instance = USART_NAME;
173 UartHandle.Init.BaudRate = BPS_SETTING;
174 UartHandle.Init.WordLength = UART_WORDLENGTH_9B;
175 UartHandle.Init.StopBits = UART_STOPBITS_1;
176 UartHandle.Init.Parity = UART_PARITY_ODD;
177 UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
178 UartHandle.Init.Mode = UART_MODE_TX_RX;
179 UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;
180
181 if(HAL_UART_Init(&UartHandle) != HAL_OK) {
182 Error_Handler();
183 }
184};
185
186/*
187 * システムログの低レベル出力のための文字出力
188 */
189void
190target_fput_log(char c)
191{
192 char cr = '\r';
193 if (c == '\n') {
194 HAL_UART_Transmit(&UartHandle, (uint8_t *)&cr, 1, 0xFFFF);
195 }
196 HAL_UART_Transmit(&UartHandle, (uint8_t *)&c, 1, 0xFFFF);
197}
198
199/*
200 * エラー発生時の処理
201 */
202void
203Error_Handler(void){
204 volatile int loop;
205 BSP_LED_Init(LED2);
206 while(1){
207 for(loop = 0; loop < 0x100000; loop++);
208 BSP_LED_Toggle(LED2);
209 }
210}
211
212#include "time_event.h"
213
214/*
215 * HAL実行用の関数
216 */
217HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
218{
219 return HAL_OK;
220}
221
222uint32_t HAL_GetTick(void)
223{
224 return current_hrtcnt/1000;
225}
Note: See TracBrowser for help on using the repository browser.