39 lines
1.1 KiB
ArmAsm
39 lines
1.1 KiB
ArmAsm
/**
|
|
* @file rusEfiStartup.S
|
|
* rusEfi startup assembly
|
|
*
|
|
* We have ChibiOS '_crt0_entry' jumping here and then we jump back.
|
|
* There is probably no stack at this point to invoke a method.
|
|
*/
|
|
|
|
// todo: I have no idea which lines are doing what
|
|
// todo: one of these is resolving 'Error: lo register required -- `ldr SP,[R0,#0]'' :)
|
|
.syntax unified
|
|
.cpu cortex-m3
|
|
.thumb
|
|
.align 2
|
|
.thumb_func
|
|
// end of 'I have no idea'
|
|
|
|
// ChibiOS defines it's Reset_Handler 'weak' - by defining out handler this becomes firmware entry point
|
|
.global Reset_Handler
|
|
Reset_Handler:
|
|
// [rusefi][DFU][start]
|
|
// Clive Two.Zero is the God of ST community forum
|
|
// Device specific, if in doubt RTFM
|
|
LDR R0, =0x2001FFF0 // End of SRAM for your CPU
|
|
LDR R1, =0xDEADBEEF // magic value
|
|
LDR R2, [R0, #0]
|
|
STR R0, [R0, #0] // Invalidate
|
|
CMP R2, R1
|
|
BEQ UseDFU
|
|
// DFU bootloader not needed, jump back to normal ChibiOS startup
|
|
bl _crt0_entry
|
|
UseDFU:
|
|
// AN2606 Application note
|
|
// STM32 microcontroller system memory boot mode
|
|
#include "dfu_init.h"
|
|
BX R0 // this jumps to DFU bootloader
|
|
// I believe we are never executing this line
|
|
// [rusefi][DFU][end]
|