Other Parts Discussed in Thread: CCSTUDIO
Hello,
i m trying to understand how boot of AM3358 works.
I re wrote the interrupt vector table, in my "system_startup.S" file:
@... .section .isr_vector .align 4 .globl __isr_vector __isr_vector: @ Vector_Init_Block LDR PC, [pc, #24] @Reset_Addr LDR PC, [pc, #-8] @Undefined_Addr LDR PC, [pc, #24] @SWI_Addr LDR PC, [pc, #-8] @Prefetch_Addr LDR PC, [pc, #24] @Abort_Addr NOP @Reserved vector LDR PC, [pc, #24] @IRQ_Addr LDR PC, [pc, #24] @FIQ_Addr .globl __isr_branches __isr_branches: @Reset_Addr: .word Entry @ Start_Boot @Undefined_Addr: .word 0 @SWI_Addr: .word SVC_Handler @Prefetch_Addr: .word 0 @Abort_Addr: .word AbortHandler .word 0 @Reserved vector @IRQ_Addr: .word IRQHandler @FIQ_Addr: .word FIQHandler .size __isr_vector, . - __isr_vector @...
and i have it allocated at address 0x8000000 in .lds file. I checked tha map files, and __isr_vector is correctly put at address 0x80000000.
When i load application into processor, after clicking on debug button in ccstudio, i see that at address 0x80000000 code is different from the one i wrote.
- Why?? - who is responsible for copying code from my .out executable into memory RAM address 0x80000000 ??
I checked compiled application (in .out file), and it is correct, i think that what i see at 0x80000000 address during debug, is something different from what i have in .out file.
Am i missing something in boot code that should copy from my application (.out file) into RAM at 0x80000000???
EDIT: It seems that code i see at 0x80000000 is pretty similiar to routine __isr_vector: that is in startup_ARMCA8.S file, that is included in default files when creating a new ccsproject in code composer studio.
how all this works?? what am i doing wrong?
Thank You
Emanuele P.