I am using NGW100 with FreeRTOS.
I need a lot of interrupts. Now, the FreeRTOS demo project maps the interrupt handlers from address 0x600 onwards. This section is the ".handlers" section.
Now, as soon as any of the interrupts are mapped beyond 0x800 map, they stop functioning.
In the FreeRTOS file port.c, the timer 0 interrupt is mapped as:
extern void ( vPreemptiveTick )( void ); volatile avr32_intc_t *intc = &AVR32_INTC; unsigned long addr2 = (unsigned long) &vPreemptiveTick; // adress of interrupt is EVBA | Offset, not EVBA + Offset // EVBA is set to 0x200, handlers start at 0x600 // 0x200 | 0x600 = 0x600 !! // offset is 14 bits -> so we mask out MSB unsigned long offset; offset = addr2 & 0x03FFF; intc->ipr[tc0group] = (INT0 << INTLEV) | (offset);
Looking at the comments in the above code, the interrupt mapping does not seem to be consistent for all addresses. Is there other way to map the interrupts?
The problem is very similar to the post:
Appreciate any comments,