logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

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