From: Yamijala S. <Sri...@si...> - 2003-11-19 11:51:00
|
Hi All ! I find that in blob/src, there are these files: start.S and ld-script. In ld-script, there is the declaration for _start (i suppose _start is a symbol) as: ENTRY(_start) I understand that _start is a global and is required by the linker to specify the first instruction to be executed in a program.The corresponding code in blob is: .globl _start _start: b reset b undefined_instruction b software_interrupt b abort_prefetch b abort_data b not_used b irq b fiq reset: - - - - - - - - - - - - - - - So, In blob the first instruction to be executed is the one in the reset label of start.S Now, could someone please clarify the following queries: After a H/W Reset, the instruction at address 0x00000000 is executed. In the SA-1110 manual, it has been mentioned that this address corresponds to the static memory selected by nCS0.Let me say, it is a Flash memory. In blob, I found a comment that "The SA-1110 jumps to address 0x00000000 after a reset. We put a single branch code at this position, which jumps to a safe region to do the actual setup". Also, in the SA-1110 manual, it has been given that 0x00000000 is the reset vector address. This means this is the first location where our processor should step into. So, is my assumption true that the flash is mapped to Static memory bank 0 of SA-1110 from addresses 0x00000000 and that _start: b reset is the first instruction to be executed after a reset? Moreover, how are the other branches namely: undefined_instruction, software_interrupt etc. mapped in S/W to the actual vectors? when/how is the first branch to these labels taken? Thank You Sridhar |