ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
7 июля
186893 Топик полностью
MBedder, терминатор (26.03.2010 10:36 - 10:46, просмотров: 148) ответил Dany на Не получается заполнить IVT адресами, используя линкер. Что не так?
Это что за изврат такой? Ты бы еще опкоды ручками догадался писать - нахуа вообще всякие там ассемблеры/компилеры, ежели мы сами с ТАКИМИ усами? Для того, чтобы IVT слинковалась по-людски, нужно всего-навсего в исходнике называть ISR точно так, как прописано в скрипте: void __attribute__((__interrupt__)) _INT0Interrupt(void); // Global declaration void __attribute__((__interrupt__)) _INT0Interrupt(void) {/* put C30 code here */} .global __INT0Interrupt ; Global declaration __INT0Interrupt: ; put ASM30 code here retfie Для С30 имя ISR пишется с одним подчеркиванием, для ASM30 - с двумя. Если так уж нужно разместить именно по конкретным адресам - пользуйся атрибутом address (C30) или директивой .org (ASM30)