@@ -16,48 +16,17 @@ endif
16
16
# If the build directory is not given, make it reflect the board name.
17
17
BUILD ?= build-$(BOARD )
18
18
19
- ifeq ($(BOARD ) ,RA4M1_CLICKER)
20
- BOARD_LOW = ra4m1_ek
21
- CMSIS_MCU_LOW = ra4m1
22
- CMSIS_MCU_CAP = RA4M1
23
- USE_FSP_LPM = 0
24
- endif
25
-
26
- ifeq ($(BOARD ) ,RA4M1_EK)
27
- BOARD_LOW = ra4m1_ek
28
- CMSIS_MCU_LOW = ra4m1
29
- CMSIS_MCU_CAP = RA4M1
30
- USE_FSP_LPM = 0
31
- endif
32
-
33
- ifeq ($(BOARD ) ,RA4W1_EK)
34
- BOARD_LOW = ra4w1_ek
35
- CMSIS_MCU_LOW = ra4w1
36
- CMSIS_MCU_CAP = RA4W1
37
- USE_FSP_LPM = 1
38
- endif
39
-
40
- ifeq ($(BOARD ) ,RA6M1_EK)
41
- BOARD_LOW = ra6m1_ek
42
- CMSIS_MCU_LOW = ra6m1
43
- CMSIS_MCU_CAP = RA6M1
44
- USE_FSP_LPM = 1
45
- endif
46
-
47
- ifeq ($(BOARD ) ,RA6M2_EK)
48
- BOARD_LOW = ra6m2_ek
49
- CMSIS_MCU_LOW = ra6m2
50
- CMSIS_MCU_CAP = RA6M2
51
- USE_FSP_LPM = 1
52
- endif
53
-
54
19
# select use wrapper function of FSP library
55
20
USE_FSP_FLASH = 1
56
21
57
22
include ../../py/mkenv.mk
58
23
-include mpconfigport.mk
59
24
include $(BOARD_DIR ) /mpconfigboard.mk
60
25
26
+ USE_FSP_LPM ?= 1
27
+ FSP_BOARD_NAME ?= $(shell echo $(BOARD ) | tr '[:upper:]' '[:lower:]')
28
+ EXPECTED_FSP_HASH ?= $(patsubst +% ,% ,$(shell git -C ../.. submodule status --cached lib/fsp) )
29
+
61
30
# Files that are generated and needed before the QSTR build.
62
31
# QSTR_GENERATED_HEADERS = $(BUILD)/pins_qstr.h $(BUILD)/modstm_qstr.h
63
32
QSTR_GENERATED_HEADERS = $(BUILD ) /pins_qstr.h
@@ -99,7 +68,7 @@ INC += -I$(TOP)/$(HAL_DIR)/ra/fsp/inc/api
99
68
INC += -I$(TOP ) /$(HAL_DIR ) /ra/fsp/inc/instances
100
69
INC += -I$(TOP ) /$(HAL_DIR ) /ra/fsp/src/bsp/cmsis/Device/RENESAS/Include
101
70
# INC += -Ilwip_inc
102
- ifeq ($(CMSIS_MCU ) ,$(filter $(CMSIS_MCU ) ,RA4M1 RA4W1 RA6M1 RA6M2) )
71
+ ifeq ($(CMSIS_MCU ) ,$(filter $(CMSIS_MCU ) ,RA4M1 RA4W1 RA6M1 RA6M2 RA6M3 RA6M5 ) )
103
72
INC += -Ira
104
73
endif
105
74
INC += -I$(BOARD_DIR ) /ra_gen
@@ -109,6 +78,7 @@ INC += -Idebug
109
78
110
79
CFLAGS += -D$(CMSIS_MCU )
111
80
CFLAGS += -DRA_HAL_H='<$(CMSIS_MCU ) _hal.h>'
81
+ CFLAGS += -DRA_CFG_H='<$(FSP_BOARD_NAME ) _conf.h>'
112
82
113
83
# Basic Cortex-M flags
114
84
CFLAGS_CORTEX_M = -mthumb
@@ -121,12 +91,20 @@ CFLAGS_CORTEX_M += -mfpu=fpv4-sp-d16 -mfloat-abi=hard
121
91
SUPPORTS_HARDWARE_FP_SINGLE = 1
122
92
endif
123
93
94
+ ifeq ($(MCU_SERIES ) ,$(filter $(MCU_SERIES ) ,m33) )
95
+ CFLAGS_CORTEX_M += -mfpu=fpv5-sp-d16 -mfloat-abi=hard
96
+ SUPPORTS_HARDWARE_FP_SINGLE = 1
97
+ endif
98
+
124
99
# Options for particular MCU series
125
100
CFLAGS_MCU_RA4M1 = $(CFLAGS_CORTEX_M ) -mtune=cortex-m4 -mcpu=cortex-m4
126
101
CFLAGS_MCU_RA4W1 = $(CFLAGS_CORTEX_M ) -mtune=cortex-m4 -mcpu=cortex-m4
127
102
CFLAGS_MCU_RA6M1 = $(CFLAGS_CORTEX_M ) -mtune=cortex-m4 -mcpu=cortex-m4
128
103
CFLAGS_MCU_RA6M2 = $(CFLAGS_CORTEX_M ) -mtune=cortex-m4 -mcpu=cortex-m4
104
+ CFLAGS_MCU_RA6M3 = $(CFLAGS_CORTEX_M ) -mtune=cortex-m4 -mcpu=cortex-m4
105
+ CFLAGS_MCU_RA6M5 = $(CFLAGS_CORTEX_M ) -mtune=cortex-m33 -mcpu=cortex-m33
129
106
107
+ ASFLAGS += $(CFLAGS_CORTEX_M ) -mcpu=cortex-$(MCU_SERIES )
130
108
CFLAGS += $(INC ) -Wall -Wpointer-arith -Werror -Wdouble-promotion -Wfloat-conversion -std=gnu99 -nostdlib $(CFLAGS_EXTRA )
131
109
# CFLAGS += -D$(CMSIS_MCU)
132
110
CFLAGS += $(CFLAGS_MCU_$(CMSIS_MCU ) )
@@ -312,6 +290,7 @@ SRC_C += \
312
290
gccollect.c \
313
291
help.c \
314
292
machine_adc.c \
293
+ machine_dac.c \
315
294
machine_i2c.c \
316
295
machine_spi.c \
317
296
machine_uart.c \
@@ -343,10 +322,13 @@ SRC_O += \
343
322
SRC_O += \
344
323
shared/runtime/gchelper_thumb2.o
345
324
346
- HAL_SRC_C += $(addprefix $(HAL_DIR ) /ra/board/$(BOARD_LOW ) /,\
325
+ FSP_BOARD_DIR = $(HAL_DIR ) /ra/board/$(FSP_BOARD_NAME )
326
+ ifneq ($(wildcard $(TOP ) /$(FSP_BOARD_DIR ) /.) ,)
327
+ HAL_SRC_C += $(addprefix $(FSP_BOARD_DIR ) /,\
347
328
board_init.c \
348
329
board_leds.c \
349
330
)
331
+ endif
350
332
351
333
HAL_SRC_C += $(addprefix $(HAL_DIR ) /ra/fsp/src/bsp/mcu/all/,\
352
334
bsp_clocks.c \
@@ -378,16 +360,17 @@ HAL_SRC_C += $(HAL_DIR)/ra/fsp/src/r_flash_lp/r_flash_lp.c
378
360
endif
379
361
endif
380
362
381
- ifeq ($(CMSIS_MCU ) ,$(filter $(CMSIS_MCU ) ,RA6M1 RA6M2) )
363
+ ifeq ($(CMSIS_MCU ) ,$(filter $(CMSIS_MCU ) ,RA6M1 RA6M2 RA6M3 RA6M5 ) )
382
364
ifeq ($(USE_FSP_FLASH ) , 1)
383
365
CFLAGS += -DUSE_FSP_FLASH
384
366
HAL_SRC_C += $(HAL_DIR ) /ra/fsp/src/r_flash_hp/r_flash_hp.c
385
367
endif
386
368
endif
387
369
388
- ifeq ($(CMSIS_MCU ) ,$(filter $(CMSIS_MCU ) ,RA4M1 RA4W1 RA6M1 RA6M2) )
370
+ ifeq ($(CMSIS_MCU ) ,$(filter $(CMSIS_MCU ) ,RA4M1 RA4W1 RA6M1 RA6M2 RA6M3 RA6M5 ) )
389
371
HAL_SRC_C += $(addprefix ra/,\
390
372
ra_adc.c \
373
+ ra_dac.c \
391
374
ra_flash.c \
392
375
ra_gpio.c \
393
376
ra_i2c.c \
@@ -398,6 +381,7 @@ HAL_SRC_C += $(addprefix ra/,\
398
381
ra_sci.c \
399
382
ra_spi.c \
400
383
ra_timer.c \
384
+ ra_gpt.c \
401
385
ra_utils.c \
402
386
)
403
387
@@ -414,6 +398,12 @@ OBJ += $(addprefix $(BUILD)/, $(SRC_CXX:.cpp=.o))
414
398
OBJ += $(addprefix $(BUILD ) /, $(SRC_O ) )
415
399
OBJ += $(BUILD ) /pins_$(BOARD ) .o
416
400
401
+ ifeq ($(CMSIS_MCU ) ,RA6M5)
402
+ $(BUILD ) /shared/runtime/gchelper_thumb2.o : $(TOP ) /shared/runtime/gchelper_thumb2.s
403
+ $(ECHO ) " AS $<"
404
+ $(Q )$(AS ) $(ASFLAGS ) -o $@ $<
405
+ endif
406
+
417
407
# This file contains performance critical functions so turn up the optimisation
418
408
# level. It doesn't add much to the code size and improves performance a bit.
419
409
# Don't use -O3 with this file because gcc tries to optimise memset in terms of itself.
@@ -436,6 +426,20 @@ $(TOP)/lib/fsp/README.md:
436
426
$(ECHO ) " fsp submodule not found, fetching it now..."
437
427
(cd $( TOP) && git submodule update --init lib/fsp)
438
428
429
+ CURRENT_FSP_HASH = $(patsubst +% ,% ,$(shell git -C $(TOP ) submodule status lib/fsp) )
430
+ CHECK_FSP_VER :
431
+ ifneq ($(CURRENT_FSP_HASH ) ,$(EXPECTED_FSP_HASH ) )
432
+ ifeq ($(CMSIS_MCU ) ,RA6M5)
433
+ $(ECHO) "Upgrading FSP to version supporting $(CMSIS_MCU) ... $(lastword $(EXPECTED_FSP_HASH))"
434
+ @git -C $(TOP)/lib/fsp checkout $(firstword $(EXPECTED_FSP_HASH))
435
+ else
436
+ $(ECHO) "Reverting FSP to expected version ... $(lastword $(EXPECTED_FSP_HASH))"
437
+ @git -C $(TOP) submodule update --checkout lib/fsp
438
+ endif
439
+ else
440
+ $(ECHO) "Working with FSP $(lastword $(CURRENT_FSP_HASH))"
441
+ endif
442
+
439
443
ifneq ($(FROZEN_MANIFEST )$(FROZEN_DIR ) ,)
440
444
# To use frozen source modules, put your .py files in a subdirectory (eg scripts/)
441
445
# and then invoke make with FROZEN_DIR=scripts (be sure to build from scratch).
@@ -500,6 +504,12 @@ endif
500
504
ifeq ($(CMSIS_MCU ) ,$(filter $(CMSIS_MCU ) ,RA6M2) )
501
505
AF_FILE = boards/ra6m2_af.csv
502
506
endif
507
+ ifeq ($(CMSIS_MCU ) ,$(filter $(CMSIS_MCU ) ,RA6M3) )
508
+ AF_FILE = boards/ra6m3_af.csv
509
+ endif
510
+ ifeq ($(CMSIS_MCU ) ,$(filter $(CMSIS_MCU ) ,RA6M5) )
511
+ AF_FILE = boards/ra6m5_af.csv
512
+ endif
503
513
GEN_PINS_SRC = $(BUILD ) /pins_$(BOARD ) .c
504
514
GEN_PINS_HDR = $(HEADER_BUILD ) /pins.h
505
515
GEN_PINS_QSTR = $(BUILD ) /pins_qstr.h
@@ -518,7 +528,7 @@ SRC_QSTR += $(SRC_C) $(SRC_CXX) $(SHARED_SRC_C)
518
528
# any of the objects. The normal dependency generation will deal with the
519
529
# case when pins.h is modified. But when it doesn't exist, we don't know
520
530
# which source files might need it.
521
- $(OBJ ) : | $(GEN_PINS_HDR )
531
+ $(OBJ ) : | CHECK_FSP_VER $(GEN_PINS_HDR )
522
532
523
533
# With conditional pins, we may need to regenerate qstrdefs.h when config
524
534
# options change.
0 commit comments