Я задал этот вопрос на форуме SCB, но не получил ответа. Я пытаюсь перенести некоторые проекты из uVision ide в SCB. Проблемы начались с реализацией векторной таблицы. Например, у меня есть простой код C++
#define STACK_TOP 0x20000800
typedef void (*handler_ptr)();
void ResetHandler() { while (1); }
void NMIHandler() { while (1); }
void HardFaultHandler() { while (1); }
__attribute__ ((section("vectors"))) handler_ptr const vector_table[] = {
(handler_ptr) STACK_TOP,
ResetHandler,
NMIHandler,
HardFaultHandler,
};
Этот код не компилируется, так как библиотека SCB ищет объявление "int main(void)". Хорошо, я могу добавить эту функцию, но тогда SCB игнорирует мою реализацию векторной таблицы и использует собственную (если я вызываю функцию, адрес которой в VT, я вижу фиктивные обработчики SCB).
Как я могу переписать реализацию SCB VT самостоятельно? Пожалуйста, не предлагайте использовать специальные имена функций SC3 (это нехорошо для поддержки двух IDE) или перемещать векторную таблицу в другую ячейку памяти.
__attribute__ ((section(".isr_vector"))) void (* const g_pfnVectors[])(void)
из Luminary Micro "startup_gcc.c - Код запуска для использования с инструментами GNU" также не действует
Спасибо.