Цитата
RealByte const * pParamInEEPROM;
А Вы уверены, что хотели именно так написать? Это будет указатель на variable (!!!) (а не FLASH), который нельзя будет изменять. Это если конечно в С++ всё не запутали окончательно. Я пишу на Си.
Думаю, надо так:
const RealByte *pParamInEEPROM;
Вызывать из прерываний IAP конечно можно. Однако. Для начала сделайте прерывание от UART с возможностью вложенных прерываний. Что-то типа этого:
Цитата
__arm __irq __nested void UART1Interrupt()
{
_enaIRQ();
switch(U1IIR & 0x0f)
{
.....
}
_disIRQ();
VICVectAddr = 0; // Clear interrupt in VIC.
}
Это сделает такой фокус, что внутри прерывания стек будет использоваться глобальный. Поэтому стек прерываний уменьшите до 128..256 байт обратно.
Цитата
typedef void (*IAP)(unsigned long *,unsigned long *);
IAP iap_entry =(IAP) IAP_LOCATION;
исправьте на
typedef void (__interwork *IAP)(unsigned long *,unsigned long *);
IAP iap_entry =(IAP) IAP_LOCATION;
Хотя прерывание не исправляйте. Чё-то у Вас оно как-то неуклюже написано. И лучше не напрягаться, а то долго объяснять мне придётся что к чему.
Почему-то нашёл только один вектор для таймера.
Сообщение отредактировал GetSmart - Jun 7 2006, 11:33