aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNIIBE Yutaka <gniibe@fsij.org>2015-07-15 12:01:53 +0900
committerNIIBE Yutaka <gniibe@fsij.org>2015-07-15 12:01:53 +0900
commit44b4bf640f383f2d2f198df3a9cf3294e20a39ec (patch)
treef4056eb0bca82d0215771f9c4557be3283f9b389
parent989863916548c54bccfd7ceeb932b655b52eba7b (diff)
Update example for LED blink
-rw-r--r--example-led/Makefile11
l---------example-led/board.h1
-rw-r--r--example-led/sample.ld33
-rw-r--r--example-led/sample.ld.m3142
4 files changed, 165 insertions, 22 deletions
diff --git a/example-led/Makefile b/example-led/Makefile
index 89cbe21..35968e6 100644
--- a/example-led/Makefile
+++ b/example-led/Makefile
@@ -2,9 +2,14 @@
PROJECT = sample
+### Currently, it's for STM32F0 Discovery.
+### Please change lines started with '###' for Cortex-M3 board.
+
CHOPSTX = ..
LDSCRIPT= sample.ld
-CSRC = sys.c aes-constant-ft.c sample.c
+### LDSCRIPT= sample.ld.m3
+CSRC = sys.c sample.c
+### CSRC = sys.c aes-constant-ft.c sample.c
###################################
CROSS = arm-none-eabi-
@@ -12,11 +17,11 @@ CC = $(CROSS)gcc
LD = $(CROSS)gcc
OBJCOPY = $(CROSS)objcopy
-# MCU = cortex-m3
+### MCU = cortex-m3
MCU = cortex-m0
CWARN = -Wall -Wextra -Wstrict-prototypes
DEFS = -DHAVE_SYS_H -DFREE_STANDING -DMHZ=48
-# DEFS = -DFREE_STANDING -DHAVE_SYS_H -DBUSY_LOOP -DCHX_FLAGS_MAIN=CHOPSTX_SCHED_RR
+### DEFS = -DFREE_STANDING -DHAVE_SYS_H -DBUSY_LOOP -DCHX_FLAGS_MAIN=CHOPSTX_SCHED_RR
OPT = -O3 -Os -g
LIBS =
diff --git a/example-led/board.h b/example-led/board.h
new file mode 120000
index 0000000..25f9e69
--- /dev/null
+++ b/example-led/board.h
@@ -0,0 +1 @@
+../board/board-stm32f0-discovery.h \ No newline at end of file
diff --git a/example-led/sample.ld b/example-led/sample.ld
index 6934b9f..909e184 100644
--- a/example-led/sample.ld
+++ b/example-led/sample.ld
@@ -1,26 +1,19 @@
/*
- * ST32F103 memory setup.
+ * ST32F0 memory setup.
*/
__main_stack_size__ = 0x0100; /* Exception handlers */
-__process0_stack_size__ = 0x0100; /* Main program */
+__process0_stack_size__ = 0x0100; /* Main program */
__process1_stack_size__ = 0x0100; /* first thread program */
__process2_stack_size__ = 0x0100; /* second thread program */
__process3_stack_size__ = 0x0100; /* third thread program */
MEMORY
{
-/*
flash0 : org = 0x08000000, len = 4k
flash : org = 0x08000000+0x1000, len = 60k
-*/
- flash0 : org = 0x08000000, len = 1k
- flash : org = 0x08000000+0x0400, len = 60k
ram : org = 0x20000000, len = 20k
}
-__flash_start__ = 0x08001000;
-__flash_end__ = 0x08020000;
-
__ram_start__ = ORIGIN(ram);
__ram_size__ = 20k;
__ram_end__ = __ram_start__ + __ram_size__;
@@ -29,16 +22,17 @@ SECTIONS
{
. = 0;
- .sys : ALIGN(16) SUBALIGN(8)
+ .sys : ALIGN(4) SUBALIGN(4)
{
- _sys = .;
- KEEP(*(.vectors))
+ _sys = .;
+ KEEP(*(.vectors))
. = ALIGN(16);
KEEP(*(.sys.version))
- KEEP(*(.sys.board))
+ KEEP(*(.sys.board_id))
+ KEEP(*(.sys.board_name))
build/sys.o(.text)
build/sys.o(.text.*)
- build/sys.o(.rodata)
+ build/sys.o(.rodata)
build/sys.o(.rodata.*)
. = ALIGN(1024);
/*
@@ -46,7 +40,7 @@ SECTIONS
*(.sys.1)
*(.sys.2)
*/
- } > flash0
+ } > flash0 =0xffffffff
_text = .;
@@ -66,6 +60,7 @@ SECTIONS
*(.glue_7t)
*(.glue_7)
*(.gcc*)
+ . = ALIGN(8);
} > flash
.ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)} > flash
@@ -89,7 +84,7 @@ SECTIONS
{
. = ALIGN(8);
__vector_ram_addr__ = .;
- KEEP(*(.data.startup.*))
+ KEEP(*(.bss.startup.*))
} > ram
.process_stack :
@@ -98,15 +93,15 @@ SECTIONS
__process3_stack_base__ = .;
. += __process3_stack_size__;
. = ALIGN(8);
- __process_stack3_end__ = .;
+ __process3_stack_end__ = .;
__process2_stack_base__ = .;
. += __process2_stack_size__;
. = ALIGN(8);
- __process_stack2_end__ = .;
+ __process2_stack_end__ = .;
__process1_stack_base__ = .;
. += __process1_stack_size__;
. = ALIGN(8);
- __process_stack1_end__ = .;
+ __process1_stack_end__ = .;
__process0_stack_base__ = .;
. += __process0_stack_size__;
. = ALIGN(8);
diff --git a/example-led/sample.ld.m3 b/example-led/sample.ld.m3
new file mode 100644
index 0000000..a5a6779
--- /dev/null
+++ b/example-led/sample.ld.m3
@@ -0,0 +1,142 @@
+/*
+ * ST32F103 memory setup.
+ */
+__main_stack_size__ = 0x0100; /* Exception handlers */
+__process0_stack_size__ = 0x0100; /* Main program */
+__process1_stack_size__ = 0x0100; /* first thread program */
+__process2_stack_size__ = 0x0100; /* second thread program */
+__process3_stack_size__ = 0x0100; /* third thread program */
+
+MEMORY
+{
+ flash0 : org = 0x08000000, len = 4k
+ flash : org = 0x08000000+0x1000, len = 60k
+ ram : org = 0x20000000, len = 20k
+}
+
+__ram_start__ = ORIGIN(ram);
+__ram_size__ = 20k;
+__ram_end__ = __ram_start__ + __ram_size__;
+
+SECTIONS
+{
+ . = 0;
+
+ .sys : ALIGN(4) SUBALIGN(4)
+ {
+ _sys = .;
+ KEEP(*(.vectors))
+ . = ALIGN(16);
+ KEEP(*(.sys.version))
+ KEEP(*(.sys.board_id))
+ KEEP(*(.sys.board_name))
+ build/sys.o(.text)
+ build/sys.o(.text.*)
+ build/sys.o(.rodata)
+ build/sys.o(.rodata.*)
+ . = ALIGN(1024);
+ *(.sys.0)
+ *(.sys.1)
+ *(.sys.2)
+ } > flash0
+
+ _text = .;
+
+ .startup : ALIGN(128) SUBALIGN(128)
+ {
+ KEEP(*(.startup.vectors))
+ . = ALIGN (16);
+ } > flash =0xffffffff
+
+ .text : ALIGN(16) SUBALIGN(16)
+ {
+ *(.text.startup.*)
+ *(.text)
+ *(.text.*)
+ *(.rodata)
+ *(.rodata.*)
+ *(.glue_7t)
+ *(.glue_7)
+ *(.gcc*)
+ . = ALIGN(8);
+ } > flash
+
+ .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)} > flash
+
+ .ARM.exidx : {
+ PROVIDE(__exidx_start = .);
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ PROVIDE(__exidx_end = .);
+ } > flash
+
+ .eh_frame_hdr : {*(.eh_frame_hdr)} > flash
+
+ .eh_frame : ONLY_IF_RO {*(.eh_frame)} > flash
+
+ .textalign : ONLY_IF_RO { . = ALIGN(8); } > flash
+
+ _etext = .;
+ _textdata = _etext;
+
+ .process_stack :
+ {
+ . = ALIGN(8);
+ __process3_stack_base__ = .;
+ . += __process3_stack_size__;
+ . = ALIGN(8);
+ __process3_stack_end__ = .;
+ __process2_stack_base__ = .;
+ . += __process2_stack_size__;
+ . = ALIGN(8);
+ __process2_stack_end__ = .;
+ __process1_stack_base__ = .;
+ . += __process1_stack_size__;
+ . = ALIGN(8);
+ __process1_stack_end__ = .;
+ __process0_stack_base__ = .;
+ . += __process0_stack_size__;
+ . = ALIGN(8);
+ __process0_stack_end__ = .;
+ } > ram
+
+ .main_stack :
+ {
+ . = ALIGN(8);
+ __main_stack_base__ = .;
+ . += __main_stack_size__;
+ . = ALIGN(8);
+ __main_stack_end__ = .;
+ } > ram
+
+ .data :
+ {
+ . = ALIGN(4);
+ PROVIDE(_data = .);
+ *(.data)
+ . = ALIGN(4);
+ *(.data.*)
+ . = ALIGN(4);
+ *(.ramtext)
+ . = ALIGN(4);
+ PROVIDE(_edata = .);
+ } > ram AT > flash
+
+ .bss :
+ {
+ . = ALIGN(4);
+ PROVIDE(_bss_start = .);
+ *(.bss)
+ . = ALIGN(4);
+ *(.bss.*)
+ . = ALIGN(4);
+ *(COMMON)
+ . = ALIGN(4);
+ PROVIDE(_bss_end = .);
+ } > ram
+
+ PROVIDE(end = .);
+ _end = .;
+}
+
+__heap_base__ = _end;
+__heap_end__ = __ram_end__;