- Timestamp:
- Jul 3, 2020, 7:19:17 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/target/gr_peach_gcc/target_kernel_impl.c
r321 r429 3 3 * Toyohashi Open Platform for Embedded Real-Time Systems/ 4 4 * Advanced Standard Profile Kernel 5 * 6 * Copyright (C) 2007-201 6by Embedded and Real-Time Systems Laboratory5 * 6 * Copyright (C) 2007-2018 by Embedded and Real-Time Systems Laboratory 7 7 * Graduate School of Information Science, Nagoya Univ., JAPAN 8 * 8 * 9 9 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 10 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 … … 29 29 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 30 30 * 免責すること. 31 * 31 * 32 32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 … … 35 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 36 * の責任を負わない. 37 * 37 * 38 38 * $Id$ 39 39 */ … … 48 48 #include "rza1.h" 49 49 #include "scif.h" 50 #include "core_pl310.h" 51 #include "us_ticker_api.h" 50 51 /* 52 * C++のグローバルコンストラクタ呼び出し 53 */ 54 void __libc_init_array() 55 { 56 /* グローバルコンストラクタでOS APIを呼び出す場合は、 57 タスクが起動してから行う */ 58 } 52 59 53 60 /* … … 63 70 * MMUへの設定属性(第1レベルディスクリプタ) 64 71 */ 65 #define MMU_ATTR_RAM (ARM_MMU_DSCR1_SHARED|ARM V6_MMU_DSCR1_APX0\66 |ARM _MMU_DSCR1_TEX001|ARM_MMU_DSCR1_AP11 \67 |ARM_MMU_DSCR1_CB11) 68 #define MMU_ATTR_IODEV (ARM_MMU_DSCR1_SHARED|ARMV6_MMU_DSCR1_APX0\69 |ARM _MMU_DSCR1_TEX000|ARM_MMU_DSCR1_AP11 \70 |ARM_MMU_DSCR1_CB01|ARMV6_MMU_DSCR1_NOEXEC) 72 #define MMU_ATTR_RAM (ARM_MMU_DSCR1_SHARED|ARM_MMU_DSCR1_TEX001 \ 73 |ARMV6_MMU_DSCR1_AP011|ARM_MMU_DSCR1_CB11) 74 #define MMU_ATTR_IODEV (ARM_MMU_DSCR1_SHARED|ARM_MMU_DSCR1_TEX000 \ 75 |ARMV6_MMU_DSCR1_AP011|ARM_MMU_DSCR1_CB01 \ 76 |ARMV6_MMU_DSCR1_NOEXEC) 77 71 78 /* 72 79 * MMUの設定情報(メモリエリアの情報) 73 80 */ 74 ARM_MMU_CONFIG arm_memory_area[] = {81 const ARM_MMU_CONFIG arm_memory_area[] = { 75 82 { SPI_ADDR, SPI_ADDR, SPI_SIZE, MMU_ATTR_RAM }, 76 83 { SRAM_ADDR, SRAM_ADDR, SRAM_SIZE, MMU_ATTR_RAM }, … … 206 213 * システムログの低レベル出力のための初期化 207 214 * 208 * セルタイプtPutLog GRPeach内に実装されている関数を直接呼び出す.209 */ 210 extern void tPutLog GRPeach_initialize(void);215 * セルタイプtPutLogSIOPort内に実装されている関数を直接呼び出す. 216 */ 217 extern void tPutLogSIOPort_initialize(void); 211 218 212 219 /* … … 244 251 245 252 /* 246 * L2キャッシュコントローラ(PL310)の初期化247 */248 /*pl310_initialize(0x0U, ~0x0U);*/249 250 /*251 253 * LEDを青色に点灯させる 252 254 */ … … 254 256 255 257 /* 256 * 低レベル出力用にSIOを初期化258 * SIOを初期化 257 259 */ 258 260 #ifndef TOPPERS_OMIT_TECS 259 tPutLog GRPeach_initialize();261 tPutLogSIOPort_initialize(); 260 262 #endif /* TOPPERS_OMIT_TECS */ 261 263 } … … 268 270 { 269 271 static int first = 1; 272 extern void software_term_hook(void); 273 void (*volatile fp)(void) = software_term_hook; 274 275 /* 276 * software_term_hookへのポインタを,一旦volatile指定のあるfpに代 277 * 入してから使うのは,0との比較が最適化で削除されないようにするた 278 * めである. 279 */ 280 if (fp != 0) { 281 (*fp)(); 282 } 270 283 271 284 /* … … 293 306 rza1_config_port(RZA1_PORT_P(6), led, set); 294 307 } 295 296 void us_ticker_init(void)297 {298 }299 300 uint32_t us_ticker_read()301 {302 ER ret;303 SYSTIM now;304 305 ret = get_tim(&now);306 if(ret != E_OK)307 return 0;308 309 return now;310 }311 312 void us_ticker_set_interrupt(timestamp_t timestamp)313 {314 Asm("bkpt #0");315 }316 317 void us_ticker_disable_interrupt(void)318 {319 }320 321 void us_ticker_clear_interrupt(void)322 {323 }324 325 void wait(float s)326 {327 wait_us(s * 1000000.0f);328 }329 330 void wait_ms(int ms)331 {332 wait_us(ms * 1000);333 }334 335 void wait_us(int us)336 {337 ER ret;338 339 ret = dly_tsk(us);340 if (ret == E_CTX){341 uint32_t start = us_ticker_read();342 while ((us_ticker_read() - start) < (uint32_t)us);343 }344 }
Note:
See TracChangeset
for help on using the changeset viewer.