AnsweredAssumed Answered

Interrupt Vector Table in IMX6Q

Question asked by ajmalali on Oct 17, 2016
Latest reply on Oct 27, 2016 by ajmalali

Hi,
I am using I.MX6Q Sabre sd board. I am trying to build custom image with my own start script and ld script. The image is to be loaded with u-boot. Where should i place the Interrupt vector table? Now, when i reffered the "1.1.0_iMX6_Platform_SDK", The vector table was given as,
vectors:
ldr pc, .Lreset_addr
ldr pc, .Lundefined_addr
ldr pc, .Lswi_addr
ldr pc, .Lprefetch_abort_addr
ldr pc, .Ldata_abort_addr
ldr pc, .Lreserved_addr
ldr pc, .Lirq_addr
ldr pc, .Lfiq_addr
.word 0

and is loaded at "ORIGIN(OCRAM) + LENGTH(OCRAM) - 72", ie at 0x0093ffb8, as,

.ram_vectors (ORIGIN(OCRAM) + LENGTH(OCRAM) - RAM_VECTORS_SIZE) (NOLOAD) :
{
__ram_vectors_start = .;
. += RAM_VECTORS_SIZE;
__ram_vectors_end = .;
} > OCRAM

and later copied to RAM in start as,

ldr r1,=__ram_vectors_start
ldr r2,=__ram_vectors_end
ldr r3,=vectors
1: cmp r1,r2
ldmlt r3!,{r4,r5,r6}
stmlt r1!,{r4,r5,r6}
blt 1b

I am using same approach. But when i enable uart interrupt, it does not enter the ISR. Is there any problem with this approach? Or should i load the vector table at 0x00000000 in ROM ???

Outcomes