Может, кто сталкивался...
Прооблема такая: в разных файлах проекта я написал несколько обработчиков прерываний следующим образом:
#pragma vector=17
__irq __arm void WizNet_IRQ(void)
{
...
}
При компиляции один файл компилится нормально, на двух других компилятор выдает ошибку:
Internal Error: [AsmLine - OgAsm]: Error[414]: Bad instruction alignment. ARM instructions must be 32-bit-aligned and Thumb instructions must be 16-bit-ali
LDR PC,[PC,#24]
Никто не подскажет, отчего это может происходить (пакет EWARM v4.20a)?
Andy Mozzhevilov
May 19 2005, 05:04
Цитата(Tramp @ May 18 2005, 14:34)
Может, кто сталкивался...
Прооблема такая: в разных файлах проекта я написал несколько обработчиков прерываний следующим образом:
#pragma vector=17
vector - суть адрес, он не может быть не кратным 4.
для LPC, к примеру, vector может быть:
#define RESETV 0x00 /* Reset */
#define UNDEFV 0x04 /* Undefined instruction */
#define SWIV 0x08 /* Software interrupt */
#define PABORTV 0x0c /* Prefetch abort */
#define DABORTV 0x10 /* Data abort */
#define IRQV 0x18 /* Normal interrupt */
#define FIQV 0x1c /* Fast interrupt */
У вас, судя по __irq , должно быть так
#pragma vector=IRQV
__irq __arm void WizNet_IRQ(void)
{
...
}