boards: Enable STM32F103C8 flash hack via env var

The STM32F103C8 secretly comes with 128KiB flash instead of 64KiB. Still, only
64KiB of it are tested and guaranteed to work. However, most of the times the
whole 128KiB flash works just fine. In the BluePill documentation this fact is
already documented and by using

    $ make BOARD=bluepill CPU_MODEL=stm32f103cb

the whole 128 KiB can be used by RIOT. When using this hack routinely, it easier
to use environment variables instead. But allowing to overwrite CPU_MODEL via
environment variables seems to be a bad thing, as it is easy to forget to clear
that environment variable when changing the BOARD variable.

This commit introduces the new STM32F103C8_FLASH_HACK variable, which unlocks
the 128KiB FLASH when set to "1". The BluePill documentation has been updated
accordingly.
This commit is contained in:
Marian Buschsieweke 2018-11-05 14:19:21 +01:00
parent 0d95cc877b
commit 82ea9a02de
No known key found for this signature in database
GPG Key ID: 61F64C6599B1539F
2 changed files with 8 additions and 3 deletions

View File

@ -61,12 +61,12 @@ you can flash the device with:
To make use of the entire 128 KB flash, compile your application with:
$ make BOARD=bluepill CPU_MODEL=stm32f103cb
$ make STM32F103C8_FLASH_HACK=1 BOARD=bluepill
This sets the `CPU_MODEL` make variable to `stm32f103cb`, the default
value is `stm32f103c8`. These two CPU models basically only have one
major difference, the latter has 128 KB flash while the former has 64
KB.
KB. You may also set `STM32F103C8_FLASH_HACK` as environment variable.
If you want to flash a binary compiled this way you either need to
figure out how to adjust the OpenOCD configuration to make it use 128 KB

View File

@ -1,6 +1,11 @@
## the cpu to build for
export CPU = stm32f1
export CPU_MODEL = stm32f103c8
STM32F103C8_FLASH_HACK ?= 0
ifneq ($(STM32F103C8_FLASH_HACK),0)
export CPU_MODEL = stm32f103cb
else
export CPU_MODEL = stm32f103c8
endif
INCLUDES += -I$(RIOTBOARD)/common/stm32f103c8/include