Hi,I am using I.MX6Q Sabre sd board (cortex-a9 ). 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 script as,
ldr r1,=__ram_vectors_start ldr r2,=__ram_vectors_end ldr r3,=vectors1: cmp r1,r2 ldmlt r3!,{r4,r5,r6} stmlt r1!,{r4,r5,r6} blt 1b
But when i enable uart interrupt, it does not enter the ISR. Is there any problem with this approach? Where should i place the Interrupt vector table? I am attaching my linker script and the start scripts. This is my first time. Please help.
Note: i am using GNU toolchain(arm-none-eabi-) and not using any IDE.
Hi ajeeshb4u ,
No, you should not shift the value.
Instead you should set the value into VBAR without shift.
Also, the VBAR value should be 32 byte aligned. That is, the lower 5 bits should be zero.
Can you try this?
Best regards,
Yasuhiko Koumoto.
Thanks yasuhikokoumoto. That did the trick.