1 /* 2 * Copyright (c) 2018, Synopsys, Inc. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #include <rthw.h> 8 #include <rtthread.h> 9 10 #include <rt_board.h> 11 12 #ifdef RT_USING_HEAP 13 #define rt_system_heap_size 1024*64 14 static rt_uint32_t rt_system_heap[rt_system_heap_size/4] = {0}; 15 #endif 16 17 extern int rt_application_init(void); 18 rt_hw_interrupt_init(void)19void rt_hw_interrupt_init(void) 20 { 21 /* rt-thread specific interrupt and exception init */ 22 } 23 24 /** 25 * This function will startup RT-Thread RTOS. 26 */ rtthread_startup(void)27void rtthread_startup(void) 28 { 29 30 /* initialize hardware interrupt */ 31 rt_hw_interrupt_init(); 32 33 /* initialize board */ 34 rt_hw_board_init(); 35 36 /* show RT-Thread version */ 37 rt_show_version(); 38 39 /* initialize memory system */ 40 #ifdef RT_USING_HEAP 41 rt_system_heap_init((void *)rt_system_heap, (void *)(rt_system_heap+rt_system_heap_size)); 42 #endif 43 44 /* initialize scheduler system */ 45 rt_system_scheduler_init(); 46 47 /* initialize system timer */ 48 rt_system_timer_init(); 49 50 /* initialize soft timer thread */ 51 rt_system_timer_thread_init(); 52 53 /* initialize application */ 54 rt_application_init(); 55 56 /* initialize idle thread */ 57 rt_thread_idle_init(); 58 59 /* start scheduler */ 60 rt_system_scheduler_start(); 61 62 /* never reach here */ 63 return ; 64 } 65 main(void)66int main(void) 67 { 68 /* disable interrupt first */ 69 rt_hw_interrupt_disable(); 70 71 /* invoke rtthread_startup */ 72 rtthread_startup(); 73 74 return 0; 75 } 76 77