1 /** 2 ****************************************************************************** 3 * @file k_config.c 4 * @author MCU China FAE team 5 * @version 1.0 6 * @date 05/01/2019 7 * @brief aos porting layer 8 ****************************************************************************** 9 * 10 * COPYRIGHT(c) 2019 STMicroelectronics 11 * 12 ****************************************************************************** 13 */ 14 15 #include <k_api.h> 16 #include <assert.h> 17 #include <stdio.h> 18 #include <sys/time.h> 19 20 #if (RHINO_CONFIG_HW_COUNT > 0) soc_hw_timer_init(void)21void soc_hw_timer_init(void) 22 { 23 } 24 soc_hr_hw_cnt_get(void)25hr_timer_t soc_hr_hw_cnt_get(void) 26 { 27 return 0; 28 //return *(volatile uint64_t *)0xc0000120; 29 } 30 soc_lr_hw_cnt_get(void)31lr_timer_t soc_lr_hw_cnt_get(void) 32 { 33 return 0; 34 } 35 #endif /* RHINO_CONFIG_HW_COUNT */ 36 37 38 #if (RHINO_CONFIG_MM_TLF > 0) 39 extern size_t __heap_start; 40 extern size_t __heap_end; 41 42 /* __bss_end__ and _estack is set by linkscript(*.ld) 43 heap and stack begins from __bss_end__ to _estack */ 44 k_mm_region_t g_mm_region[1]; 45 int g_region_num = 1; aos_heap_set()46void aos_heap_set() 47 { 48 g_mm_region[0].start = (uint8_t*)&__heap_start; 49 g_mm_region[0].len = 50 ((uint8_t*)&__heap_end - (uint8_t*)&__heap_start) - RHINO_CONFIG_SYSTEM_STACK_SIZE; 51 } 52 53 #endif 54 55 #if (RHINO_CONFIG_TASK_STACK_CUR_CHECK > 0) soc_get_cur_sp()56size_t soc_get_cur_sp() 57 { 58 size_t sp = 0; 59 #if defined (__GNUC__)&&!defined(__CC_ARM) 60 asm volatile( 61 "csrr %0,sp\n" 62 :"=r"(sp)); 63 #endif 64 return sp; 65 } soc_print_stack()66static void soc_print_stack() 67 { 68 void *cur, *end; 69 int i=0; 70 int *p; 71 72 end = krhino_cur_task_get()->task_stack_base + krhino_cur_task_get()->stack_size; 73 cur = (void *)soc_get_cur_sp(); 74 p = (int*)cur; 75 while(p < (int*)end) { 76 if(i%4==0) { 77 printf("\r\n%p:",(long)p); 78 } 79 printf("%p ", *p); 80 i++; 81 p++; 82 } 83 printf("\r\n"); 84 return; 85 } 86 #endif 87 soc_err_proc(kstat_t err)88void soc_err_proc(kstat_t err) 89 { 90 (void)err; 91 printf("soc_err_proc %d \r\n", err); 92 //krhino_backtrace_now(); 93 #if (RHINO_CONFIG_TASK_STACK_CUR_CHECK > 0) 94 //soc_print_stack(); 95 #endif 96 while(1); 97 } 98 99 krhino_err_proc_t g_err_proc = soc_err_proc; 100 101