Would you please explain the codes below? Reset_Handler_ROM: # if ((*NCC_MEM).mem_cs0_csar.bits.v == 1) LDR R0, =MEM_CS0_CSAR LDR R1, [R0] ANDS R1, R1, #1 BEQ Reset_Handler # if ((*NCC_MEM).mmcr.bits.refcnt != 0) LDR R0, =MEM_MMCR LDR R1, =MEM_MMCR_m LDR R2, [R0] ANDS R2, R2, R1 BNE Reset_Handler LDR R0, =0x2000000 CMP R0, PC BLT Reset_Handler ADD R0, PC, R0 BX R0 # We now need to normalize the PC to the ROM Base address # if the ROM base address is cacheable. Cacheable ROM lives # above address 0x0a000000 LDR R0, ImageROBase LDR R1, =0x0a000000 CMP R0, R1 BNE Reset_Handler LDR R1, =0x08000000 ADD R0, PC, R1 BX R0 # .size Reset_Handler_ROM,.-Reset_Handler_ROM .globl Reset_Handler Reset_Handler: # First we need to initialize the Mode and disable interrupts. There is my analysis.Please check! When the board powers up,it boot from the ROM. ROM and RAM are not mapped,so the base address of ROM is 0x0. LDR R0, =0x2000000 CMP R0, PC BLT Reset_Handler ADD R0, PC, R0 BX R0 These codes make PC added by 0x2000000. Could you tell me what resides in 0x2000000? Thanks a lot!
when the boot process starts the “global Chipselect” mechanism is in place and the memmory map is very simple: only CS0 is enabled it’s mask set to 0x0 so it covers entire addressable memory space (0x00000000 - 0xffffffff) This is nessasary to start boot from flash the BSP is taking care of remaping the memmory to the run time values: CS0: 0x02000000 CS1: 0x00000000 CS3: 0x03000000 etc…