blob: 60a74902d62bef460070cfa35db50e71d32c5394 (
plain)
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
44
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
CROSS = arm-none-eabi-
CC = $(CROSS)gcc
CXX = $(CROSS)g++
OBJCOPY = $(CROSS)objcopy
NRFUTIL = adafruit-nrfutil
COMFLAGS = -DARDUINO=100 -DFLOAT_ABI_HARD \
-DNRF52 -DNRF52832_XXAA -DS132 \
-Wno-register
MCUFLAGS = -mcpu=cortex-m4 -mthumb -mabi=aapcs \
-mfloat-abi=hard -mfpu=fpv4-sp-d16 \
-ffunction-sections -fdata-sections
CFLAGS = $(MCUFLAGS) --std=gnu99
CXXFLAGS = $(MCUFLAGS) --std=c++17 -fno-builtin -fno-exceptions \
-fno-strict-aliasing
SFLAGS = $(MCUFLAGS) -x assembler-with-cpp \
-DCONFIG_GPIO_AS_PINRESET \
-DBLE_STACK_SUPPORT_REQD \
-DBSP_DEFINES_ONLY \
-DSWI_DISABLE0 \
-DSOFTDEVICE_PRESENT
SSRC = $(ARDUINO)/cores/nRF5/linker/gcc_startup_nrf52.S
CSRC = $(wildcard $(ARDUINO)/cores/nRF5/freertos/Source/*.c) \
$(ARDUINO)/cores/nRF5/freertos/portable/CMSIS/nrf52/port_cmsis.c \
$(ARDUINO)/cores/nRF5/freertos/portable/CMSIS/nrf52/port_cmsis_systick.c \
$(ARDUINO)/cores/nRF5/freertos/portable/GCC/nrf52/port.c \
$(ARDUINO)/cores/nRF5/freertos/Source/portable/MemMang/heap_3.c \
$(ARDUINO)/cores/nRF5/flash/flash_nrf5x.c \
$(ARDUINO)/cores/nRF5/flash/flash_cache.c \
$(ARDUINO)/cores/nRF5/nordic/nrfx/mdk/system_nrf52.c \
$(ARDUINO)/cores/nRF5/wiring.c \
$(ARDUINO)/cores/nRF5/wiring_digital.c \
$(ARDUINO)/libraries/FileSystem/src/littlefs/lfs.c \
$(ARDUINO)/libraries/FileSystem/src/littlefs/lfs_util.c \
$(ARDUINO)/libraries/Bluefruit52Lib/src/utility/bootloader_util.c \
drivers_nrf/nrf_drv_common.c \
drivers_nrf/rtc/nrf_drv_rtc.c
CXXSRC = $(wildcard source/*.cpp) \
$(wildcard source/sharp/*.cpp) \
$(ARDUINO)/libraries/Bluefruit52Lib/src/BLEAdvertising.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/BLECentral.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/BLECharacteristic.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/BLEClientCharacteristic.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/BLEClientService.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/BLEDiscovery.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/BLEGap.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/BLEGatt.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/BLEService.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/BLEScanner.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/BLEUuid.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/bluefruit.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/services/BLEUart.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/services/BLEDfu.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/utility/bonding.cpp \
$(ARDUINO)/libraries/Bluefruit52Lib/src/utility/AdaMsg.cpp \
$(ARDUINO)/libraries/SoftwareSerial/SoftwareSerial.cpp \
$(ARDUINO)/libraries/FileSystem/src/InternalFS.cpp \
$(ARDUINO)/libraries/FileSystem/src/Bluefruit_FileIO.cpp \
$(ARDUINO)/variants/feather_nrf52832/variant.cpp \
$(ARDUINO)/cores/nRF5/utility/adafruit_fifo.cpp \
$(ARDUINO)/cores/nRF5/delay.cpp \
$(ARDUINO)/cores/nRF5/Print.cpp \
$(ARDUINO)/cores/nRF5/RingBuffer.cpp \
$(ARDUINO)/cores/nRF5/Uart.cpp \
$(ARDUINO)/cores/nRF5/rtos.cpp \
$(ARDUINO)/cores/nRF5/utility/AdaCallback.cpp \
$(ARDUINO)/cores/nRF5/main.cpp
OBJ = $(patsubst %.cpp, %.o, $(CXXSRC)) \
$(patsubst %.c, %.o, $(CSRC)) \
$(patsubst %.S, %.o, $(SSRC))
OUTELF = main.elf
OUTHEX = $(patsubst %.elf, %.hex, $(OUTELF))
OUTDFU = $(patsubst %.elf, %_dfu.zip, $(OUTELF))
ARDUINO = arduino
INCLUDES = -I$(ARDUINO)/libraries/Bluefruit52Lib/src \
-I$(ARDUINO)/libraries/SoftwareSerial \
-I$(ARDUINO)/libraries/FileSystem/src \
-I$(ARDUINO)/cores/nRF5 \
-I$(ARDUINO)/cores/nRF5/nordic \
-I$(ARDUINO)/cores/nRF5/nordic/nrfx \
-I$(ARDUINO)/cores/nRF5/nordic/nrfx/hal \
-I$(ARDUINO)/cores/nRF5/nordic/nrfx/mdk \
-I$(ARDUINO)/cores/nRF5/cmsis/include \
-I$(ARDUINO)/cores/nRF5/nordic/softdevice/s132_nrf52_6.1.1_API/include \
-I$(ARDUINO)/cores/nRF5/freertos/config \
-I$(ARDUINO)/cores/nRF5/freertos/Source/include \
-I$(ARDUINO)/cores/nRF5/freertos/portable/CMSIS/nrf52 \
-I$(ARDUINO)/cores/nRF5/freertos/portable/GCC/nrf52 \
-I$(ARDUINO)/variants/feather_nrf52832 \
-Isource/sharp \
-Idrivers_nrf
all: $(OUTELF) $(OUTHEX) $(OUTDFU)
$(OUTELF): $(OBJ)
@echo " LINK " $(OUTELF)
@$(CXX) $(MCUFLAGS) -Wl,--gc-sections --specs=nano.specs -lc -lnosys \
-L$(ARDUINO)/cores/nRF5/linker \
-T$(ARDUINO)/cores/nRF5/linker/nrf52832_s132_v6.ld \
$(OBJ) -o $(OUTELF)
$(OUTHEX): $(OUTELF)
@echo " " $(OUTHEX)
@$(OBJCOPY) $(OUTELF) -Oihex $(OUTHEX)
$(OUTDFU): $(OUTHEX)
@echo " " $(OUTDFU)
@$(NRFUTIL) dfu genpkg --dev-type 0x0052 --application $(OUTHEX) \
$(OUTDFU)
cleancpp:
@echo " CLEAN"
@rm -f $(OBJ) $(OUTELF) $(OUTHEX) $(OUTDFU)
clean:
@echo " CLEAN"
@rm -f $(OBJ) $(OUTELF) $(OUTHEX) $(OUTDFU)
upload: $(OUTDFU)
@echo "Uploading: " $(OUTDFU)
@$(NRFUTIL) dfu serial --package $(OUTDFU) -p /dev/ttyUSB0 -b 115200
%.o: %.cpp
@echo " CXX " $<
@$(CXX) $(COMFLAGS) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
%.o: %.c
@echo " CC " $<
@$(CC) $(COMFLAGS) $(CFLAGS) $(INCLUDES) -c $< -o $@
%.o: %.S
@echo " AS " $<
@$(CC) $(COMFLAGS) $(SFLAGS) -c $< -o $@
|