In that case, it would be easier to copy the whole boot loader (rather than a portion of it) from flash to SRAM in the assembly startup code. The boot loader, assumed to be mostly written in C, will have to linked to use the SRAM address as program memory range.In the assembly startup code you will have a reset handler, and normally you can see something like:Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main LDR R0,=__main BX R0 ; this branch to C startup code ENDPYou can insert an assembly code to copy the memory from flash to SRAM, before jumping to the C startup code which will be in SRAM.Reset_Handler PROC EXPORT Reset_Handler [WEAK] LDR R4,=0x00000000 ; Source starting address LDR R5,=0x20000000 ; Destination starting address LDR R6,=0x4000 ; 16K program size to copyCopyFlashToSRAMLoop LDMIA R4!,{R0-R3} STMIA R5!,{R0-R3} LDMIA R4!,{R0-R3} STMIA R5!,{R0-R3} LDMIA R4!,{R0-R3} STMIA R5!,{R0-R3} LDMIA R4!,{R0-R3} STMIA R5!,{R0-R3} SUBS R6,#64 ; Each time 64 bytes are copied BNE CopyFlashToSRAMLoop IMPORT __main LDR R0,=__main BX R0 ; this branch to C startup code ENDPIn this way, the whole boot loader will be running in SRAM. You need to be careful to make sure that the data use by the boot loader is not in the same address as the instruction memory.regards,Joseph