2 # Copyright 2015, Olivier MATZ <zer0@droids-corp.org>
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are met:
7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above copyright
10 # notice, this list of conditions and the following disclaimer in the
11 # documentation and/or other materials provided with the distribution.
12 # * Neither the name of the University of California, Berkeley nor the
13 # names of its contributors may be used to endorse or promote products
14 # derived from this software without specific prior written permission.
16 # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
17 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 # DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
20 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 UCGINE ?= $(abspath ../..)
28 include $(UCGINE)/mk/ucgine-pre.mk
33 CROSS = arm-none-eabi-
41 AVRDUDE_PORT = /dev/ttyUSB0
42 AVRDUDE_PROG = arduino
44 CFLAGS += -I$(UCGINE)/arch/avr/include
45 CFLAGS += -I$(UCGINE)/arch/avr/uart/include
46 CFLAGS += -mmcu=$(MCU)
47 CFLAGS += -DF_CPU=$(F_CPU)
48 LDFLAGS += -mmcu=$(MCU)
50 exe-y-$(PROG) += $(UCGINE)/arch/avr/uart/ucg_avr_uart.c
53 ifeq ($(CROSS),arm-none-eabi-)
54 STLINK ?= /home/zer0/projects/stm32/stlink
55 STM_COMMON ?= /home/zer0/projects/stm32/stm32_discovery_arm_gcc/STM32F4-Discovery_FW_V1.1.0
56 CFLAGS += -DUSE_STDPERIPH_DRIVER -Tstm32_flash.ld
57 CFLAGS += -mlittle-endian -mthumb -mcpu=cortex-m4 -mthumb-interwork
58 CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
59 CFLAGS += -I$(STM_COMMON)/Utilities/STM32F4-Discovery
60 CFLAGS += -I$(STM_COMMON)/Libraries/CMSIS/Include
61 CFLAGS += -I$(STM_COMMON)/Libraries/CMSIS/ST/STM32F4xx/Include
62 CFLAGS += -I$(STM_COMMON)/Libraries/STM32F4xx_StdPeriph_Driver/inc
63 CFLAGS += -I$(UCGINE)/lib/gloss/include
64 CFLAGS += -I$(UCGINE)/arch/stm32/include
65 CFLAGS += -I$(UCGINE)/arch/stm32/uart/include
66 LDFLAGS = -Tstm32_flash.ld --specs=rdimon.specs -lc
67 LDFLAGS += -mlittle-endian -mthumb -mcpu=cortex-m4 -mthumb-interwork
68 LDFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
69 # stm32 standard periph lib
70 exe-y-$(PROG) += $(STM_COMMON)/Libraries/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_exti.c
71 exe-y-$(PROG) += $(STM_COMMON)/Libraries/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_gpio.c
72 exe-y-$(PROG) += $(STM_COMMON)/Libraries/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rcc.c
73 exe-y-$(PROG) += $(STM_COMMON)/Libraries/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_usart.c
74 exe-y-$(PROG) += $(STM_COMMON)/Libraries/STM32F4xx_StdPeriph_Driver/src/misc.c
76 exe-y-$(PROG) += $(STM_COMMON)/Libraries/CMSIS/ST/STM32F4xx/Source/Templates/TrueSTUDIO/startup_stm32f4xx.s
78 exe-y-$(PROG) += system_stm32f4xx.c
80 exe-y-$(PROG) += $(UCGINE)/lib/gloss/ucg_gloss_stubs.c
81 exe-y-$(PROG) += $(UCGINE)/lib/gloss/ucg_gloss_chardev.c
83 exe-y-$(PROG) += $(UCGINE)/arch/stm32/uart/ucg_stm32_uart.c
87 CFLAGS += -I$(UCGINE)/lib/cirbuf/include
88 exe-y-$(PROG) += $(UCGINE)/lib/cirbuf/ucg_cirbuf.c
90 CFLAGS += -I$(UCGINE)/lib/uart/include
91 exe-y-$(PROG) += $(UCGINE)/lib/uart/ucg_uart.c
93 exe-y-$(PROG) += uart.c main.c
95 objcopy-hex-y-$(PROG).hex := $(PROG)
96 objcopy-bin-y-$(PROG).bin := $(PROG)
98 include $(UCGINE)/mk/ucgine-post.mk
108 ifeq ($(CROSS),arm-none-eabi-)
109 $(STLINK)/st-flash write $(PROG).bin 0x8000000
112 avrdude -e -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROG) \
113 -b $(AVRDUDE_BAUD) -U flash:w:$(PROG):e