Приветствую.
Несколько вопросов по линкеру ИАРа, в документации либо не нашел, либо плохо искал. Вообще речь про МСП430 если это значимо.
1. Есть ли дириктивы условной линковки, типа #ifdef ? Хочу по-разному линковать в зависимости от определения дефайнов. Ну либо как в ИАРе в зависимости от дефайна в свойствах проекта подключать разные xcl файлы?
2. Хочу маппировать вектора прерывания на область альтернативных векторов в ОЗУ. Соответственно есть область во флешь где располагаются вектора и она заключена в секцию INTVECT. Можно ли ее АВТОМАТИЧЕСКИ скопировать в ОЗУ на нужные адреса, то есть в стартапе, подшаманив линкерный файл. Как ручками это сделать я знаю.
3. Есть несколько секций, которые по архитектурным соображениям должны лежать в нижних 64к адресного пространства. Описываются они так:
Код
-Z(CODE)CSTART,ISR_CODE
-Z(CONST)DIFUNCT,CHECKSUM
-Z(CONST)DATA16_C,DATA16_ID
Я этот блок флеша для своих нужд стираю, соответственно надо значала скопировать в ОЗУ, потом стереть, потом записать обратно. Как сделать какое-то объединение этих секций в одну, чтоб я не писал 6 раз что-то типа:
Код
void* const ram_start = __sfb("INTVEC"); /* start of RAMCODE */
const void* const ram_end = __sfe("INTVEC"); /* end of RAMCODE */
const void* const rom_start = __sfb("INTVECROM"); /* start of ROMCODE */
/* compute the number of bytes to copy */
UINT32 size = (UINT8*)(ram_end) - (UINT8*)(ram_start);
/* copy the contents of ROMCODE to RAMCODE */
memcpy(ram_start, rom_start, size );
для каждой из 6 секций. Сделать бы своего рода union чтоб он покрывал всю область памяти, занимаемую несколькими секциями. Так можно?
Спасибо.