Bladeren bron

【修改】micropython 是否开启文件同步时的栈检查

SummerGift 6 jaren geleden
bovenliggende
commit
f310b1c322
1 gewijzigde bestanden met toevoegingen van 13 en 2 verwijderingen
  1. 13 2
      port/mpy_main.c

+ 13 - 2
port/mpy_main.c

@@ -46,6 +46,9 @@
 #include "mpgetcharport.h"
 #include "mpgetcharport.h"
 #include "mpputsnport.h"
 #include "mpputsnport.h"
 
 
+#define THREAD_STACK_NO_SYNC   4096
+#define THREAD_STACK_WITH_SYNC 8192
+
 #if MICROPY_ENABLE_COMPILER
 #if MICROPY_ENABLE_COMPILER
 void do_str(const char *src, mp_parse_input_kind_t input_kind) {
 void do_str(const char *src, mp_parse_input_kind_t input_kind) {
     nlr_buf_t nlr;
     nlr_buf_t nlr;
@@ -68,13 +71,21 @@ static char *heap = RT_NULL;
 
 
 void mpy_main(const char *filename) {
 void mpy_main(const char *filename) {
     int stack_dummy;
     int stack_dummy;
+    int stack_size_check;
     stack_top = (void *)&stack_dummy;
     stack_top = (void *)&stack_dummy;
 
 
     mp_getchar_init();
     mp_getchar_init();
     mp_putsn_init();
     mp_putsn_init();
 
 
-    if (rt_thread_self()->stack_size < 8192) {
-        mp_printf(&mp_plat_print, "The stack (%.*s) size for executing MicroPython must be >= 8192\n", RT_NAME_MAX, rt_thread_self()->name);
+#if defined(MICROPYTHON_USING_FILE_SYNC_VIA_IDE)
+    stack_size_check = THREAD_STACK_WITH_SYNC;
+#else
+    stack_size_check = THREAD_STACK_NO_SYNC;
+#endif
+
+    if (rt_thread_self()->stack_size < stack_size_check) 
+    {
+        mp_printf(&mp_plat_print, "The stack (%.*s) size for executing MicroPython must be >= %d\n", RT_NAME_MAX, rt_thread_self()->name, stack_size_check);
     }
     }
 
 
 #if MICROPY_PY_THREAD
 #if MICROPY_PY_THREAD