Ver código fonte

Merge pull request #14 from wdfk-prog/port

更新port文件,与 rt_kprintf_threadsafe兼容
朱天龙 (Armink) 3 anos atrás
pai
commit
0a873cd847
1 arquivos alterados com 10 adições e 5 exclusões
  1. 10 5
      cmb_port.c

+ 10 - 5
cmb_port.c

@@ -86,7 +86,7 @@ void rt_cm_backtrace_exception_hook(void *context)
     uint32_t lr;
     uint32_t *other_info_sp = 0;
 
-    rt_enter_critical();
+    rt_interrupt_enter();
 
 #ifdef RT_USING_FINSH
     extern long list_thread(void);
@@ -178,6 +178,8 @@ void rt_cm_backtrace_exception_hook(void *context)
     cmb_println("==============================================================");
 
     cmb_println("Current system tick: %ld", rt_tick_get());
+
+    rt_interrupt_leave();
 }
 
 #else
@@ -196,8 +198,8 @@ void rt_cm_backtrace_exception_hook(void *context)
 #else
 #define EXC_RETURN_MASK                0x0000000F // Bits[31:5]
 #endif
-        
-    rt_enter_critical();
+
+    rt_interrupt_enter();
 
 #ifdef RT_USING_FINSH
     extern long list_thread(void);
@@ -230,13 +232,14 @@ void rt_cm_backtrace_exception_hook(void *context)
     cm_backtrace_fault(lr, cmb_get_sp() + sizeof(uint32_t) * CMB_SP_WORD_OFFSET);
 
     cmb_println("Current system tick: %ld", rt_tick_get());
+    rt_interrupt_leave();
 }
 
 #endif
 
 void rt_cm_backtrace_assert_hook(const char* ex, const char* func, rt_size_t line)
 {
-    rt_enter_critical();
+    rt_interrupt_enter();
 
 #ifdef RT_USING_FINSH
     extern long list_thread(void);
@@ -249,6 +252,8 @@ void rt_cm_backtrace_assert_hook(const char* ex, const char* func, rt_size_t lin
     cm_backtrace_assert(cmb_get_sp());
 
     cmb_println("Current system tick: %ld", rt_tick_get());
+
+    rt_interrupt_leave();
 }
 
 RT_WEAK rt_err_t exception_hook(void *context) {
@@ -277,7 +282,7 @@ int rt_cm_backtrace_init(void) {
         return 0;
     }
 
-    cm_backtrace_init("rtthread","1.0","1.0");
+    cm_backtrace_init("rt-thread","1.0","1.0");
     
     rt_hw_exception_install(exception_hook);