mcu_selection.mk 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  1. MCU_ORIG := $(MCU)
  2. ifneq ($(findstring MKL26Z64, $(MCU)),)
  3. # Cortex version
  4. MCU = cortex-m0plus
  5. # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
  6. ARMV = 6
  7. ## chip/board settings
  8. # - the next two should match the directories in
  9. # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
  10. MCU_FAMILY = KINETIS
  11. MCU_SERIES = KL2x
  12. # Linker script to use
  13. # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
  14. # or <keyboard_dir>/ld/
  15. MCU_LDSCRIPT ?= MKL26Z64
  16. # Startup code to use
  17. # - it should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/
  18. MCU_STARTUP ?= kl2x
  19. # Board: it should exist either in <chibios>/os/hal/boards/,
  20. # <keyboard_dir>/boards/, or drivers/boards/
  21. BOARD ?= PJRC_TEENSY_LC
  22. endif
  23. ifneq ($(findstring MK20DX128, $(MCU)),)
  24. # Cortex version
  25. MCU = cortex-m4
  26. # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
  27. ARMV = 7
  28. ## chip/board settings
  29. # - the next two should match the directories in
  30. # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
  31. MCU_FAMILY = KINETIS
  32. MCU_SERIES = K20x
  33. # Linker script to use
  34. # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
  35. # or <keyboard_dir>/ld/
  36. MCU_LDSCRIPT ?= MK20DX128
  37. # Startup code to use
  38. # - it should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/
  39. MCU_STARTUP ?= k20x5
  40. # Board: it should exist either in <chibios>/os/hal/boards/,
  41. # <keyboard_dir>/boards/, or drivers/boards/
  42. BOARD ?= PJRC_TEENSY_3
  43. endif
  44. ifneq ($(findstring MK20DX256, $(MCU)),)
  45. # Cortex version
  46. MCU = cortex-m4
  47. # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
  48. ARMV = 7
  49. ## chip/board settings
  50. # - the next two should match the directories in
  51. # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
  52. MCU_FAMILY = KINETIS
  53. MCU_SERIES = K20x
  54. # Linker script to use
  55. # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
  56. # or <keyboard_dir>/ld/
  57. MCU_LDSCRIPT ?= MK20DX256
  58. # Startup code to use
  59. # - it should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/
  60. MCU_STARTUP ?= k20x7
  61. # Board: it should exist either in <chibios>/os/hal/boards/,
  62. # <keyboard_dir>/boards/, or drivers/boards/
  63. BOARD ?= PJRC_TEENSY_3_1
  64. endif
  65. ifneq ($(findstring STM32F042, $(MCU)),)
  66. # Cortex version
  67. MCU = cortex-m0
  68. # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
  69. ARMV = 6
  70. ## chip/board settings
  71. # - the next two should match the directories in
  72. # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
  73. MCU_FAMILY = STM32
  74. MCU_SERIES = STM32F0xx
  75. # Linker script to use
  76. # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
  77. # or <keyboard_dir>/ld/
  78. MCU_LDSCRIPT ?= STM32F042x6
  79. # Startup code to use
  80. # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
  81. MCU_STARTUP ?= stm32f0xx
  82. # Board: it should exist either in <chibios>/os/hal/boards/,
  83. # <keyboard_dir>/boards/, or drivers/boards/
  84. BOARD ?= GENERIC_STM32_F042X6
  85. USE_FPU ?= no
  86. # Options to pass to dfu-util when flashing
  87. DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave
  88. DFU_SUFFIX_ARGS ?= -v 0483 -p DF11
  89. endif
  90. ifneq ($(findstring STM32F072, $(MCU)),)
  91. # Cortex version
  92. MCU = cortex-m0
  93. # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
  94. ARMV = 6
  95. ## chip/board settings
  96. # - the next two should match the directories in
  97. # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
  98. MCU_FAMILY = STM32
  99. MCU_SERIES = STM32F0xx
  100. # Linker script to use
  101. # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
  102. # or <keyboard_dir>/ld/
  103. MCU_LDSCRIPT ?= STM32F072xB
  104. # Startup code to use
  105. # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
  106. MCU_STARTUP ?= stm32f0xx
  107. # Board: it should exist either in <chibios>/os/hal/boards/,
  108. # <keyboard_dir>/boards/, or drivers/boards/
  109. BOARD ?= GENERIC_STM32_F072XB
  110. USE_FPU ?= no
  111. # Options to pass to dfu-util when flashing
  112. DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave
  113. DFU_SUFFIX_ARGS ?= -v 0483 -p DF11
  114. endif
  115. ifneq ($(findstring STM32F103, $(MCU)),)
  116. # Cortex version
  117. MCU = cortex-m3
  118. # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
  119. ARMV = 7
  120. ## chip/board settings
  121. # - the next two should match the directories in
  122. # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
  123. MCU_FAMILY = STM32
  124. MCU_SERIES = STM32F1xx
  125. # Linker script to use
  126. # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
  127. # or <keyboard_dir>/ld/
  128. MCU_LDSCRIPT ?= STM32F103x8
  129. # Startup code to use
  130. # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
  131. MCU_STARTUP ?= stm32f1xx
  132. # Board: it should exist either in <chibios>/os/hal/boards/,
  133. # <keyboard_dir>/boards/, or drivers/boards/
  134. BOARD ?= GENERIC_STM32_F103
  135. USE_FPU ?= no
  136. # Options to pass to dfu-util when flashing
  137. DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave
  138. DFU_SUFFIX_ARGS ?= -v 0483 -p DF11
  139. endif
  140. ifneq ($(findstring STM32F303, $(MCU)),)
  141. # Cortex version
  142. MCU = cortex-m4
  143. # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
  144. ARMV = 7
  145. ## chip/board settings
  146. # - the next two should match the directories in
  147. # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
  148. MCU_FAMILY = STM32
  149. MCU_SERIES = STM32F3xx
  150. # Linker script to use
  151. # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
  152. # or <keyboard_dir>/ld/
  153. MCU_LDSCRIPT ?= STM32F303xC
  154. # Startup code to use
  155. # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
  156. MCU_STARTUP ?= stm32f3xx
  157. # Board: it should exist either in <chibios>/os/hal/boards/,
  158. # <keyboard_dir>/boards/, or drivers/boards/
  159. BOARD ?= GENERIC_STM32_F303XC
  160. USE_FPU ?= yes
  161. # Options to pass to dfu-util when flashing
  162. DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave
  163. DFU_SUFFIX_ARGS ?= -v 0483 -p DF11
  164. endif
  165. ifneq ($(findstring STM32F401, $(MCU)),)
  166. # Cortex version
  167. MCU = cortex-m4
  168. # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
  169. ARMV = 7
  170. ## chip/board settings
  171. # - the next two should match the directories in
  172. # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
  173. MCU_FAMILY = STM32
  174. MCU_SERIES = STM32F4xx
  175. # Linker script to use
  176. # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
  177. # or <keyboard_dir>/ld/
  178. MCU_LDSCRIPT ?= STM32F401xC
  179. # Startup code to use
  180. # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
  181. MCU_STARTUP ?= stm32f4xx
  182. # Board: it should exist either in <chibios>/os/hal/boards/,
  183. # <keyboard_dir>/boards/, or drivers/boards/
  184. BOARD ?= BLACKPILL_STM32_F401
  185. USE_FPU ?= yes
  186. # Options to pass to dfu-util when flashing
  187. DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave
  188. DFU_SUFFIX_ARGS ?= -v 0483 -p DF11
  189. endif
  190. ifneq ($(findstring STM32F411, $(MCU)),)
  191. # Cortex version
  192. MCU = cortex-m4
  193. # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
  194. ARMV = 7
  195. ## chip/board settings
  196. # - the next two should match the directories in
  197. # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
  198. MCU_FAMILY = STM32
  199. MCU_SERIES = STM32F4xx
  200. # Linker script to use
  201. # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
  202. # or <keyboard_dir>/ld/
  203. MCU_LDSCRIPT ?= STM32F411xE
  204. # Startup code to use
  205. # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
  206. MCU_STARTUP ?= stm32f4xx
  207. # Board: it should exist either in <chibios>/os/hal/boards/,
  208. # <keyboard_dir>/boards/, or drivers/boards/
  209. BOARD ?= BLACKPILL_STM32_F411
  210. USE_FPU ?= yes
  211. # Options to pass to dfu-util when flashing
  212. DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave
  213. DFU_SUFFIX_ARGS ?= -v 0483 -p DF11
  214. endif
  215. ifneq (,$(filter $(MCU),atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647 at90usb1286 at90usb1287))
  216. PROTOCOL = LUFA
  217. # Processor frequency.
  218. # This will define a symbol, F_CPU, in all source code files equal to the
  219. # processor frequency in Hz. You can then use this symbol in your source code to
  220. # calculate timings. Do NOT tack on a 'UL' at the end, this will be done
  221. # automatically to create a 32-bit value in your source code.
  222. #
  223. # This will be an integer division of F_USB below, as it is sourced by
  224. # F_USB after it has run through any CPU prescalers. Note that this value
  225. # does not *change* the processor frequency - it should merely be updated to
  226. # reflect the processor speed set externally so that the code can use accurate
  227. # software delays.
  228. F_CPU ?= 16000000
  229. # LUFA specific
  230. #
  231. # Target architecture (see library "Board Types" documentation).
  232. ARCH = AVR8
  233. # Input clock frequency.
  234. # This will define a symbol, F_USB, in all source code files equal to the
  235. # input clock frequency (before any prescaling is performed) in Hz. This value may
  236. # differ from F_CPU if prescaling is used on the latter, and is required as the
  237. # raw input clock is fed directly to the PLL sections of the AVR for high speed
  238. # clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
  239. # at the end, this will be done automatically to create a 32-bit value in your
  240. # source code.
  241. #
  242. # If no clock division is performed on the input clock inside the AVR (via the
  243. # CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
  244. F_USB ?= $(F_CPU)
  245. # Interrupt driven control endpoint task
  246. ifeq (,$(filter $(NO_INTERRUPT_CONTROL_ENDPOINT),yes))
  247. OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
  248. endif
  249. ifneq (,$(filter $(MCU),atmega16u2 atmega32u2))
  250. NO_I2C = yes
  251. endif
  252. endif
  253. ifneq (,$(filter $(MCU),atmega32a))
  254. # MCU name for avrdude
  255. AVRDUDE_MCU = m32
  256. PROTOCOL = VUSB
  257. # Processor frequency.
  258. # This will define a symbol, F_CPU, in all source code files equal to the
  259. # processor frequency in Hz. You can then use this symbol in your source code to
  260. # calculate timings. Do NOT tack on a 'UL' at the end, this will be done
  261. # automatically to create a 32-bit value in your source code.
  262. F_CPU ?= 12000000
  263. # unsupported features for now
  264. NO_SUSPEND_POWER_DOWN ?= yes
  265. endif
  266. ifneq (,$(filter $(MCU),atmega328p))
  267. # MCU name for avrdude
  268. AVRDUDE_MCU = m328p
  269. PROTOCOL = VUSB
  270. # Processor frequency.
  271. # This will define a symbol, F_CPU, in all source code files equal to the
  272. # processor frequency in Hz. You can then use this symbol in your source code to
  273. # calculate timings. Do NOT tack on a 'UL' at the end, this will be done
  274. # automatically to create a 32-bit value in your source code.
  275. F_CPU ?= 16000000
  276. # unsupported features for now
  277. NO_SUSPEND_POWER_DOWN ?= yes
  278. endif
  279. ifneq (,$(filter $(MCU),atmega328))
  280. # MCU name for avrdude
  281. AVRDUDE_MCU = m328
  282. PROTOCOL = VUSB
  283. # Processor frequency.
  284. # This will define a symbol, F_CPU, in all source code files equal to the
  285. # processor frequency in Hz. You can then use this symbol in your source code to
  286. # calculate timings. Do NOT tack on a 'UL' at the end, this will be done
  287. # automatically to create a 32-bit value in your source code.
  288. F_CPU ?= 16000000
  289. # unsupported features for now
  290. NO_UART ?= yes
  291. NO_SUSPEND_POWER_DOWN ?= yes
  292. endif
  293. ifneq (,$(filter $(MCU),attiny85))
  294. PROTOCOL = VUSB
  295. # Processor frequency.
  296. # This will define a symbol, F_CPU, in all source code files equal to the
  297. # processor frequency in Hz. You can then use this symbol in your source code to
  298. # calculate timings. Do NOT tack on a 'UL' at the end, this will be done
  299. # automatically to create a 32-bit value in your source code.
  300. F_CPU ?= 16500000
  301. # unsupported features for now
  302. NO_SUSPEND_POWER_DOWN ?= yes
  303. endif