first attempt at porting libopencm3 to energymicro

unless sources are explicitly given, the linker scripts and make files
were copied over from the stm32/f1 port.
This commit is contained in:
chrysn
2012-02-25 18:57:11 +01:00
parent 2b3f07ee08
commit 2180a02e2f
14 changed files with 559 additions and 0 deletions

View File

@@ -0,0 +1,96 @@
##
## This file is part of the libopencm3 project.
##
## Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de>
## Copyright (C) 2010 Piotr Esden-Tempski <piotr@esden.net>
## Copyright (C) 2012 chrysn <chrysn@fsfe.org>
##
## 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 <http://www.gnu.org/licenses/>.
##
PREFIX ?= arm-none-eabi
#PREFIX ?= arm-elf
CC = $(PREFIX)-gcc
LD = $(PREFIX)-gcc
OBJCOPY = $(PREFIX)-objcopy
OBJDUMP = $(PREFIX)-objdump
GDB = $(PREFIX)-gdb
# Uncomment this line if you want to use the installed (not local) library.
#TOOLCHAIN_DIR := $(shell dirname `which $(CC)`)/../$(PREFIX)
TOOLCHAIN_DIR = ../../../../..
CFLAGS += -Os -g -Wall -Wextra -I$(TOOLCHAIN_DIR)/include \
-fno-common -mcpu=cortex-m3 -mthumb -msoft-float -MD -DSTM32F1
LDSCRIPT ?= ${TOOLCHAIN_DIR}/lib/efm32/tinygecko/$(MCU).ld
LDFLAGS += -lc -lnosys -L$(TOOLCHAIN_DIR)/lib/efm32/tinygecko \
-T$(LDSCRIPT) -nostartfiles -Wl,--gc-sections \
-mthumb -march=armv7 -mfix-cortex-m3-ldrd -msoft-float
OBJS += $(BINARY).o
# Be silent per default, but 'make V=1' will show all compiler calls.
ifneq ($(V),1)
Q := @
NULL := 2>/dev/null
else
LDFLAGS += -Wl,--print-gc-sections
endif
.SUFFIXES: .elf .bin .hex .srec .list .images
.SECONDEXPANSION:
.SECONDARY:
all: images
images: $(BINARY).images
flash: $(BINARY).flash
%.images: %.bin %.hex %.srec %.list
@#echo "*** $* images generated ***"
%.bin: %.elf
@#printf " OBJCOPY $(*).bin\n"
$(Q)$(OBJCOPY) -Obinary $(*).elf $(*).bin
%.hex: %.elf
@#printf " OBJCOPY $(*).hex\n"
$(Q)$(OBJCOPY) -Oihex $(*).elf $(*).hex
%.srec: %.elf
@#printf " OBJCOPY $(*).srec\n"
$(Q)$(OBJCOPY) -Osrec $(*).elf $(*).srec
%.list: %.elf
@#printf " OBJDUMP $(*).list\n"
$(Q)$(OBJDUMP) -S $(*).elf > $(*).list
%.elf: $(OBJS) $(LDSCRIPT) $(TOOLCHAIN_DIR)/lib/efm32/tinygecko/libopencm3_efm32tinygecko.a
@#printf " LD $(subst $(shell pwd)/,,$(@))\n"
$(Q)$(LD) -o $(*).elf $(OBJS) -lopencm3_efm32tinygecko $(LDFLAGS)
%.o: %.c Makefile
@#printf " CC $(subst $(shell pwd)/,,$(@))\n"
$(Q)$(CC) $(CFLAGS) -o $@ -c $<
clean:
$(Q)rm -f *.o
$(Q)rm -f *.d
$(Q)rm -f *.elf
$(Q)rm -f *.bin
$(Q)rm -f *.hex
$(Q)rm -f *.srec
$(Q)rm -f *.list
.PHONY: images clean
-include $(OBJS:.o=.d)

View File

@@ -0,0 +1,25 @@
##
## This file is part of the libopencm3 project.
##
## Copyright (C) 2012 chrysn <chrysn@fsfe.org>
##
## 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 <http://www.gnu.org/licenses/>.
##
MCU = EFM32TG840F32
# Linker scripts are always relative to the current directory. This file is
# intended for inclusion from example subdirectories, so the Makefile.include
# meant here would be called ../Makefile.include relative to here.
include ../../Makefile.include

View File

@@ -0,0 +1,9 @@
=========================
EFM32-TG-STK3300 Examples
=========================
Examples in this directory are designed to be run on the Energy Micro EFM32
Tiny Gecko Starter Kit, which is based on the EFM32TG840F32 MCU, has an onboard
USB debug and power management interface, and a bunch of peripherials built in
that demonstrate the chip's low power capabilities (LED, LCD display, light
sensor, touch slider, LC sensor, push buttons).

View File

@@ -0,0 +1,23 @@
##
## This file is part of the libopencm3 project.
##
## Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de>
## 2012 chrysn <chrysn@fsfe.org>
##
## 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 <http://www.gnu.org/licenses/>.
##
BINARY = miniblink
include ../Makefile.include

View File

@@ -0,0 +1,9 @@
==========================================
EFM32-TG-STK3300 Examples miniblink README
==========================================
This is the smallest-possible example program using libopencm3.
It's intended for the EFM32-TG-STK3300 eval board. It should blink
the user LED on the board.

View File

@@ -0,0 +1,72 @@
/*
* This file is part of the libopencm3 project.
*
* Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de>
* 2012 chrysn <chrysn@fsfe.org>
*
* 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 <http://www.gnu.org/licenses/>.
*/
//#include <libopencm3/efm32/tinygecko/gpio.h>
//
//void gpio_setup(void)
//{
// /* Enable GPIOC clock. */
// /* Manually: */
// // RCC_APB2ENR |= RCC_APB2ENR_IOPCEN;
// /* Using API functions: */
// rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPCEN);
//
// /* Set GPIO8 (in GPIO port C) to 'output push-pull'. */
// /* Manually: */
// // GPIOC_CRH = (GPIO_CNF_OUTPUT_PUSHPULL << (((8 - 8) * 4) + 2));
// // GPIOC_CRH |= (GPIO_MODE_OUTPUT_2_MHZ << ((8 - 8) * 4));
// /* Using API functions: */
// gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_2_MHZ,
// GPIO_CNF_OUTPUT_PUSHPULL, GPIO8);
//}
int main(void)
{
// int i;
//
// gpio_setup();
//
// /* Blink the LED (PC8) on the board. */
// while (1) {
// /* Manually: */
// // GPIOC_BSRR = GPIO8; /* LED off */
// // for (i = 0; i < 800000; i++) /* Wait a bit. */
// // __asm__("nop");
// // GPIOC_BRR = GPIO8; /* LED on */
// // for (i = 0; i < 800000; i++) /* Wait a bit. */
// // __asm__("nop");
//
// /* Using API functions gpio_set()/gpio_clear(): */
// // gpio_set(GPIOC, GPIO8); /* LED off */
// // for (i = 0; i < 800000; i++) /* Wait a bit. */
// // __asm__("nop");
// // gpio_clear(GPIOC, GPIO8); /* LED on */
// // for (i = 0; i < 800000; i++) /* Wait a bit. */
// // __asm__("nop");
//
// /* Using API function gpio_toggle(): */
// gpio_toggle(GPIOC, GPIO8); /* LED on/off */
// for (i = 0; i < 800000; i++) /* Wait a bit. */
// __asm__("nop");
// }
//
// return 0;
for(;;);
}