diff options
author | NIIBE Yutaka <gniibe@fsij.org> | 2015-07-15 12:01:53 +0900 |
---|---|---|
committer | NIIBE Yutaka <gniibe@fsij.org> | 2015-07-15 12:01:53 +0900 |
commit | 44b4bf640f383f2d2f198df3a9cf3294e20a39ec (patch) | |
tree | f4056eb0bca82d0215771f9c4557be3283f9b389 | |
parent | 989863916548c54bccfd7ceeb932b655b52eba7b (diff) |
Update example for LED blink
-rw-r--r-- | example-led/Makefile | 11 | ||||
l--------- | example-led/board.h | 1 | ||||
-rw-r--r-- | example-led/sample.ld | 33 | ||||
-rw-r--r-- | example-led/sample.ld.m3 | 142 |
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__; |