Eradicate all occurences of hardcoded memory addresses from all sources files, except for the FPGA bitstream fallback

This commit is contained in:
henryk@ploetzli.ch 2009-08-31 14:52:59 +00:00
commit e3ae025783
7 changed files with 26 additions and 13 deletions

View file

@ -107,6 +107,7 @@ void UsbPacketReceived(BYTE *packet, int len)
UsbSendPacket(packet, len);
}
extern char _osimage_entry;
void BootROM(void)
{
//------------
@ -182,9 +183,8 @@ void BootROM(void)
USB_D_PLUS_PULLUP_OFF();
LED_B_ON();
// jump to Flash address 0x10000 (LSBit set for thumb mode, 0x100000 added for Flash base address)
asm("ldr r3, = 0x00110001\n");
asm("bx r3\n");
// jump to Flash address of the osimage entry point (LSBit set for thumb mode)
asm("bx %0\n" : : "r" ( ((int)&_osimage_entry) | 0x1 ) );
}
}
}

View file

@ -16,12 +16,17 @@ flashstart:
b Fiq
Reset:
ldr sp, = 0x0020FFF8 @ initialize stack pointer to top of RAM
ldr sp, .stack_end @ initialize stack pointer to top of RAM
bl CopyBootToRAM @ copy bootloader to RAM (in case the
@ user re-flashes the bootloader)
ldr r3, = 0x00200000 @ start address of RAM bootloader
ldr r3, .bootphase2_start @ start address of RAM bootloader
bx r3 @ jump to it
.stack_end:
.word _stack_end
.bootphase2_start:
.word __bootphase2_start__
Fiq:
b Fiq
UndefinedInstruction:

View file

@ -1,11 +1,13 @@
#include <proxmark3.h>
extern char __bootphase2_src_start__, __bootphase2_start__, __bootphase2_end__;
void __attribute__((section(".bootphase1"))) CopyBootToRAM(void)
{
int i;
volatile DWORD *s = (volatile DWORD *)0x200;
volatile DWORD *d = (volatile DWORD *)0x200000;
volatile DWORD *s = (volatile DWORD *)&__bootphase2_src_start__;
volatile DWORD *d = (volatile DWORD *)&__bootphase2_start__;
unsigned int l = (int)&__bootphase2_end__ - (int)&__bootphase2_start__;
for(i = 0; i < 1024; i++) *d++ = *s++;
for(i = 0; i < l/sizeof(DWORD); i++) *d++ = *s++;
}

View file

@ -25,6 +25,7 @@ SECTIONS
LONG(_version_information_start)
} >bootphase1
__bootphase2_src_start__ = ORIGIN(bootphase2);
.bootphase2 : {
__bootphase2_start__ = .;
*(.startphase2)

View file

@ -6,5 +6,8 @@
.global ramstart
ramstart:
ldr sp, = 0x0020FFF8
ldr sp, .stack_end
bl BootROM
.stack_end:
.word _stack_end