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)21 void soc_hw_timer_init(void)
22 {
23 }
24 
soc_hr_hw_cnt_get(void)25 hr_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)31 lr_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()46 void 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()56 size_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()66 static 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)88 void 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