AnsweredAssumed Answered

mx233 interrupt vector table (IVT)

Question asked by Nidal Prasovic on Feb 27, 2013
Latest reply on Jan 13, 2014 by Valentin Ivanov
Branched to a new discussion

I was testing some code on mx233 the other day and got "SWI" string printed out on debug uart after which processor reboots.

 

I guessed that this means some code I linked (newlib 1.20.0) used SWI instruction for something, and ocrom caught it and rebooted processor.

To confirm this I went through ton of documents and little less code from different projects, but got almost nowhere.

 

This I found in mx233 technical manual:

"

The vector table pointing to these interrupts can be located at physical address 0x00000000 or 0xFFFF0000. The i.MX23 maps its 64-Kbyte on-chip ROM to the address 0xFFFF0000 to 0xFFFFFFFF. The core is hardwired to use the high address vector table at hard reset (core port VINITHI =1).

"

So, is this mapping only hardwired for hard reset or forever?

 

 

I'm still trying to find out:

- does mx233 support IVT we can set up from code (looks like mx25 and mx28 do)?

- if it does, how is it done? where is the chip register I should write 1 or 0 to so IVT is remapped to 0x00000000?

- if it doesn't, then what ocrom does with abort, undef, swi and exceptions other than irq and fiq? is there a way to handle those other exceptions?

 

I realize that I must have compiled newlib so that it uses swi for some of 16 (or was it 18?) syscalls we need to implement, I just don't know which one.

I have implemented them all except 3 (kill, exit and can't remember third). Linker was complaining about already defined functions.

 

Anyway, back to the topic, question is not about newlib, it is about IVT in mx233. Any ideas?

 

Tnx.

Outcomes