blue-pill: copying linker script over

This commit is contained in:
Kyle Isom 2018-03-12 22:48:05 -07:00
parent 943e2bfa93
commit 5f5c4ac7ae
5 changed files with 36 additions and 28 deletions

View File

@ -1,11 +1,18 @@
MEMORY MEMORY
{ {
flash (rx) : ORIGIN = 0x00000000, LENGTH = 128K flash (rx) : ORIGIN = 0x08000000, LENGTH = 64K
sram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K sram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
} }
EXTERN(vectors);
ENTRY(reset_handler);
SECTIONS SECTIONS
{ {
.text : { *(.text*) } > flash .text : {
*(.vectors*)
*(.text*)
. = ALIGN(4);
} > flash
.bss : { *(.bss*) } > sram .bss : { *(.bss*) } > sram
} }

View File

@ -8,29 +8,26 @@
.cpu cortex-m3 .cpu cortex-m3
.thumb .thumb
.globl vectors .section .text
.global vectors
vectors: vectors:
.align 2 .align 2
.long 0x20002000 /* best guess at stack pointer */ .long 0x100 /* best guess at stack pointer */
.long reset_handler /* reset handler */ .long reset_handler /* reset handler */
.long hang /* NMI handler */ .long 0 /* NMI handler */
.long hang /* hard_fault_handler */ .long 0 /* hard_fault_handler */
.long hang /* memory management handler */ .long 0 /* memory management handler */
.long hang /* bus fault handler */ .long 0 /* bus fault handler */
.long hang /* usage fault handler */ .long 0 /* usage fault handler */
.skip 0x20 /* reserved */ .skip 0x20 /* reserved */
.long hang /* svcall handler */ .long 0 /* svcall handler */
.long hang /* debug handler */ .long 0 /* debug handler */
.skip 4 /* reserved */ .skip 4 /* reserved */
.long hang /* pendsv handler */ .long 0 /* pendsv handler */
.long hang /* systick handler */ .long 0 /* systick handler */
.skip 0x100 /* remaining / IRQ vectors */ .skip 0xf4 /* remaining / IRQ vectors */
.thumb_func
hang: b .
.thumb_func .thumb_func
.global reset_handler
reset_handler: reset_handler:
bl main bl main

View File

@ -4,7 +4,6 @@ constexpr uint32_t LED = 13;
constexpr unsigned long SDELAY = 100000; constexpr unsigned long SDELAY = 100000;
constexpr unsigned long LDELAY = (SDELAY * 10) - (3 * SDELAY); constexpr unsigned long LDELAY = (SDELAY * 10) - (3 * SDELAY);
// void __attribute__ ((weak, naked)) reset_handler(void) {
int int
main() { main() {
GPIO_C->enable_clock(); GPIO_C->enable_clock();
@ -21,4 +20,3 @@ main() {
delay(SDELAY); delay(SDELAY);
} }
} }

View File

@ -1,6 +1,6 @@
MEMORY MEMORY
{ {
flash (rx) : ORIGIN = 0x08000000, LENGTH = 64K flash (rx) : ORIGIN = 0x08000000, LENGTH = 128K
sram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K sram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
} }
@ -10,9 +10,8 @@ ENTRY(reset_handler);
SECTIONS SECTIONS
{ {
.text : { .text : {
*(.vectors*) *(.vectors)
*(.text*) *(.text*)
. = ALIGN(4); . = ALIGN(4);
} > flash } > flash
.bss : { *(.bss*) } > sram
} }

View File

@ -1,11 +1,18 @@
MEMORY MEMORY
{ {
flash (rx) : ORIGIN = 0x00000000, LENGTH = 128K flash (rx) : ORIGIN = 0x08000000, LENGTH = 64K
sram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K sram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
} }
EXTERN(vectors);
ENTRY(reset_handler);
SECTIONS SECTIONS
{ {
.text : { *(.text*) } > flash .text : {
*(.vectors*)
*(.text*)
. = ALIGN(4);
} > flash
.bss : { *(.bss*) } > sram .bss : { *(.bss*) } > sram
} }