Makefile 4.48 KB
Newer Older
Martin Horauer's avatar
Martin Horauer committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
################################################################################
# Makefile for XMC4500 RelaxKit using uCOS-III
# v1, 02/2018
# Martin Horauer, UAS Technikum Wien
#
# Supported: Windows, Linux, OSX
# Requirements:
# * GCC ARM https://launchpad.net/gcc-arm-embedded/+download
# * SEGGER JLINK https://www.segger.com/jlink-software.html
# * DOXYGEN http://www.stack.nl/~dimitri/doxygen/

################################################################################
# USAGE
# -----
# make           .... build the program image
# make debug     .... build the program image and invoke gdb
# make flash     .... build an flash the application
# make erase     .... erase the target device
# make doc       .... run doxygen - output will be in > doc
# make clean     .... remove intermediate and generated files

################################################################################
# define the name of the generated output file
#
TARGET        = main

################################################################################
# below only edit with care
#
VENDOR        = Infineon

################################################################################
# define the following symbol -D JLINK_RTT to enable JLINK_RTT tracing
#                             -D SEMI_HOSTING to enable semi hosted tracing
#                             comment the line to disable tracing
TRACE         = -D SEMI_HOSTING

################################################################################
# TOOLS & ARGS
#
SRC           = $(wildcard *.cpp)
TERMINAL      = gnome-terminal
TOOLCHAIN     = GCC_ARM
44
TOOLCHAINDBG  = GCC_ARM-DEBUG
Martin Horauer's avatar
Martin Horauer committed
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
BOARD         = XMC_4500_RELAX_KIT
BUILDDIR      = BUILD
DOCDIR        = DOC
MBED          = mbed
GDB           = arm-none-eabi-gdb

# DETERMINE OS
ifdef SystemRoot
  RM = del /Q
  FixPath = $(subst /,\,$1)
else
  RM = rm -rf
  FixPath = $1
endif

GDB_ARGS      = -ex "target remote :2331"
GDB_ARGS     += -ex "monitor reset"
GDB_ARGS     += -ex "load"
GDB_ARGS     += -ex "monitor reset"

################################################################################
# SEMI_HOSTED DEBUGGING
GDB_ARGS     += -ex "monitor SWO EnableTarget 16000000 0 1 0"

# RTT OPTION
#GDB_ARGS     += -ex "monitor exec SetRTTAddr 0x20000000"
#GDB_ARGS     += -ex "monitor exec SetRTTSearchRanges 0x20000000 0x1000"

################################################################################
# BUILD RULES
all: $(SRC) build

################################################################################
# CREATE A DEBUG VESRION
build: $(SRC)
	@echo "----------------------------------------------------------------------"
	@echo "Building with DEBUG Symbols"
	@echo ""
	$(MBED) compile -m $(BOARD) -t $(TOOLCHAIN) -N main --profile mbed-os/tools/profiles/debug.json
	@echo ""

################################################################################
# CREATE A RELEASE VESRION
release: $(SRC)
	@echo "----------------------------------------------------------------------"
	@echo "Build a RELEASE version"
	@echo ""
	$(MBED) compile -m $(BOARD) -t $(TOOLCHAIN) -N main
	@echo ""

################################################################################
# DEBUG RULES
97
debug: build $(BUILDDIR)/$(BOARD)/$(TOOLCHAINDBG)/$(TARGET).elf
Martin Horauer's avatar
Martin Horauer committed
98
99
100
101
102
103
ifdef SystemRoot
	@call start JLinkGDBServer -Device XMC4500-1024 -if SWD
else
	$(TERMINAL) -e "JLinkGDBServer -Device XMC4500-1024 -if SWD" &
	sleep 1 && $(TERMINAL) -e "telnet 127.0.0.1 2333" & 
endif
104
	$(GDB) -q  $(BUILDDIR)/$(BOARD)/$(TOOLCHAINDBG)/$(TARGET).elf $(GDB_ARGS)
Martin Horauer's avatar
Martin Horauer committed
105
106
107

################################################################################
# FLASH RULES
108
109
flash: build $(BUILDDIR)/$(BOARD)/$(TOOLCHAINDBG)/$(TARGET).hex
	echo -e 'speed 4000\nconnect\nh\nloadbin $(BUILDDIR)/$(BOARD)/$(TOOLCHAINDBG)/$(TARGET).hex,0xC000000\nr\ng\nq' | JLinkExe -Device XMC4500-1024 -if SWD
Martin Horauer's avatar
Martin Horauer committed
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130

################################################################################
# ERASE DEVICE
erase:
	echo -e 'speed 4000\nconnect\nerase\nr\nq' | JLinkExe -Device XMC4500-1024 -if SWD

################################################################################
# DOCUMENTATION RULES
doc: $(SRC)
	doxygen

################################################################################
# CLEAN RULES
clean:
	$(RM) $(call FixPath, *.pyc)
	$(RM) $(call FixPath, ${BUILDDIR}/*)
	$(RM) $(call FixPath, ${DOCDIR}/html/*)

################################################################################
# EOF
################################################################################