Я нашел ошибку, которая вызывает аварии на ATmega1280 при компиляции с GCC.
Первоначальные кадра стека имеет слишком много байт за $ PC
Исправление для проверки __AVR_3_BYTE_PC__
С этим исправить, я бегу scmRTOS под Arduino.
Regards,
= Mike
Код
--- OS_Target_cpp.cpp~ 2011-07-20 23:02:56.000000000 -0700
+++ OS_Target_cpp.cpp 2011-07-20 23:07:04.000000000 -0700
@@ -96,8 +96,7 @@
//
*(--Stack) = reinterpret_cast<uint16_t>(exec); // return from interrupt address (low byte)
*(--Stack) = reinterpret_cast<uint16_t>(exec) >> 8; // return from interrupt address (high byte)
-#ifdef EIND
- // assume EIND exist only in 3-byte-PC AVRs
+#ifdef __AVR_3_BYTE_PC__
*(--Stack) = 0; // all trampolines are placed in lower 128K
#endif
*(--Stack) = 0; // initalize __zero_reg__ for this process
+++ OS_Target_cpp.cpp 2011-07-20 23:07:04.000000000 -0700
@@ -96,8 +96,7 @@
//
*(--Stack) = reinterpret_cast<uint16_t>(exec); // return from interrupt address (low byte)
*(--Stack) = reinterpret_cast<uint16_t>(exec) >> 8; // return from interrupt address (high byte)
-#ifdef EIND
- // assume EIND exist only in 3-byte-PC AVRs
+#ifdef __AVR_3_BYTE_PC__
*(--Stack) = 0; // all trampolines are placed in lower 128K
#endif
*(--Stack) = 0; // initalize __zero_reg__ for this process