@discipuli
Студент

Как переделать код для ICCARM в GNUC?

Был кусок кода в иаре.
#if defined (__ICCARM__)
#define __vectors   __root const uVectorEntry __vector_table[] @ ".intvec"
#define __stack     { .ui32Ptr = (uint32_t)Stack + sizeof(Stack) }
typedef union
{
  void (*Handler)(void);
  uint32_t ui32Ptr;

} uVectorEntry;
#endif

Нужно его переделать для GCC.

Всё что после дефайнов по ходу тоже не зависит от компилятора.
Возможно реакции требует только 1 строчка после ифа.

Подробности.
Это startap файл для stm32f103c8t6(Cortex-M3).
Точнее маленький его кусок.
  • Вопрос задан
  • 32 просмотра
Решения вопроса 1
@discipuli Автор вопроса
Студент
#define __vectors void (*const __vector_table[])(void) __attribute__((section(".isr_vector")))
+ правильный линкер скрипт, или вообще дефолтный стартап из куба.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
Нужно его переделать для GCC.

Для этого сначала надо разобраться, что он делает. Потом узнать, как это делается в gcc. Потом переделать.

Возможно реакции требует только 1 строчка после ифа.

Возможно. Но отсюда не видно. Поместить переменную в нужную секцию в gcc можно атрибутом __attribute__((section("имя секции"))). См.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы