From 4935a0ddd802158faffcc3694096e5cefb46143d Mon Sep 17 00:00:00 2001 From: Piotr Esden-Tempski Date: Fri, 22 Jan 2010 15:53:47 +0100 Subject: [PATCH] Moved vector_table to the library. --- examples/MB525/fancyblink/fancyblink.c | 5 ---- examples/STM32-H103/fancyblink/fancyblink.c | 5 ---- examples/STM32-H103/miniblink/miniblink.c | 5 ---- examples/STM32-H103/usart/usart.c | 5 ---- lib/Makefile | 2 +- lib/libopenstm32.ld | 3 +++ lib/vector.c | 28 +++++++++++++++++++++ 7 files changed, 32 insertions(+), 21 deletions(-) create mode 100644 lib/vector.c diff --git a/examples/MB525/fancyblink/fancyblink.c b/examples/MB525/fancyblink/fancyblink.c index 5912bb24..9c5e5812 100644 --- a/examples/MB525/fancyblink/fancyblink.c +++ b/examples/MB525/fancyblink/fancyblink.c @@ -84,8 +84,3 @@ int main(void) return 0; } - -u32 *vector_table[2] __attribute__ ((section(".vectors"))) = { - (u32 *) 0x20000800, /* Use 2 KB stack (0x800 bytes). */ - (u32 *) main, /* Use main() as reset vector for now. */ -}; diff --git a/examples/STM32-H103/fancyblink/fancyblink.c b/examples/STM32-H103/fancyblink/fancyblink.c index 910255bb..aad18798 100644 --- a/examples/STM32-H103/fancyblink/fancyblink.c +++ b/examples/STM32-H103/fancyblink/fancyblink.c @@ -66,8 +66,3 @@ int main(void) return 0; } - -u32 *vector_table[2] __attribute__ ((section(".vectors"))) = { - (u32 *)0x20000800, /* Use 2 KB stack (0x800 bytes). */ - (u32 *)main, /* Use main() as reset vector for now. */ -}; diff --git a/examples/STM32-H103/miniblink/miniblink.c b/examples/STM32-H103/miniblink/miniblink.c index 7584acbf..a8d253c1 100644 --- a/examples/STM32-H103/miniblink/miniblink.c +++ b/examples/STM32-H103/miniblink/miniblink.c @@ -63,8 +63,3 @@ int main(void) return 0; } - -u32 *vector_table[2] __attribute__ ((section(".vectors"))) = { - (u32 *)0x20000800, /* Use 2 KB stack (0x800 bytes). */ - (u32 *)main, /* Use main() as reset vector for now. */ -}; diff --git a/examples/STM32-H103/usart/usart.c b/examples/STM32-H103/usart/usart.c index 922ec899..52a158dc 100644 --- a/examples/STM32-H103/usart/usart.c +++ b/examples/STM32-H103/usart/usart.c @@ -94,8 +94,3 @@ int main(void) return 0; } - -u32 *vector_table[2] __attribute__ ((section(".vectors"))) = { - (u32 *)0x20000800, /* Use 2 KB stack (0x800 bytes). */ - (u32 *)main, /* Use main() as reset vector for now. */ -}; diff --git a/lib/Makefile b/lib/Makefile index 383fa931..909fcac6 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -27,7 +27,7 @@ CFLAGS = -Os -g -Wall -Wextra -I../include -fno-common \ -mcpu=cortex-m3 -mthumb -Wstrict-prototypes # ARFLAGS = rcsv ARFLAGS = rcs -OBJS = rcc.o gpio.o usart.o adc.o spi.o flash.o nvic.o rtc.o +OBJS = vector.o rcc.o gpio.o usart.o adc.o spi.o flash.o nvic.o rtc.o # Be silent per default, but 'make V=1' will show all compiler calls. ifneq ($(V),1) diff --git a/lib/libopenstm32.ld b/lib/libopenstm32.ld index 96687a53..910b350a 100644 --- a/lib/libopenstm32.ld +++ b/lib/libopenstm32.ld @@ -21,6 +21,9 @@ /* Memory regions must be defined in the ld script which includes this one. */ +/* Enforce emmition of the vector table */ +EXTERN (vector_table) + /* Define sections. */ SECTIONS { diff --git a/lib/vector.c b/lib/vector.c new file mode 100644 index 00000000..bff7893e --- /dev/null +++ b/lib/vector.c @@ -0,0 +1,28 @@ +/* + * This file is part of the libopenstm32 project. + * + * Copyright (C) 2010 Piotr Esden-Tempski + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include + +void main(void); + +void (*const vector_table[]) (void) + __attribute__ ((section(".vectors"))) = { + (void *)0x20000800, /* Use 2KB stack (0x800 bytes). */ + main, /* Use main() as reset vector for now. */ +};