This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3358: Am3358 boot code

Part Number: AM3358
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.