1 ################################################################################
2 ## Makefile for compiling apps against the nRF51 SDK
3 ################################################################################
5 ################################################################################
8 ## In your application Makefile, set the following variables:
9 ## - APPLICATION_SRCS : List of all .c files to be compiled.
10 ## - LIBRARY_PATHS : List of directories with .h files
11 ## - SOURCE_PATHS : List of directories with .c files
12 ## - SOFTDEVICE_MODEL : s110 | s120 | s130 | s210 | s310 | or do not set for no softdevice
15 ## - SOFTDEVICE_VERSION : Full version number of the softdevice.
16 ## - SOFTDEVICE : Path to the softdevice to use
17 ## - START_CODE : .s file to execute first
18 ## - SYSTEM_FILE : Base nRF .c file.
19 ## - NRF_MODEL : nrf51 | nrf52 : Also set by the NRF_IC used
20 ## - NRF_IC : nrf51422 | nrf51802 | nrf51822 | nrf52832 | nrf52840
21 ## - BOARD : Hardware board being used. Will get set as #define.
22 ## - RAM_KB : Size of RAM on chip
23 ## - FLASH_KB : Size of flash on chip
24 ## - SDK_VERSION : Major version number of the SDK to use. Defaults to 10 for nrf51, 12 for nrf52
25 ## - GDB_PORT_NUMBER : Defaults to 2331
26 ## - USE_GZLL : link in the Gazell library and pairing source
27 ## - USE_GZP : include Gazell pairing source (implies USE_GZLL)
28 ## - USE_ESB : include the Enhanced ShockBurst source
31 ## Then at the end of the Makefile do something like:
32 ## NRF_BASE_PATH ?= ../../nrf5x-base
33 ## include $(NRF_BASE_PATH)/make/Makefile
35 # Helper for relative paths
36 BASE_DIR
:= $(dir $(lastword
$(MAKEFILE_LIST
)))..
38 # Setup the compilers to use
39 TOOLCHAIN_PREFIX ?
= arm-none-eabi
40 AS
= $(TOOLCHAIN_PATH
)$(TOOLCHAIN_PREFIX
)-as
41 CC
= $(TOOLCHAIN_PATH
)$(TOOLCHAIN_PREFIX
)-gcc
42 LD
= $(TOOLCHAIN_PATH
)$(TOOLCHAIN_PREFIX
)-gcc
43 OBJCOPY
= $(TOOLCHAIN_PATH
)$(TOOLCHAIN_PREFIX
)-objcopy
44 OBJDUMP
= $(TOOLCHAIN_PATH
)$(TOOLCHAIN_PREFIX
)-objdump
45 SIZE
= $(TOOLCHAIN_PATH
)$(TOOLCHAIN_PREFIX
)-size
46 GDB
= $(TOOLCHAIN_PATH
)$(TOOLCHAIN_PREFIX
)-gdb
51 # TODO: Guess NRF_MODEL from famous BOARD
54 # ---- Guess/Check NRF_MODEL from NRF_IC (if NRF_IC defined)
56 #if NRF_IC == nrf51422 or nrf51802 or nrf51822
57 ifneq (,$(filter $(NRF_IC
),nrf51422 nrf51802 nrf51822
))
59 ifneq ($(NRF_MODEL
), nrf51
)
60 $(error NRF_MODEL
$(NRF_MODEL
) is not valid for NRF_IC
$(NRF_IC
))
64 #else if NRF_IC == nrf52832 or nrf52840
65 else ifneq (,$(filter $(NRF_IC
),nrf52832 nrf52840
))
67 ifneq ($(NRF_MODEL
), nrf52
)
68 $(error NRF_MODEL
$(NRF_MODEL
) is not valid for NRF_IC
$(NRF_IC
))
75 # ---- NRF_MODEL Default to nrf51
78 # ---- Force NRF_MODEL for OLD SDK
79 ifneq (,$(filter $(SDK_VERSION
),9 10))
80 ifneq ($(NRF_MODEL
), nrf51
)
81 $(error NRF_MODEL
$(NRF_MODEL
) is not valid for SDK_VERSION
$(SDK_VERSION
))
86 # --- NRF_IC: Default to nrf51822 for nrf51
87 ifeq ($(NRF_MODEL
), nrf51
)
89 # --- NRF_IC: Default to nrf52832 for nrf52
90 else ifeq ($(NRF_MODEL
), nrf52
)
95 # ---- Set hardware memory sizes
96 ifneq (,$(filter $(NRF_IC
),nrf51422 nrf51802 nrf51822
))
97 RAM_KB ?
= 16# can be also 32
98 FLASH_KB ?
= 256# can be also 128
99 else ifeq ($(NRF_IC
), nrf52832
)
102 else ifeq ($(NRF_IC
), nrf52840
)
107 # ---- Set SDK if not SET
108 # Default to SDK 10 for nrf51
109 ifeq ($(NRF_MODEL
), nrf51
)
111 # Default to SDK 12 for nrf52
112 else ifeq ($(NRF_MODEL
), nrf52
)
117 # Set this for using GDB
118 GDB_PORT_NUMBER ?
= 2331
121 #------ Now select/check SOFTDEVICE version if used (depending SDK version)
122 ifdef SOFTDEVICE_MODEL
124 ifneq (,$(filter $(SDK_VERSION
),9 10))
125 WAITED_NRF_MODEL
= nrf51
126 ifeq ($(SOFTDEVICE_MODEL
), s110
)
128 SOFTDEVICE_VERSION ?
= 8.0.0
129 WAITED_SOFTDEVICE_VERSION
= 8.0.0
130 else ifeq ($(SOFTDEVICE_MODEL
), s120
)
132 SOFTDEVICE_VERSION ?
= 2.1.0
133 WAITED_SOFTDEVICE_VERSION
= 2.1.0
134 else ifeq ($(SOFTDEVICE_MODEL
), s130
)
136 SOFTDEVICE_VERSION ?
= 1.0.0
137 WAITED_SOFTDEVICE_VERSION
= 1.0.0
138 else ifeq ($(SOFTDEVICE_MODEL
), s210
)
139 # ANT only softDevice
140 SOFTDEVICE_VERSION ?
= 5.0.0
141 WAITED_SOFTDEVICE_VERSION
= 5.0.0
142 else ifeq ($(SOFTDEVICE_MODEL
), s310
)
144 SOFTDEVICE_VERSION ?
= 3.0.0
145 WAITED_SOFTDEVICE_VERSION
= 3.0.0
150 ifeq ($(SDK_VERSION
), 11)
151 ifeq ($(SOFTDEVICE_MODEL
), s130
)
153 SOFTDEVICE_VERSION ?
= 2.0.0
154 WAITED_SOFTDEVICE_VERSION
= 2.0.0
155 WAITED_NRF_MODEL
= nrf51
156 else ifeq ($(SOFTDEVICE_MODEL
), s132
)
158 SOFTDEVICE_VERSION ?
= 2.0.0
159 WAITED_SOFTDEVICE_VERSION
= 2.0.0
160 WAITED_NRF_MODEL
= nrf52
161 else ifeq ($(SOFTDEVICE_MODEL
), s212
)
162 # ANT only softDevice
163 SOFTDEVICE_VERSION ?
= 0.9.1
164 WAITED_SOFTDEVICE_VERSION
= 0.9.1
165 WAITED_NRF_MODEL
= nrf52
166 else ifeq ($(SOFTDEVICE_MODEL
), s332
)
168 SOFTDEVICE_VERSION ?
= 0.9.1
169 WAITED_SOFTDEVICE_VERSION
= 0.9.1
170 WAITED_NRF_MODEL
= nrf52
175 ifeq ($(SDK_VERSION
), 12)
176 ifeq ($(SOFTDEVICE_MODEL
), s130
)
178 SOFTDEVICE_VERSION ?
= 2.0.1
179 WAITED_SOFTDEVICE_VERSION
= 2.0.1
180 WAITED_NRF_MODEL
= nrf51
181 else ifeq ($(SOFTDEVICE_MODEL
), s132
)
183 SOFTDEVICE_VERSION ?
= 3.0.0
184 WAITED_SOFTDEVICE_VERSION
= 3.0.0
185 WAITED_NRF_MODEL
= nrf52
186 else ifeq ($(SOFTDEVICE_MODEL
), s212
)
187 # ANT only softDevice
188 SOFTDEVICE_VERSION ?
= 2.0.0
189 WAITED_SOFTDEVICE_VERSION
= 2.0.0
190 WAITED_NRF_MODEL
= nrf52
191 else ifeq ($(SOFTDEVICE_MODEL
), s332
)
193 SOFTDEVICE_VERSION ?
= 2.0.0
194 WAITED_SOFTDEVICE_VERSION
= 2.0.0
195 WAITED_NRF_MODEL
= nrf52
199 SOFTDEVICE_VERSION ?
= $(WAITED_SOFTDEVICE_VERSION
)
200 ifneq ($(SOFTDEVICE_VERSION
), $(WAITED_SOFTDEVICE_VERSION
))
201 $(error FOR SDK
$(SDK_VERSION
) Supported SoftDevice Version for
$(SOFTDEVICE_MODEL
) is
$(WAITED_SOFTDEVICE_VERSION
). You selected
$(SOFTDEVICE_VERSION
))
204 ifneq ($(WAITED_NRF_MODEL
), $(NRF_MODEL
))
205 $(error SoftDevice
$(SOFTDEVICE_MODEL
) is only compatible with
$(WAITED_NRF_MODEL
). You selected
$(SOFTDEVICE_MODEL
))
208 endif # ifdef SOFTDEVICE_MODEL
211 # Print some helpful info about what the user is compiling for
214 $(info BUILD OPTIONS
:)
215 $(info $(space
) SoftDevice
$(SOFTDEVICE_MODEL
))
216 $(info $(space
) SDK
$(SDK_VERSION
))
217 $(info $(space
) nRF
$(NRF_IC
))
218 $(info $(space
) RAM
$(RAM_KB
) kB
)
219 $(info $(space
) FLASH
$(FLASH_KB
) kB
)
220 $(info $(space
) Board
$(BOARD
))
223 # Need capital letters for the device in GCC
224 DEVICE ?
= $(shell echo
$(NRF_MODEL
) | tr a-z A-Z
)
226 # Required files to compile
227 START_CODE ?
= startup_
$(NRF_MODEL
).s
228 SYSTEM_FILE ?
= system_
$(NRF_MODEL
).c
230 BOOTLOADER_REGION_START
= $(addprefix 0x
, $(shell echo
"obase=16; (${FLASH_KB}-18)*1024" | bc
))
231 BOOTLOADER_SETTINGS_ADDRESS
= $(addprefix 0x
, $(shell echo
"obase=16; (${FLASH_KB}-2)*1024" | bc
))
233 # Need some common options for interacting with the chip over JTAG
234 ifeq ($(NRF_IC
), nrf52832
)
235 JLINK_OPTIONS
= -device nrf52
-if swd
-speed
1000
237 JLINK_OPTIONS
= -device
$(NRF_IC
) -if swd
-speed
1000
240 # If not set in app makefile, lets optimize for size
242 CFLAGS
+= -fomit-frame-pointer
244 # Add useful paths from nRF5x-base
245 LIBRARY_PATHS
+= $(BASE_DIR
)/advertisement
/
246 LIBRARY_PATHS
+= $(BASE_DIR
)/devices
/
247 LIBRARY_PATHS
+= $(BASE_DIR
)/devices
/tcmp441
/
248 LIBRARY_PATHS
+= $(BASE_DIR
)/devices
/tcmp441
/libqrencode
/
249 LIBRARY_PATHS
+= $(BASE_DIR
)/lib
/
250 LIBRARY_PATHS
+= $(BASE_DIR
)/lib
/simple_logger
/
251 LIBRARY_PATHS
+= $(BASE_DIR
)/lib
/simple_logger
/chanfs
252 LIBRARY_PATHS
+= $(BASE_DIR
)/lib
/simple_logger
/mem-ffs
253 LIBRARY_PATHS
+= $(BASE_DIR
)/peripherals
/
254 LIBRARY_PATHS
+= $(BASE_DIR
)/services
/
256 SOURCE_PATHS
+= $(BASE_DIR
)/advertisement
/
257 SOURCE_PATHS
+= $(BASE_DIR
)/devices
/
258 SOURCE_PATHS
+= $(BASE_DIR
)/devices
/tcmp441
/
259 SOURCE_PATHS
+= $(BASE_DIR
)/devices
/tcmp441
/libqrencode
/
260 SOURCE_PATHS
+= $(BASE_DIR
)/lib
/
261 SOURCE_PATHS
+= $(BASE_DIR
)/lib
/simple_logger
/
262 SOURCE_PATHS
+= $(BASE_DIR
)/lib
/simple_logger
/chanfs
263 SOURCE_PATHS
+= $(BASE_DIR
)/lib
/simple_logger
/mem-ffs
264 SOURCE_PATHS
+= $(BASE_DIR
)/peripherals
/
265 SOURCE_PATHS
+= $(BASE_DIR
)/services
/
266 SOURCE_PATHS
+= $(BASE_DIR
)/startup
/
268 # Add paths for each SDK version
269 ifeq ($(NRF_MODEL
), $(filter $(NRF_MODEL
),nrf51 nrf52
))
270 ifeq ($(SDK_VERSION
), 12)
273 SDK_PATH ?
= $(BASE_DIR
)/sdk
/nrf5_sdk_12.2
.0/
275 # Other knowns about the SDK paths
276 SDK_INCLUDE_PATH
= $(SDK_PATH
)components
/
277 SDK_SOURCE_PATH
= $(SDK_PATH
)components
/
278 CMSIS_INCLUDE_PATH
= $(SDK_PATH
)components
/toolchain
/gcc
/
280 # Need to add the paths for all the directories in the SDK.
281 # Note that we do not use * because some folders have conflicting files.
282 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)libraries
/*/)
283 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)libraries
/*/src
/)
284 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/adc
/)
285 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/ble_flash
/)
286 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/clock
/)
287 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/common
/)
288 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/delay
/)
289 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/gpiote
/)
290 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/hal
/)
291 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/lpcomp
/)
292 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/ppi
/)
293 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/pstorage
/)
294 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/pstorage
/config
/)
295 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/radio_config
/)
296 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/rng
/)
297 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/rtc
/)
298 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/sdio
/)
299 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/spi_master
/)
300 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/spi_slave
/)
301 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/swi
/)
302 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/timer
/)
303 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/twi_master
/)
304 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/uart
/)
305 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/wdt
/)
306 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/validation
/)
307 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_ext
/*/)
308 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)device
/)
309 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)toolchain
/gcc
/
310 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)toolchain
/
311 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)toolchain
/cmsis
/include/
313 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)
314 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)*/)
315 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)libraries
/*/)
316 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)libraries
/*/src
/)
317 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)drivers_nrf
/*/)
318 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)drivers_ext
/*/)
320 ifdef SERIALIZATION_MODE
321 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/*/)
322 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/common
/transport
/)
323 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/common
/)
324 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/hal
/)
325 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/transport
/)
326 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/common
/)
327 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/common
/transport
/ser_phy
/)
328 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/common
/transport
/ser_phy
/config
/)
330 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/*/)
331 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/common
/transport
/)
332 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/common
/)
333 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/hal
/)
334 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/transport
/)
335 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/common
/)
336 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/common
/transport
/ser_phy
/)
337 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/common
/transport
/ser_phy
/config
/)
339 # Add defines based on if we are "connectivity" or "application"
340 ifeq ($(SERIALIZATION_MODE
), connectivity
)
341 CFLAGS
+= -DSER_CONNECTIVITY
-DAPP_SCHEDULER_WITH_PAUSE
-DBLE_STACK_SUPPORT_REQD
-DHCI_TIMER2
-DSOFTDEVICE_PRESENT
343 ifeq ($(SERIALIZATION_MODE
), application
)
344 CFLAGS
+= -DSVCALL_AS_NORMAL_FUNCTION
-DBLE_STACK_SUPPORT_REQD
349 # How many central/peripherals are defined changes how much memory the
350 # softdevice requires. Change the amount of memory allotted in a custom ld
351 # file if your configuration is different than default.
354 # limit 16 kB RAM nRFs to only act as peripherals. Doing otherwise
355 # requires careful balancing of memory requirements and should be done
356 # manually, not automatically
357 CENTRAL_LINK_COUNT ?
= 0
358 PERIPHERAL_LINK_COUNT ?
= 1
360 CENTRAL_LINK_COUNT ?
= 1
361 PERIPHERAL_LINK_COUNT ?
= 1
364 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)ble
/*/)
365 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)ble
/ble_services
/*/)
366 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)ble
/*/)
367 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)ble
/ble_services
/*/)
368 CFLAGS
+= -DBLE_STACK_SUPPORT_REQD
-DSOFTDEVICE_PRESENT
-DCENTRAL_LINK_COUNT
=$(CENTRAL_LINK_COUNT
) -DPERIPHERAL_LINK_COUNT
=$(PERIPHERAL_LINK_COUNT
)
372 CFLAGS
+= -DANT_STACK_SUPPORT_REQD
377 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)proprietary_rf
/gzll
378 APPLICATION_SRCS
+= nrf_gzp.c
379 APPLICATION_SRCS
+= nrf_gzp_device.c
380 APPLICATION_SRCS
+= nrf_gzp_host.c
381 APPLICATION_SRCS
+= nrf_gzp_host_nrf5x.c
385 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)proprietary_rf
/gzll
386 LIBS
+= $(SDK_INCLUDE_PATH
)proprietary_rf
/gzll
/gcc
/gzll_nrf51_sd_resources_gcc.a
390 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)proprietary_rf
/esb
391 APPLICATION_SRCS
+= nrf_esb.c
394 ifdef ENABLE_WIRELESS_DFU
395 CFLAGS
+= -DENABLE_DFU
396 APPLICATION_SRCS
+= bootloader_util.c
399 ifdef SOFTDEVICE_MODEL
400 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)softdevice
/common
/softdevice_handler
/
401 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)softdevice
/$(SOFTDEVICE_MODEL
)/headers
/
402 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)softdevice
/$(SOFTDEVICE_MODEL
)/headers
/nrf51
404 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)softdevice
/common
/softdevice_handler
/
405 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)softdevice
/$(SOFTDEVICE_MODEL
)/headers
/
406 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)softdevice
/$(SOFTDEVICE_MODEL
)/headers
/nrf51
408 ifdef SERIALIZATION_MODE
409 # Load the sources from the serialization library
410 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/$(SOFTDEVICE_MODEL
)/middleware
/
411 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/$(SOFTDEVICE_MODEL
)/serializers
/
412 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)serialization
/common
/struct_ser
/$(SOFTDEVICE_MODEL
)/
414 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/$(SOFTDEVICE_MODEL
)/middleware
/
415 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/$(SOFTDEVICE_MODEL
)/serializers
/
416 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)serialization
/common
/struct_ser
/$(SOFTDEVICE_MODEL
)/
419 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/nrf_soc_nosd
/)
420 SOFTDEVICE_MODEL
= blank
425 ifeq ($(SDK_VERSION
), 11)
428 SDK_PATH ?
= $(BASE_DIR
)/sdk
/nrf51_sdk_11.0
.0/
430 # Other knowns about the SDK paths
431 SDK_INCLUDE_PATH
= $(SDK_PATH
)components
/
432 SDK_SOURCE_PATH
= $(SDK_PATH
)components
/
433 CMSIS_INCLUDE_PATH
= $(SDK_PATH
)components
/toolchain
/gcc
/
435 # Need to add the paths for all the directories in the SDK.
436 # Note that we do not use * because some folders have conflicting files.
437 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)libraries
/*/)
438 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/adc
/)
439 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/ble_flash
/)
440 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/clock
/)
441 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/common
/)
442 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/delay
/)
443 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/gpiote
/)
444 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/hal
/)
445 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/lpcomp
/)
446 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/ppi
/)
447 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/pstorage
/)
448 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/pstorage
/config
/)
449 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/radio_config
/)
450 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/rng
/)
451 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/rtc
/)
452 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/sdio
/)
453 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/spi_master
/)
454 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/spi_slave
/)
455 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/swi
/)
456 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/timer
/)
457 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/twi_master
/)
458 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/uart
/)
459 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/wdt
/)
460 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/validation
/)
461 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_ext
/*/)
462 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)device
/)
463 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)toolchain
/gcc
/
464 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)toolchain
/
465 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)toolchain
/CMSIS
/Include
/
467 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)
468 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)*/)
469 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)libraries
/*/)
470 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)drivers_nrf
/*/)
471 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)drivers_ext
/*/)
473 ifdef SERIALIZATION_MODE
474 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/*/)
475 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/common
/transport
/)
476 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/common
/)
477 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/hal
/)
478 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/transport
/)
479 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/common
/)
480 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/common
/transport
/ser_phy
/)
481 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/common
/transport
/ser_phy
/config
/)
483 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/*/)
484 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/common
/transport
/)
485 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/common
/)
486 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/hal
/)
487 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/transport
/)
488 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/common
/)
489 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/common
/transport
/ser_phy
/)
490 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/common
/transport
/ser_phy
/config
/)
492 # Add defines based on if we are "connectivity" or "application"
493 ifeq ($(SERIALIZATION_MODE
), connectivity
)
494 CFLAGS
+= -DSER_CONNECTIVITY
-DAPP_SCHEDULER_WITH_PAUSE
-DBLE_STACK_SUPPORT_REQD
-DHCI_TIMER2
-DSOFTDEVICE_PRESENT
496 ifeq ($(SERIALIZATION_MODE
), application
)
497 CFLAGS
+= -DSVCALL_AS_NORMAL_FUNCTION
-DBLE_STACK_SUPPORT_REQD
502 # How many central/peripherals are defined changes how much memory the
503 # softdevice requires. Change the amount of memory allotted in a custom ld
504 # file if your configuration is different than default.
507 # limit 16 kB RAM nRFs to only act as peripherals. Doing otherwise
508 # requires careful balancing of memory requirements and should be done
509 # manually, not automatically
510 CENTRAL_LINK_COUNT ?
= 0
511 PERIPHERAL_LINK_COUNT ?
= 1
513 CENTRAL_LINK_COUNT ?
= 1
514 PERIPHERAL_LINK_COUNT ?
= 1
517 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)ble
/*/)
518 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)ble
/ble_services
/*/)
519 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)ble
/*/)
520 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)ble
/ble_services
/*/)
521 CFLAGS
+= -DBLE_STACK_SUPPORT_REQD
-DSOFTDEVICE_PRESENT
-DCENTRAL_LINK_COUNT
=$(CENTRAL_LINK_COUNT
) -DPERIPHERAL_LINK_COUNT
=$(PERIPHERAL_LINK_COUNT
)
525 CFLAGS
+= -DANT_STACK_SUPPORT_REQD
528 ifdef ENABLE_WIRELESS_DFU
529 CFLAGS
+= -DENABLE_DFU
530 APPLICATION_SRCS
+= bootloader_util.c
533 ifdef SOFTDEVICE_MODEL
534 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)softdevice
/common
/softdevice_handler
/
535 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)softdevice
/$(SOFTDEVICE_MODEL
)/headers
/
536 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)softdevice
/$(SOFTDEVICE_MODEL
)/headers
/nrf51
538 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)softdevice
/common
/softdevice_handler
/
539 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)softdevice
/$(SOFTDEVICE_MODEL
)/headers
/
540 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)softdevice
/$(SOFTDEVICE_MODEL
)/headers
/nrf51
542 ifdef SERIALIZATION_MODE
543 # Load the sources from the serialization library
544 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/$(SOFTDEVICE_MODEL
)/middleware
/
545 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/$(SOFTDEVICE_MODEL
)/serializers
/
546 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)serialization
/common
/struct_ser
/$(SOFTDEVICE_MODEL
)/
548 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/$(SOFTDEVICE_MODEL
)/middleware
/
549 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/$(SOFTDEVICE_MODEL
)/serializers
/
550 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)serialization
/common
/struct_ser
/$(SOFTDEVICE_MODEL
)/
553 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/nrf_soc_nosd
/)
554 SOFTDEVICE_MODEL
= blank
559 ifeq ($(SDK_VERSION
), 10)
562 SDK_PATH ?
= $(BASE_DIR
)/sdk
/nrf51_sdk_10.0
.0/
564 # Other knowns about the SDK paths
565 SDK_INCLUDE_PATH
= $(SDK_PATH
)components
/
566 SDK_SOURCE_PATH
= $(SDK_PATH
)components
/
567 CMSIS_INCLUDE_PATH
= $(SDK_PATH
)components
/toolchain
/gcc
/
569 # Need to add the paths for all the directories in the SDK.
570 # Note that we do not use * because some folders have conflicting files.
571 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)libraries
/*/)
572 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/ble_flash
/)
573 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/clock
/)
574 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/common
/)
575 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/delay
/)
576 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/gpiote
/)
577 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/hal
/)
578 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/lpcomp
/)
579 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/ppi
/)
580 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/pstorage
/)
581 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/pstorage
/config
/)
582 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/radio_config
/)
583 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/rng
/)
584 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/rtc
/)
585 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/sdio
/)
586 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/spi_master
/)
587 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/spi_slave
/)
588 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/swi
/)
589 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/timer
/)
590 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/twi_master
/)
591 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/uart
/)
592 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/wdt
/)
593 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/validation
/)
594 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_ext
/*/)
595 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)device
/)
596 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)toolchain
/gcc
/
597 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)toolchain
/
599 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)
600 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)*/)
601 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)libraries
/*/)
602 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)drivers_nrf
/*/)
603 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)drivers_ext
/*/)
605 ifdef SERIALIZATION_MODE
606 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/*/)
607 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/common
/transport
/)
608 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/common
/)
609 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/hal
/)
610 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/transport
/)
611 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/common
/)
612 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/common
/transport
/ser_phy
/)
613 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/common
/transport
/ser_phy
/config
/)
615 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/*/)
616 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/common
/transport
/)
617 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/common
/)
618 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/hal
/)
619 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/transport
/)
620 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/common
/)
621 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/common
/transport
/ser_phy
/)
622 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/common
/transport
/ser_phy
/config
/)
624 # Add defines based on if we are "connectivity" or "application"
625 ifeq ($(SERIALIZATION_MODE
), connectivity
)
626 CFLAGS
+= -DSER_CONNECTIVITY
-DAPP_SCHEDULER_WITH_PAUSE
-DBLE_STACK_SUPPORT_REQD
-DHCI_TIMER2
-DSOFTDEVICE_PRESENT
628 ifeq ($(SERIALIZATION_MODE
), application
)
629 CFLAGS
+= -DSVCALL_AS_NORMAL_FUNCTION
-DBLE_STACK_SUPPORT_REQD
632 ifdef SOFTDEVICE_MODEL
633 CFLAGS
+= -DSOFTDEVICE_PRESENT
638 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)ble
/*/)
639 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)ble
/ble_services
/*/)
640 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)ble
/*/)
641 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)ble
/ble_services
/*/)
642 CFLAGS
+= -DBLE_STACK_SUPPORT_REQD
646 CFLAGS
+= -DANT_STACK_SUPPORT_REQD
649 ifdef ENABLE_WIRELESS_DFU
650 CFLAGS
+= -DENABLE_DFU
651 APPLICATION_SRCS
+= bootloader_util.c
654 ifdef SOFTDEVICE_MODEL
655 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)softdevice
/common
/softdevice_handler
/
656 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)softdevice
/$(SOFTDEVICE_MODEL
)/headers
/
658 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)softdevice
/common
/softdevice_handler
/
659 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)softdevice
/$(SOFTDEVICE_MODEL
)/headers
/
661 ifdef SERIALIZATION_MODE
662 # Load the sources from the serialization library
663 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/$(SOFTDEVICE_MODEL
)/middleware
/
664 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/$(SOFTDEVICE_MODEL
)/serializers
/
665 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)serialization
/common
/struct_ser
/$(SOFTDEVICE_MODEL
)/
667 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/$(SOFTDEVICE_MODEL
)/middleware
/
668 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)serialization
/$(SERIALIZATION_MODE
)/codecs
/$(SOFTDEVICE_MODEL
)/serializers
/
669 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)serialization
/common
/struct_ser
/$(SOFTDEVICE_MODEL
)/
672 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/nrf_soc_nosd
/)
673 SOFTDEVICE_MODEL
= blank
679 ifeq ($(SDK_VERSION
), 9)
682 SDK_PATH ?
= $(BASE_DIR
)/sdk
/nrf51_sdk_9.0
.0/
684 SOFTDEVICE ?
= $(SDK_PATH
)/components
/softdevice
/$(SOFTDEVICE_MODEL
)/hex
/$(SOFTDEVICE_MODEL
)_softdevice.hex
686 # Other knowns about the SDK paths
687 SDK_INCLUDE_PATH
= $(SDK_PATH
)components
/
688 SDK_SOURCE_PATH
= $(SDK_PATH
)components
/
689 CMSIS_INCLUDE_PATH
= $(SDK_PATH
)components
/toolchain
/gcc
/
691 # Need to add the paths for all the directories in the SDK.
692 # Note that we do not use * because some folders have conflicting files.
693 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)libraries
/*/)
694 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/ble_flash
/)
695 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/clock
/)
696 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/common
/)
697 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/gpiote
/)
698 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/hal
/)
699 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/lpcomp
/)
700 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/ppi
/)
701 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/pstorage
/)
702 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/radio_config
/)
703 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/rng
/)
704 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/rtc
/)
705 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/sdio
/)
706 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/spi_master
/)
707 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/spi_slave
/)
708 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/swi
/)
709 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/timer
/)
710 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/twi_master
/)
711 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/uart
/)
712 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/wdt
/)
713 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_ext
/*/)
714 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)device
/)
715 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)serialization
/*/)
716 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)toolchain
/gcc
/
717 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)toolchain
/
719 SOURCE_PATHS
+= $(SDK_SOURCE_PATH
)
720 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)*/)
721 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)libraries
/*/)
722 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)drivers_nrf
/*/)
723 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)drivers_ext
/*/)
724 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)serialization
/*/)
727 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)ble
/*/)
728 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)ble
/ble_services
/*/)
729 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)ble
/*/)
730 SOURCE_PATHS
+= $(wildcard $(SDK_SOURCE_PATH
)ble
/ble_services
/*/)
731 CFLAGS
+= -DBLE_STACK_SUPPORT_REQD
735 CFLAGS
+= -DANT_STACK_SUPPORT_REQD
738 ifdef ENABLE_WIRELESS_DFU
739 CFLAGS
+= -DENABLE_DFU
740 APPLICATION_SRCS
+= bootloader_util.c
743 ifdef SOFTDEVICE_MODEL
744 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)softdevice
/common
/softdevice_handler
/
745 LIBRARY_PATHS
+= $(SDK_INCLUDE_PATH
)softdevice
/$(SOFTDEVICE_MODEL
)/headers
/
746 SOURCE_PATHS
+= $(SDK_INCLUDE_PATH
)softdevice
/common
/softdevice_handler
/
747 SOURCE_PATHS
+= $(SDK_INCLUDE_PATH
)softdevice
/$(SOFTDEVICE_MODEL
)/headers
/
749 LIBRARY_PATHS
+= $(wildcard $(SDK_INCLUDE_PATH
)drivers_nrf
/nrf_soc_nosd
/)
750 SOFTDEVICE_MODEL
= blank
757 # Set the Softdevice path
758 SOFTDEVICE ?
= $(SDK_PATH
)/components
/softdevice
/$(SOFTDEVICE_MODEL
)/hex
/$(SOFTDEVICE_MODEL
)_
$(NRF_MODEL
)_
$(SOFTDEVICE_VERSION
)_softdevice.hex
760 ifeq ($(SOFTDEVICE_MODEL
), blank
)
761 SOFTDEVICE_VERSION
= 0
764 # Location for BLE Address if stored in Flash
765 ifeq ($(FLASH_KB
), 256)
767 CFLAGS
+= -DBLEADDR_FLASH_LOCATION
=0x0003FFF8
768 BLEADDR_FLASH_LOCATION ?
= 0x0003FFF8
770 # Assume 128 KB Flash
771 CFLAGS
+= -DBLEADDR_FLASH_LOCATION
=0x0001FFF8
772 BLEADDR_FLASH_LOCATION ?
= 0x0001FFF8
775 # Hardware and Firmware version numbers
779 ifneq ($(HW_REVISION
), none
)
780 CFLAGS
+= -DHW_REVISION
=\"$(HW_REVISION
)\"
783 ifneq ($(FW_REVISION
), none
)
784 CFLAGS
+= -DFW_REVISION
=\"$(FW_REVISION
)\"
787 ifeq ($(ENABLE_DIS
), true
)
788 APPLICATION_SRCS
+= ble_dis.c
789 APPLICATION_SRCS
+= device_info_service.c
793 NRF_IC_UPPER
= $(shell echo
$(NRF_IC
) | tr a-z A-Z
)
795 print-
% : ; @echo
$* = $($*)
797 LINKER_SCRIPT ?
= $(BASE_DIR
)/make
/ld/gcc_
$(NRF_MODEL
)_
$(SOFTDEVICE_MODEL
)_
$(SOFTDEVICE_VERSION
)_
$(RAM_KB
)_
$(FLASH_KB
).
ld
798 OUTPUT_NAME ?
= $(addsuffix _
$(SOFTDEVICE_MODEL
), $(PROJECT_NAME
))
799 DFU_OUTPUT_NAME ?
= $(addsuffix _
$(FLASH_KB
), $(addsuffix _
$(RAM_KB
), $(addsuffix _
$(SOFTDEVICE_MODEL
), dfu
)))
801 LIBRARY_INCLUDES
= $(addprefix -I
,$(LIBRARY_PATHS
))
802 CMSIS_INCLUDE
= $(addprefix -I
,$(CMSIS_INCLUDE_PATH
))
804 VPATH
= $(SOURCE_PATHS
)
806 OUTPUT_PATH ?
= _build
/
808 ifneq (,$(filter $(NRF_IC
),nrf52832 nrf52833 nrf52840
))
809 #CPUFLAGS = -mthumb -mabi=aapcs -mcpu=cortex-m4 -march=armv7e-m -mfloat-abi=soft -mfpu=fpv4-sp-d16
810 CPUFLAGS
= -mthumb
-mcpu
=cortex-m4
-march
=armv7e-m
812 CPUFLAGS
= -mthumb
-mcpu
=cortex-m0
-march
=armv6s-m
815 CFLAGS
+= -std
=gnu99
-c
$(CPUFLAGS
) -Wall
-Wextra
-Wno-unused-parameter
-Werror
=return-type
-D
$(DEVICE
) -D
$(BOARD
) -D
$(NRF_IC_UPPER
) -DSDK_VERSION_
$(SDK_VERSION
) -DSOFTDEVICE_
$(SOFTDEVICE_MODEL
)
816 CFLAGS
+= -s
-ffunction-sections
-fdata-sections
817 CFLAGS
+= -D
$(shell echo
$(SOFTDEVICE_MODEL
) | tr a-z A-Z
)
818 CFLAGS
+= $(CMSIS_INCLUDE
) $(LIBRARY_INCLUDES
) -MD
819 LDFLAGS
+= $(CPUFLAGS
) -L
$(BASE_DIR
)/make
/ld -T
$(LINKER_SCRIPT
) -Wl
,--gc-sections
-Wl
,-Map
=$(OUTPUT_PATH
)$(OUTPUT_NAME
).Map
820 OBJDUMP_FLAGS
+= --disassemble-all
--source
--disassembler-options
=force-thumb
-C
--section-headers
823 DFUHEX
= $(BASE_DIR
)/dfu
/_build
/$(DFU_OUTPUT_NAME
).hex
824 DFUELF
= $(BASE_DIR
)/dfu
/_build
/$(DFU_OUTPUT_NAME
).elf
825 DFUBIN
= $(BASE_DIR
)/dfu
/_build
/$(DFU_OUTPUT_NAME
).bin
827 HEX
= $(OUTPUT_PATH
)$(OUTPUT_NAME
).hex
828 ELF
= $(OUTPUT_PATH
)$(OUTPUT_NAME
).elf
829 BIN
= $(OUTPUT_PATH
)$(OUTPUT_NAME
).bin
830 LST
= $(OUTPUT_PATH
)$(OUTPUT_NAME
).lst
832 SRCS
= $(SYSTEM_FILE
) $(notdir $(APPLICATION_SRCS
))
833 OBJS
= $(addprefix $(OUTPUT_PATH
), $(SRCS
:.c
=.o
)) $(addprefix $(OUTPUT_PATH
),$(APPLICATION_LIBS
))
834 DEPS
= $(addprefix $(OUTPUT_PATH
), $(SRCS
:.c
=.d
))
835 SRCS_AS
= $(START_CODE
)
836 OBJS_AS
= $(addprefix $(OUTPUT_PATH
), $(SRCS_AS
:.s
=.os
))
838 ### Verbosity control. Use make V=1 to get verbose builds.
850 PRINT_CC
= @echo
" CC " $<
851 PRINT_LD
= @echo
" LD " $(ELF
)
852 PRINT_AR
= @echo
" AR " $@
853 PRINT_AS
= @echo
" AS " $<
854 PRINT_HEX
= @echo
" HEX " $(HEX
)
855 PRINT_BIN
= @echo
" BIN " $(BIN
)
856 PRINT_LST
= @echo
" LST " $(LST
)
857 PRINT_SIZ
= @echo
" SIZE " $(ELF
)
861 ifdef ENABLE_WIRELESS_DFU
862 all: $(OBJS
) $(OBJS_AS
) $(HEX
) bootloader
864 all: $(OBJS
) $(OBJS_AS
) $(HEX
)
868 ifdef ENABLE_WIRELESS_DFU
869 debug
: $(OBJS
) $(OBJS_AS
) $(HEX
) bootloader
871 debug
: $(OBJS
) $(OBJS_AS
) $(HEX
)
876 # if using mingw/msys, this test will fail and you will correctly get the posix Makefile
877 ifeq ($(OS
)$(MSYSTEM
),Windows_NT
)
878 include $(BASE_DIR
)/make
/Makefile.windows
880 include $(BASE_DIR
)/make
/Makefile.posix
883 $(HEX
): $(OBJS
) $(OBJS_AS
)
885 $(Q
)$(LD
) $(LDFLAGS
) $(OBJS_AS
) $(OBJS
) $(LIBS
) -o
$(ELF
)
887 $(Q
)$(OBJCOPY
) -Oihex
$(ELF
) $(HEX
)
889 $(Q
)$(OBJCOPY
) -Obinary
$(ELF
) $(BIN
)
891 $(Q
)$(OBJDUMP
) $(OBJDUMP_FLAGS
) $(ELF
) > $(LST
)
898 $(OUTPUT_PATH
)%.o
: %.c
899 @
$(MAKE_BUILD_FOLDER
)
901 $(Q
)$(CC
) $(LDFLAGS
) $(CFLAGS
) $< -o
$@
903 $(OUTPUT_PATH
)%.os
: %.s
904 @
$(MAKE_BUILD_FOLDER
)
910 .PHONY
: all clean rebuild size