From 44b4bf640f383f2d2f198df3a9cf3294e20a39ec Mon Sep 17 00:00:00 2001
From: NIIBE Yutaka <gniibe@fsij.org>
Date: Wed, 15 Jul 2015 12:01:53 +0900
Subject: Update example for LED blink

---
 example-led/Makefile     |  11 +++-
 example-led/board.h      |   1 +
 example-led/sample.ld    |  33 +++++------
 example-led/sample.ld.m3 | 142 +++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 165 insertions(+), 22 deletions(-)
 create mode 120000 example-led/board.h
 create mode 100644 example-led/sample.ld.m3

(limited to 'example-led')

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__;
-- 
cgit v1.2.3