This is the first working example code which is tested on hardware. The LED on the Olimex STM-H103 eval board is happily blinking. We use a dummy "delay" function (basically a busy-waiting for-loop), which will only work if you use -O0 in CFLAGS (-O2, -O3, or -Os will not work as the compiler optimizes the loop away). We use some arbitrary value for stack size (2 KB) and use main() directly as the reset vector function. This will change later. Also, we do the GPIO and clock init as well as the GPIO toggling for the LED blinking fully "manually" for now, but there may be more higher-level functions for doing that at some later date.
59 lines
1.5 KiB
Plaintext
59 lines
1.5 KiB
Plaintext
/*
|
|
* This file is part of the libopenstm32 project.
|
|
*
|
|
* Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de>
|
|
*
|
|
* 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 2 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, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
/* Linker script for Olimex STM32-H103 (STM32F103RBT6, 128K flash, 20K RAM). */
|
|
|
|
/* Define memory regions. */
|
|
MEMORY
|
|
{
|
|
rom (rx) : ORIGIN = 0x00000000, LENGTH = 128K
|
|
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
|
|
}
|
|
|
|
/* Define sections. */
|
|
SECTIONS
|
|
{
|
|
. = ORIGIN(rom);
|
|
|
|
.text : {
|
|
*(.vectors) /* Vector table */
|
|
*(.text) /* Program code */
|
|
*(.rodata) /* Read-only data */
|
|
} >rom
|
|
|
|
. = ORIGIN(ram);
|
|
|
|
.data : {
|
|
*(.data) /* Read-write initialized data */
|
|
} >ram AT >rom
|
|
|
|
.bss : {
|
|
*(.bss) /* Read-write zero initialized data */
|
|
} >ram AT >rom
|
|
|
|
/* Discard useless sections. */
|
|
/DISCARD/ : {
|
|
*(.comment)
|
|
*(.comment.*)
|
|
*(.note)
|
|
*(.note.*)
|
|
}
|
|
}
|