mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
442 lines
12 KiB
Makefile
442 lines
12 KiB
Makefile
# The next block takes care of setting the rigth lengths of RAM and ROM
|
|
# for the stm32 family. Most of the CPUs should have been taken into
|
|
# account here, so no need to assign the lengths per model.
|
|
ifeq ($(STM32_TYPE), F)
|
|
ifeq ($(STM32_FAMILY), 0)
|
|
ifeq ($(STM32_MODEL2), 3)
|
|
ifeq ($(STM32_MODEL3), 0)
|
|
ifneq (, $(filter $(STM32_ROMSIZE), 4 6))
|
|
RAM_LEN = 4K
|
|
else ifeq ($(STM32_ROMSIZE), 8)
|
|
RAM_LEN = 8K
|
|
else ifeq ($(STM32_ROMSIZE), C)
|
|
RAM_LEN = 32K
|
|
endif
|
|
else ifneq (, $(filter $(STM32_MODEL3), 1 8))
|
|
RAM_LEN = 4K
|
|
endif
|
|
else ifeq ($(STM32_MODEL2), 4)
|
|
RAM_LEN = 6K
|
|
else ifeq ($(STM32_MODEL2), 5)
|
|
RAM_LEN = 8K
|
|
else ifeq ($(STM32_MODEL2), 7)
|
|
ifeq ($(STM32_MODEL3), 0)
|
|
ifeq ($(STM32_ROMSIZE), 6)
|
|
RAM_LEN = 6K
|
|
else ifeq ($(STM32_ROMSIZE), B)
|
|
RAM_LEN = 16K
|
|
endif
|
|
else ifneq (, $(filter $(STM32_MODEL3), 1 2 8))
|
|
RAM_LEN = 16K
|
|
endif
|
|
else ifeq ($(STM32_MODEL2), 9)
|
|
RAM_LEN = 32K
|
|
endif
|
|
else ifeq ($(STM32_FAMILY), 1)
|
|
ifeq ($(STM32_MODEL2), 0)
|
|
ifeq ($(STM32_MODEL3), 0)
|
|
ifneq (, $(filter $(STM32_ROMSIZE), 4 6))
|
|
RAM_LEN = 4K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE), 8 B))
|
|
RAM_LEN = 8K
|
|
else ifeq ($(STM32_ROMSIZE), C)
|
|
RAM_LEN = 24K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE), E D))
|
|
RAM_LEN = 32K
|
|
endif
|
|
else ifneq (, $(filter $(STM32_MODEL3), 1 2))
|
|
ifeq ($(STM32_ROMSIZE), 4)
|
|
RAM_LEN = 4K
|
|
else ifeq ($(STM32_ROMSIZE), 6)
|
|
RAM_LEN = 6K
|
|
else ifeq ($(STM32_ROMSIZE), 8)
|
|
RAM_LEN = 10K
|
|
else ifeq ($(STM32_ROMSIZE), B)
|
|
RAM_LEN = 16K
|
|
else ifeq ($(STM32_ROMSIZE), C)
|
|
RAM_LEN = 32K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE), D E))
|
|
RAM_LEN = 48K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE), F G))
|
|
RAM_LEN = 80K
|
|
endif
|
|
else ifeq ($(STM32_MODEL3), 3)
|
|
ifeq ($(STM32_ROMSIZE), 4)
|
|
RAM_LEN = 6K
|
|
else ifeq ($(STM32_ROMSIZE), 6)
|
|
RAM_LEN = 10K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE), 8 B))
|
|
RAM_LEN = 20K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE), C))
|
|
RAM_LEN = 48K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE), D E))
|
|
RAM_LEN = 64K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE), F G))
|
|
RAM_LEN = 96K
|
|
endif
|
|
else ifneq (, $(filter $(STM32_MODEL), 105 107))
|
|
RAM_LEN = 64K
|
|
endif
|
|
endif
|
|
else ifeq ($(STM32_FAMILY), 2)
|
|
ifeq ($(STM32_MODEL3), 5)
|
|
ifeq ($(STM32_ROMSIZE), B)
|
|
RAM_LEN = 64K
|
|
else ifeq ($(STM32_ROMSIZE), C)
|
|
RAM_LEN = 96K
|
|
else ifeq (, $(filter $(STM32_ROMSIZE), E F G))
|
|
RAM_LEN = 128K
|
|
endif
|
|
else ifeq ($(STM32_MODEL3), 7)
|
|
RAM_LEN = 128K
|
|
endif
|
|
ifneq (, $(filter $(STM32_MODEL), 205 207 215 217))
|
|
BACKUP_RAM_ADDR = 0x40024000
|
|
BACKUP_RAM_LEN = 0x4K
|
|
endif
|
|
else ifeq ($(STM32_FAMILY), 3)
|
|
ifeq ($(STM32_MODEL), 301)
|
|
RAM_LEN = 16K
|
|
else ifeq ($(STM32_MODEL), 302)
|
|
ifeq ($(STM32_ROMSIZE), 6)
|
|
RAM_LEN = 32K
|
|
else ifeq ($(STM32_ROMSIZE), 8)
|
|
RAM_LEN = 64K
|
|
else ifeq ($(STM32_ROMSIZE), B)
|
|
RAM_LEN = 128K
|
|
else ifeq ($(STM32_ROMSIZE), C)
|
|
RAM_LEN = 256K
|
|
else ifeq ($(STM32_ROMSIZE), D)
|
|
RAM_LEN = 384K
|
|
else ifeq ($(STM32_ROMSIZE), E)
|
|
RAM_LEN = 512K
|
|
endif
|
|
else ifeq ($(STM32_MODEL), 303)
|
|
ifneq (, $(filter $(STM32_ROMSIZE), 6 8))
|
|
RAM_LEN = 12K
|
|
CCMRAM_LEN = 4K
|
|
else ifeq ($(STM32_ROMSIZE), B)
|
|
RAM_LEN = 40K
|
|
CCMRAM_LEN = 8K
|
|
else ifeq ($(STM32_ROMSIZE), C)
|
|
RAM_LEN = 40K
|
|
CCMRAM_LEN = 8K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE), D E))
|
|
RAM_LEN = 64K
|
|
CCMRAM_LEN = 16K
|
|
endif
|
|
else ifeq ($(STM32_MODEL3), 4)
|
|
RAM_LEN = 12K
|
|
CCMRAM_LEN = 4K
|
|
else ifeq ($(STM32_MODEL), 373)
|
|
RAM_LEN = 32K
|
|
else ifeq ($(STM32_MODEL3), 8)
|
|
ifneq (, $(filter $(STM32_MODEL2), 1 2))
|
|
RAM_LEN = 16K
|
|
ifeq ($(STM32_MODEL2), 1)
|
|
CCMRAM_LEN = 4K
|
|
endif
|
|
else ifeq ($(STM32_MODEL2), 5)
|
|
RAM_LEN = 48K
|
|
CCMRAM_LEN = 8K
|
|
else ifeq ($(STM32_MODEL2), 7)
|
|
RAM_LEN = 32K
|
|
else ifeq ($(STM32_MODEL2), 9)
|
|
RAM_LEN = 80K
|
|
CCMRAM_LEN = 16K
|
|
endif
|
|
endif
|
|
else ifeq ($(STM32_FAMILY), 4)
|
|
ifeq ($(STM32_MODEL), 401)
|
|
ifneq (, $(filter $(STM32_ROMSIZE), B C))
|
|
RAM_LEN = 64K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE), D E))
|
|
RAM_LEN = 96K
|
|
endif
|
|
else ifneq (, $(filter $(STM32_MODEL), 405 407))
|
|
RAM_LEN = 192K
|
|
else ifeq ($(STM32_MODEL), 410)
|
|
RAM_LEN = 32K
|
|
else ifneq (, $(filter $(STM32_MODEL), 411 446))
|
|
RAM_LEN = 128K
|
|
else ifneq (, $(filter $(STM32_MODEL), 412))
|
|
RAM_LEN = 256K
|
|
else ifneq (, $(filter $(STM32_MODEL), 413 423))
|
|
RAM_LEN = 320K
|
|
else ifneq (, $(filter $(STM32_MODEL), 415 417))
|
|
RAM_LEN = 192K
|
|
else ifneq (, $(filter $(STM32_MODEL), 427 429 437 439))
|
|
RAM_LEN = 192K
|
|
else ifneq (, $(filter $(STM32_MODEL), 469 479))
|
|
RAM_LEN = 384K
|
|
endif
|
|
ifneq (, $(filter $(STM32_MODEL3), 5 7 9))
|
|
CCMRAM_LEN = 64K
|
|
endif
|
|
ifneq (, $(filter $(STM32_MODEL), 405 407 415 417 427 429 437 439 446 469 479))
|
|
BACKUP_RAM_ADDR = 0x40024000
|
|
BACKUP_RAM_LEN = 0x4K
|
|
endif
|
|
else ifeq ($(STM32_FAMILY),7)
|
|
ifneq (, $(filter $(STM32_MODEL2), 2 3))
|
|
RAM_LEN = 256K
|
|
else ifneq (, $(filter $(STM32_MODEL2), 4 5))
|
|
RAM_LEN = 320K
|
|
else ifneq (, $(filter $(STM32_MODEL2), 6 7))
|
|
RAM_LEN = 512K
|
|
endif
|
|
BACKUP_RAM_ADDR = 0x40024000
|
|
BACKUP_RAM_LEN = 0x4K
|
|
endif
|
|
else ifeq ($(STM32_TYPE), G)
|
|
ifeq ($(STM32_FAMILY), 0)
|
|
ifneq (, $(filter $(STM32_MODEL2), B))
|
|
RAM_LEN = 144K
|
|
else ifneq (, $(filter $(STM32_MODEL2), 7))
|
|
RAM_LEN = 36K
|
|
else ifneq (, $(filter $(STM32_MODEL2), 3))
|
|
RAM_LEN = 8K
|
|
endif
|
|
endif
|
|
ifeq ($(STM32_FAMILY), 4)
|
|
ifeq ($(STM32_MODEL), 431)
|
|
RAM_LEN = 32K
|
|
else ifeq ($(STM32_MODEL), 474)
|
|
RAM_LEN = 96K
|
|
CCMRAM_LEN = 32K
|
|
endif
|
|
endif
|
|
else ifeq ($(STM32_TYPE), L)
|
|
ifeq ($(STM32_FAMILY), 0)
|
|
ifeq ($(STM32_MODEL2), 1)
|
|
RAM_LEN = 2K
|
|
ifeq ($(STM32_MODEL3), 0)
|
|
ifeq ($(STM32_ROMSIZE), 6)
|
|
RAM_LEN = 8K
|
|
endif
|
|
endif
|
|
else ifneq (, $(filter $(STM32_MODEL2), 2))
|
|
RAM_LEN = 2K
|
|
else ifneq (, $(filter $(STM32_MODEL2), 3 4 5 6))
|
|
RAM_LEN = 8K
|
|
else ifneq (, $(filter $(STM32_MODEL2), 7 8))
|
|
RAM_LEN = 20K
|
|
endif
|
|
else ifeq ($(STM32_FAMILY), 1)
|
|
ifeq ($(STM32_MODEL), 100)
|
|
ifeq ($(STM32_ROMSIZE), 6)
|
|
RAM_LEN = 4K
|
|
else ifeq ($(STM32_ROMSIZE), 8)
|
|
RAM_LEN = 8K
|
|
else ifeq ($(STM32_ROMSIZE)$(STM32_RAMMOD), B)
|
|
RAM_LEN = 10K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), B_A C))
|
|
RAM_LEN = 16K
|
|
endif
|
|
else ifneq (, $(filter $(STM32_MODEL), 151 152))
|
|
ifneq (, $(filter $(STM32_PINCOUNT), C Q U V Z))
|
|
ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), 6 8))
|
|
RAM_LEN = 10K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), 6_A B))
|
|
RAM_LEN = 16K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), 8_A B_A C C_A))
|
|
RAM_LEN = 32K
|
|
else ifeq ($(STM32_ROMSIZE), D)
|
|
RAM_LEN = 48K
|
|
else ifeq ($(STM32_ROMSIZE), E)
|
|
RAM_LEN = 80K
|
|
endif
|
|
else ifeq ($(STM32_PINCOUNT), R)
|
|
ifeq ($(STM32_ROMSIZE)$(STM32_RAMMOD), 6)
|
|
RAM_LEN = 10K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), 8_A B_A C C_A))
|
|
RAM_LEN = 32K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), B 6_A))
|
|
RAM_LEN = 16K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), D))
|
|
RAM_LEN = 48K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), D_X E))
|
|
RAM_LEN = 80K
|
|
endif
|
|
endif
|
|
endif
|
|
else ifeq ($(STM32_FAMILY), 4)
|
|
ifeq ($(STM32_MODEL2), 1)
|
|
RAM_LEN = 40K
|
|
else ifeq ($(STM32_MODEL2), 3)
|
|
RAM_LEN = 64K
|
|
else ifeq ($(STM32_MODEL2), 7)
|
|
RAM_LEN = 96K
|
|
RAM2_LEN = 32K
|
|
else ifeq ($(STM32_MODEL2), 5)
|
|
RAM_LEN = 160K
|
|
else ifeq ($(STM32_MODEL2), 9)
|
|
RAM_LEN = 320K
|
|
else ifeq ($(STM32_MODEL2), R)
|
|
RAM_LEN = 640K
|
|
endif
|
|
else ifeq ($(STM32_FAMILY), 5)
|
|
ifneq (, $(filter $(STM32_MODEL2), 5 6))
|
|
RAM_LEN = 256K
|
|
endif
|
|
endif
|
|
else ifeq ($(STM32_TYPE), U)
|
|
ifeq ($(STM32_FAMILY), 5)
|
|
ifneq (, $(filter $(STM32_MODEL2), 7 8))
|
|
RAM_LEN = 768K
|
|
SRAM4_LEN = 16K
|
|
BACKUP_RAM_ADDR = 0x40036400
|
|
BACKUP_RAM_LEN = 0x2K
|
|
endif
|
|
endif
|
|
else ifeq ($(STM32_TYPE), W)
|
|
ifeq ($(STM32_FAMILY), B)
|
|
ifeq ($(STM32_MODEL), B55)
|
|
ifeq ($(STM32_ROMSIZE), C)
|
|
RAM_LEN = 128K
|
|
else ifneq (, $(filter $(STM32_ROMSIZE), E G))
|
|
RAM_LEN = 256K
|
|
endif
|
|
endif
|
|
else ifeq ($(STM32_FAMILY), L)
|
|
ifeq ($(STM32_MODEL), L55)
|
|
RAM_LEN = 64K
|
|
else ifneq (, $(filter LE5 LE4, $(STM32_MODEL)))
|
|
ifeq ($(STM32_ROMSIZE), 8)
|
|
RAM_LEN = 20K
|
|
else ifeq ($(STM32_ROMSIZE), B)
|
|
RAM_LEN = 48K
|
|
else
|
|
RAM_LEN = 64K
|
|
endif
|
|
endif
|
|
endif
|
|
else ifeq ($(STM32_TYPE), MP)
|
|
ifeq ($(STM32_FAMILY), 1)
|
|
ifeq ($(STM32_MODEL), 157)
|
|
RAM_START_ADDR = 0x10000000
|
|
RAM_LEN = 384K
|
|
endif
|
|
endif
|
|
else ifeq ($(STM32_TYPE), C)
|
|
ifeq ($(STM32_FAMILY), 0)
|
|
ifneq (, $(filter $(STM32_MODEL2), 1))
|
|
RAM_LEN = 6K
|
|
else ifneq (, $(filter $(STM32_MODEL2), 7))
|
|
ifeq ($(STM32_ROMSIZE), 8)
|
|
RAM_LEN = 12K
|
|
else ifeq ($(STM32_ROMSIZE), B)
|
|
RAM_LEN = 24K
|
|
endif
|
|
else ifneq (, $(filter $(STM32_MODEL2), 9))
|
|
RAM_LEN = 36K
|
|
else ifneq (, $(filter $(STM32_MODEL2), 3))
|
|
RAM_LEN = 12K
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(RAM_LEN), )
|
|
$(warning Unsupported cpu model $(CPU_MODEL) automatically)
|
|
endif
|
|
|
|
ifeq ($(STM32_ROMSIZE), 4)
|
|
ROM_LEN = 16K
|
|
else ifeq ($(STM32_ROMSIZE), 6)
|
|
ROM_LEN = 32K
|
|
else ifeq ($(STM32_ROMSIZE), 8)
|
|
ROM_LEN = 64K
|
|
else ifeq ($(STM32_ROMSIZE), B)
|
|
ROM_LEN = 128K
|
|
else ifeq ($(STM32_ROMSIZE), Z)
|
|
ROM_LEN = 192K
|
|
else ifeq ($(STM32_ROMSIZE), C)
|
|
ROM_LEN = 256K
|
|
else ifeq ($(STM32_ROMSIZE), D)
|
|
ROM_LEN = 384K
|
|
else ifeq ($(STM32_ROMSIZE), E)
|
|
ROM_LEN = 512K
|
|
else ifeq ($(STM32_ROMSIZE), F)
|
|
ROM_LEN = 768K
|
|
else ifeq ($(STM32_ROMSIZE), G)
|
|
ROM_LEN = 1024K
|
|
else ifeq ($(STM32_ROMSIZE), H)
|
|
ROM_LEN = 1536K
|
|
else ifeq ($(STM32_ROMSIZE), I)
|
|
ROM_LEN = 2048K
|
|
else ifeq ($(STM32_TYPE), MP)
|
|
ifeq ($(STM32_FAMILY), 1)
|
|
# STM32MP1 family has no flash ROM memory.
|
|
# Thus a part of SRAM must be considered as ROM.
|
|
# RETRAM (0x0 address) is setup as ROM by default.
|
|
# However in RIOT, vector table is relocated using VTOR register.
|
|
# Considering the minimum alignment is 128 words and knowing the number of
|
|
# interrupt vectors for a given MCU, if a device has for example 150 interrupt
|
|
# channels:
|
|
# Vector table has a size of 150 * 4 = 600 = 0x258
|
|
# As the table should be 128 word aligned, vector table size reserved is 0x400.
|
|
ifeq ($(STM32_MODEL), 157)
|
|
ROM_START_ADDR ?= 0x0
|
|
ifneq (,$(filter stm32mp1_eng_mode,$(USEMODULE)))
|
|
ROM_OFFSET ?= 0x400
|
|
endif
|
|
ROM_LEN ?= 64K
|
|
endif
|
|
endif
|
|
else
|
|
endif
|
|
|
|
ifeq ($(STM32_PINCOUNT), A)
|
|
STM32_PIN = 169
|
|
else ifeq ($(STM32_PINCOUNT), B)
|
|
STM32_PIN = 208
|
|
else ifeq ($(STM32_PINCOUNT), C)
|
|
STM32_PIN = 48
|
|
else ifeq ($(STM32_PINCOUNT), F)
|
|
STM32_PIN = 20
|
|
else ifeq ($(STM32_PINCOUNT), G)
|
|
STM32_PIN = 28
|
|
else ifeq ($(STM32_PINCOUNT), H)
|
|
STM32_PIN = 40
|
|
else ifeq ($(STM32_PINCOUNT), I)
|
|
STM32_PIN = 176
|
|
else ifeq ($(STM32_PINCOUNT), J)
|
|
ifeq ($(STM32_TYPE), W)
|
|
STM32_PIN = 73
|
|
else
|
|
STM32_PIN = 72
|
|
endif
|
|
else ifeq ($(STM32_PINCOUNT), K)
|
|
STM32_PIN = 32
|
|
else ifeq ($(STM32_PINCOUNT), M)
|
|
STM32_PIN = 81
|
|
else ifeq ($(STM32_PINCOUNT), N)
|
|
STM32_PIN = 216
|
|
else ifeq ($(STM32_PINCOUNT), Q)
|
|
STM32_PIN = 132
|
|
else ifeq ($(STM32_PINCOUNT), R)
|
|
ifeq ($(STM32_TYPE), W)
|
|
STM32_PIN = 68
|
|
else
|
|
STM32_PIN = 64
|
|
endif
|
|
else ifeq ($(STM32_PINCOUNT), T)
|
|
STM32_PIN = 36
|
|
else ifeq ($(STM32_PINCOUNT), U)
|
|
STM32_PIN = 63
|
|
else ifeq ($(STM32_PINCOUNT), V)
|
|
STM32_PIN = 100
|
|
else ifeq ($(STM32_PINCOUNT), Z)
|
|
STM32_PIN = 144
|
|
else ifeq ($(STM32_PINCOUNT), AC)
|
|
STM32_PIN = 361
|
|
else ifeq ($(STM32_PINCOUNT), J)
|
|
STM32_PIN = 8
|
|
else ifeq ($(STM32_PINCOUNT), D)
|
|
STM32_PIN = 12
|
|
endif
|
|
|
|
# Set the common memory addresses for stm32 MCU family
|
|
ROM_START_ADDR ?= 0x08000000
|
|
RAM_START_ADDR ?= 0x20000000
|