FreeRTOS, NGW100 and interrupt mapping

Go To Last Post
2 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi,

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:

https://www.avrfreaks.net/index.p...

Appreciate any comments,
-drt

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Can anyone please help on this issue?
I am stuck :(

Thanks,
-drt