Перейти к содержанию
    

Можно ли делать условную линковку???

Добрый день! Продолжаю серию вопросов про линковщик. И снова прошерстил документацию вдоль и поперёк. Но вдруг, что-то не так понял. В общем, можно ли в файле линкера задать условную компиляцию линковку? Конкретно, нужно следующее

#if defined(WITHOUS_BOOTLOADER)
define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
#else
define symbol __ICFEDIT_region_ROM_start__ = 0x08004000;
#endif

Желательно всем этим управлять из среды IDE IAR.

Заранее падме хум)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, VladislavS said:

В разных конфигурациях указываем разные icf да и всё.

Понятно, значит условная линковака в том контексте, что я спросил невозможна) Ваш совет подходит!!! Спасибо)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну почему же, возможна. Вот из icf для stm32h743 кусочек

if (isdefinedsymbol(__USE_DLIB_PERTHREAD))
{
  // Required in a multi-threaded application
  initialize by copy with packing = none { section __DLIB_PERTHREAD };
}

Но в простейших случаях лучше без этого обходиться. Чтобы программе было всё равно с какого адреса стартовать, зачастую, достаточно просто добавить

  extern void(*__vector_table[])();     
  SCB->VTOR = (uint32_t)&__vector_table;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 minutes ago, VladislavS said:

SCB->VTOR = (uint32_t)&__vector_table;

За информацию спасибо) Но у меня нет VTOR(((

19 minutes ago, VladislavS said:

if (isdefinedsymbol(__USE_DLIB_PERTHREAD))

Вот оно! Далеко в описании нашлось теперь) Спасибо!!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 минут назад, haker_fox сказал:

Но у меня нет VTOR(((

Ну нет так нет. Делаем REMAP и устанавливаем вектора в SRAM. :)

#define InstallIRQ(name)  void name##Handler(); \
*(volatile uint32_t *)(0x2000'0040 + name##n * 4) = (uint32_t)name##Handler

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...