chibios.mk 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. # Hey Emacs, this is a -*- makefile -*-
  2. ##############################################################################
  3. # Architecture or project specific options
  4. #
  5. # Stack size to be allocated to the Cortex-M process stack. This stack is
  6. # the stack used by the main() thread.
  7. ifeq ($(USE_PROCESS_STACKSIZE),)
  8. USE_PROCESS_STACKSIZE = 0x200
  9. endif
  10. # Stack size to the allocated to the Cortex-M main/exceptions stack. This
  11. # stack is used for processing interrupts and exceptions.
  12. ifeq ($(USE_EXCEPTIONS_STACKSIZE),)
  13. USE_EXCEPTIONS_STACKSIZE = 0x400
  14. endif
  15. #
  16. # Architecture or project specific options
  17. ##############################################################################
  18. ##############################################################################
  19. # Project, sources and paths
  20. #
  21. # Imported source files and paths
  22. CHIBIOS = $(TOP_DIR)/lib/chibios
  23. CHIBIOS_CONTRIB = $(TOP_DIR)/lib/chibios-contrib
  24. # Startup files. Try a few different locations, for compability with old versions and
  25. # for things hardware in the contrib repository
  26. STARTUP_MK = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk
  27. ifeq ("$(wildcard $(STARTUP_MK))","")
  28. STARTUP_MK = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk
  29. ifeq ("$(wildcard $(STARTUP_MK))","")
  30. STARTUP_MK = $(CHIBIOS_CONTRIB)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk
  31. endif
  32. endif
  33. include $(STARTUP_MK)
  34. # HAL-OSAL files (optional).
  35. include $(CHIBIOS)/os/hal/hal.mk
  36. PLATFORM_MK = $(CHIBIOS)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/platform.mk
  37. ifeq ("$(wildcard $(PLATFORM_MK))","")
  38. PLATFORM_MK = $(CHIBIOS_CONTRIB)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/platform.mk
  39. endif
  40. include $(PLATFORM_MK)
  41. BOARD_MK = $(KEYBOARD_PATH)/boards/$(BOARD)/board.mk
  42. ifeq ("$(wildcard $(BOARD_MK))","")
  43. BOARD_MK = $(CHIBIOS)/os/hal/boards/$(BOARD)/board.mk
  44. ifeq ("$(wildcard $(BOARD_MK))","")
  45. BOARD_MK = $(CHIBIOS_CONTRIB)/os/hal/boards/$(BOARD)/board.mk
  46. endif
  47. endif
  48. include $(BOARD_MK)
  49. include $(CHIBIOS)/os/hal/osal/rt/osal.mk
  50. # RTOS files (optional).
  51. include $(CHIBIOS)/os/rt/rt.mk
  52. # Compability with old version
  53. PORT_V = $(CHIBIOS)/os/rt/ports/ARMCMx/compilers/GCC/mk/port_v$(ARMV)m.mk
  54. ifeq ("$(wildcard $(PORT_V))","")
  55. PORT_V = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/port_v$(ARMV)m.mk
  56. endif
  57. include $(PORT_V)
  58. # Other files (optional).
  59. include $(CHIBIOS)/os/hal/lib/streams/streams.mk
  60. RULESPATH = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC
  61. ifeq ("$(wildcard $(RULESPATH)/rules.mk)","")
  62. RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC
  63. endif
  64. # Define linker script file here
  65. ifneq ("$(wildcard $(KEYBOARD_PATH)/ld/$(MCU_LDSCRIPT).ld)","")
  66. LDSCRIPT = $(KEYBOARD_PATH)/ld/$(MCU_LDSCRIPT).ld
  67. else
  68. LDSCRIPT = $(STARTUPLD)/$(MCU_LDSCRIPT).ld
  69. endif
  70. CHIBISRC = $(STARTUPSRC) \
  71. $(KERNSRC) \
  72. $(PORTSRC) \
  73. $(OSALSRC) \
  74. $(HALSRC) \
  75. $(PLATFORMSRC) \
  76. $(BOARDSRC) \
  77. $(STREAMSSRC) \
  78. $(STARTUPASM) \
  79. $(PORTASM) \
  80. $(OSALASM)
  81. SRC += $(patsubst $(TOP_DIR)/%,%,$(CHIBISRC))
  82. EXTRAINCDIRS += $(CHIBIOS)/os/license \
  83. $(STARTUPINC) $(KERNINC) $(PORTINC) $(OSALINC) \
  84. $(HALINC) $(PLATFORMINC) $(BOARDINC) $(TESTINC) \
  85. $(STREAMSINC) $(CHIBIOS)/os/various
  86. #
  87. # Project, sources and paths
  88. ##############################################################################
  89. ##############################################################################
  90. # Compiler settings
  91. #
  92. CC = arm-none-eabi-gcc
  93. OBJCOPY = arm-none-eabi-objcopy
  94. OBJDUMP = arm-none-eabi-objdump
  95. SIZE = arm-none-eabi-size
  96. AR = arm-none-eabi-ar
  97. NM = arm-none-eabi-nm
  98. HEX = $(OBJCOPY) -O $(FORMAT)
  99. EEP =
  100. BIN = $(OBJCOPY) -O binary
  101. THUMBFLAGS = -DTHUMB_PRESENT -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB
  102. COMPILEFLAGS += -fomit-frame-pointer
  103. COMPILEFLAGS += -falign-functions=16
  104. COMPILEFLAGS += -ffunction-sections
  105. COMPILEFLAGS += -fdata-sections
  106. COMPILEFLAGS += -fno-common
  107. COMPILEFLAGS += $(THUMBFLAGS)
  108. CFLAGS += $(COMPILEFLAGS)
  109. ASFLAGS += $(THUMBFLAGS)
  110. CPPFLAGS += $(COMPILEFLAGS)
  111. CPPFLAGS += -fno-rtti
  112. LDFLAGS +=-Wl,--gc-sections
  113. LDFLAGS += -mno-thumb-interwork -mthumb
  114. LDSYMBOLS =,--defsym=__process_stack_size__=$(USE_PROCESS_STACKSIZE)
  115. LDSYMBOLS :=$(LDSYMBOLS),--defsym=__main_stack_size__=$(USE_EXCEPTIONS_STACKSIZE)
  116. LDFLAGS += -Wl,--script=$(LDSCRIPT)$(LDSYMBOLS)
  117. OPT_DEFS += -DPROTOCOL_CHIBIOS
  118. MCUFLAGS = -mcpu=$(MCU)
  119. DEBUG = gdb
  120. # Define ASM defines here
  121. # bootloader definitions may be used in the startup .s file
  122. ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","")
  123. OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h
  124. else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
  125. OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h
  126. endif
  127. # List any extra directories to look for libraries here.
  128. EXTRALIBDIRS = $(RULESPATH)/ld
  129. dfu-util: $(BUILD_DIR)/$(TARGET).bin sizeafter
  130. dfu-util -D $(BUILD_DIR)/$(TARGET).bin