qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

RP2040.mk (4625B)


      1 #
      2 # Raspberry Pi RP2040 specific drivers
      3 ##############################################################################
      4 COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/vendor/$(MCU_FAMILY)/$(MCU_SERIES)
      5 
      6 ifeq ($(strip $(WS2812_DRIVER)), vendor)
      7     OPT_DEFS += -DRP_DMA_REQUIRED=TRUE
      8 endif
      9 
     10 #
     11 # Raspberry Pi Pico SDK Support
     12 ##############################################################################
     13 ADEFS  += -DCRT0_VTOR_INIT=1 \
     14 		  -DCRT0_EXTRA_CORES_NUMBER=0 \
     15           -DCRT0_INIT_VECTORS=1
     16 
     17 CFLAGS += -DPICO_NO_FPGA_CHECK \
     18           -DNDEBUG
     19 
     20 #
     21 # Pico SDK source and header files needed by QMK and ChibiOS
     22 ##############################################################################
     23 PICOSDKROOT   := $(TOP_DIR)/lib/pico-sdk
     24 
     25 PICOSDKSRC     = $(PICOSDKROOT)/src/rp2_common/hardware_clocks/clocks.c \
     26                  $(PICOSDKROOT)/src/rp2_common/hardware_pll/pll.c \
     27                  $(PICOSDKROOT)/src/rp2_common/hardware_pio/pio.c \
     28                  $(PICOSDKROOT)/src/rp2_common/hardware_timer/timer.c \
     29                  $(PICOSDKROOT)/src/rp2_common/hardware_flash/flash.c \
     30                  $(PICOSDKROOT)/src/rp2_common/hardware_gpio/gpio.c \
     31                  $(PICOSDKROOT)/src/rp2_common/hardware_claim/claim.c \
     32                  $(PICOSDKROOT)/src/rp2_common/hardware_watchdog/watchdog.c \
     33                  $(PICOSDKROOT)/src/rp2_common/hardware_xosc/xosc.c \
     34                  $(PICOSDKROOT)/src/rp2_common/pico_bootrom/bootrom.c
     35 
     36 PICOSDKINC     = $(CHIBIOS)//os/various/pico_bindings/dumb/include \
     37                  $(PICOSDKROOT)/src/common/pico_base/include \
     38                  $(PICOSDKROOT)/src/rp2_common/pico_platform/include \
     39                  $(PICOSDKROOT)/src/rp2_common/hardware_base/include \
     40                  $(PICOSDKROOT)/src/rp2_common/hardware_clocks/include \
     41                  $(PICOSDKROOT)/src/rp2_common/hardware_claim/include \
     42                  $(PICOSDKROOT)/src/rp2_common/hardware_flash/include \
     43                  $(PICOSDKROOT)/src/rp2_common/hardware_gpio/include \
     44                  $(PICOSDKROOT)/src/rp2_common/hardware_irq/include \
     45                  $(PICOSDKROOT)/src/rp2_common/hardware_pll/include \
     46                  $(PICOSDKROOT)/src/rp2_common/hardware_pio/include \
     47                  $(PICOSDKROOT)/src/rp2_common/hardware_sync/include \
     48                  $(PICOSDKROOT)/src/rp2_common/hardware_timer/include \
     49                  $(PICOSDKROOT)/src/rp2_common/hardware_resets/include \
     50                  $(PICOSDKROOT)/src/rp2_common/hardware_watchdog/include \
     51                  $(PICOSDKROOT)/src/rp2_common/hardware_xosc/include \
     52                  $(PICOSDKROOT)/src/rp2040/hardware_regs/include \
     53                  $(PICOSDKROOT)/src/rp2040/hardware_structs/include \
     54                  $(PICOSDKROOT)/src/boards/include \
     55                  $(PICOSDKROOT)/src/rp2_common/pico_bootrom/include
     56 
     57 PLATFORM_SRC += $(PICOSDKSRC)
     58 EXTRAINCDIRS += $(PICOSDKINC)
     59 
     60 PLATFORM_RP2040_PATH := $(PLATFORM_PATH)/$(PLATFORM_KEY)/vendors/$(MCU_FAMILY)
     61 
     62 PLATFORM_SRC +=	$(PLATFORM_RP2040_PATH)/stage2_bootloaders.c \
     63 				$(PLATFORM_RP2040_PATH)/pico_sdk_shims.c
     64 
     65 EXTRAINCDIRS += $(PLATFORM_RP2040_PATH)
     66 
     67 #
     68 # RP2040 optimized compiler intrinsics
     69 ##############################################################################
     70 
     71 # The RP2040 sdk provides optimized compiler intrinsics which override the GCC
     72 # built-ins. Some of these functions are located in the bootrom of the RP2040.
     73 # Execution of these functions is realized via a vtable that is populated on
     74 # bootup. This mechanism needs startup code and linker script support from
     75 # ChibiOS, which is currently not implemented thus these functions are disabled
     76 # ATM.
     77 PICOSDKINTRINSICSSRC =  $(PICOSDKROOT)/src/rp2_common/pico_divider/divider.S \
     78                         $(PICOSDKROOT)/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.S
     79 
     80 PICOSDKINTRINSICSINC =  $(PICOSDKROOT)/src/common/pico_base/include \
     81                         $(PICOSDKROOT)/src/rp2_common/pico_platform/include \
     82                         $(PICOSDKROOT)/src/rp2_common/hardware_divider/include
     83 
     84 # integer division intrinsics utilizing the RP2040 hardware divider
     85 OPT_DEFS += -DPICO_DIVIDER_IN_RAM=1
     86 OPT_DEFS += -DPICO_DIVIDER_DISABLE_INTERRUPTS=1
     87 
     88 CFLAGS += -Wl,--wrap=__aeabi_idiv
     89 CFLAGS += -Wl,--wrap=__aeabi_idivmod
     90 CFLAGS += -Wl,--wrap=__aeabi_ldivmod
     91 CFLAGS += -Wl,--wrap=__aeabi_uidiv
     92 CFLAGS += -Wl,--wrap=__aeabi_uidivmod
     93 CFLAGS += -Wl,--wrap=__aeabi_uldivmod
     94 
     95 # 64bit integer intrinsics
     96 OPT_DEFS += -DPICO_INT64_OPS_IN_RAM=1
     97 
     98 CFLAGS += -Wl,--wrap=__aeabi_lmul
     99 
    100 PLATFORM_SRC += $(PICOSDKINTRINSICSSRC)
    101 EXTRAINCDIRS += $(PICOSDKINTRINSICSINC)