diff --git a/SConscript.boardloader b/SConscript.boardloader index 725db3cc6..06131e608 100644 --- a/SConscript.boardloader +++ b/SConscript.boardloader @@ -86,17 +86,27 @@ env.Replace( OBJCOPY='arm-none-eabi-objcopy', ) env.Replace( - TREZOR_MODEL=env.get('ENV').get('TREZOR_MODEL', 'T'), + TREZOR_MODEL=env.get('ENV').get('TREZOR_MODEL', 'T'), ) + +if env.get('TREZOR_MODEL') == 'T': + CPU_ASFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16' + CPU_CCFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mtune=cortex-m4 ' + CPU_MODEL = 'STM32F427xx' +else: + CPU_ASFLAGS = '-mthumb -mcpu=cortex-m3 -mfloat-abi=soft' + CPU_CCFLAGS = '-mthumb -mtune=cortex-m3 -mcpu=cortex-m3 -mfloat-abi=soft ' + CPU_MODEL = 'STM32F405xx' + +env.Replace( COPT=env.get('ENV').get('OPTIMIZE', '-Os'), CCFLAGS='$COPT ' '-g3 ' '-nostdlib ' '-std=gnu99 -Wall -Werror -Wdouble-promotion -Wpointer-arith -fno-common ' - '-mthumb -mtune=cortex-m4 -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard ' '-fsingle-precision-constant -fdata-sections -ffunction-sections ' '-ffreestanding ' '-fstack-protector-all ' - + CCFLAGS_MOD, + + CPU_CCFLAGS + CCFLAGS_MOD, CCFLAGS_QSTR='-DNO_QSTR -DN_X64 -DN_X86 -DN_THUMB', LINKFLAGS='-T embed/boardloader/memory.ld -Wl,--gc-sections -Wl,-Map=build/boardloader/boardloader.map -Wl,--warn-common', CPPPATH=[ @@ -111,11 +121,11 @@ env.Replace( ] + CPPPATH_MOD, CPPDEFINES=[ ('TREZOR_MODEL', '$TREZOR_MODEL'), - 'STM32F427xx', + CPU_MODEL, 'USE_HAL_DRIVER', ('STM32_HAL_H', '""'), ] + CPPDEFINES_MOD, - ASFLAGS='-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16', + ASFLAGS=CPU_ASFLAGS, ASPPFLAGS='$CFLAGS $CCFLAGS', ) # diff --git a/SConscript.bootloader b/SConscript.bootloader index 601a792af..5bd3199ab 100644 --- a/SConscript.bootloader +++ b/SConscript.bootloader @@ -107,17 +107,27 @@ env.Replace( OBJCOPY='arm-none-eabi-objcopy', ) env.Replace( - TREZOR_MODEL=env.get('ENV').get('TREZOR_MODEL', 'T'), + TREZOR_MODEL=env.get('ENV').get('TREZOR_MODEL', 'T'), ) + +if env.get('TREZOR_MODEL') == 'T': + CPU_ASFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16' + CPU_CCFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mtune=cortex-m4 ' + CPU_MODEL = 'STM32F427xx' +else: + CPU_ASFLAGS = '-mthumb -mcpu=cortex-m3 -mfloat-abi=soft' + CPU_CCFLAGS = '-mthumb -mtune=cortex-m3 -mcpu=cortex-m3 -mfloat-abi=soft ' + CPU_MODEL = 'STM32F405xx' + +env.Replace( COPT=env.get('ENV').get('OPTIMIZE', '-Os'), CCFLAGS='$COPT ' '-g3 ' '-nostdlib ' '-std=gnu99 -Wall -Werror -Wdouble-promotion -Wpointer-arith -fno-common ' - '-mthumb -mtune=cortex-m4 -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard ' '-fsingle-precision-constant -fdata-sections -ffunction-sections ' '-ffreestanding ' '-fstack-protector-all ' - + CCFLAGS_MOD, + + CPU_CCFLAGS + CCFLAGS_MOD, CCFLAGS_QSTR='-DNO_QSTR -DN_X64 -DN_X86 -DN_THUMB', LINKFLAGS='-T embed/bootloader/memory.ld -Wl,--gc-sections -Wl,-Map=build/bootloader/bootloader.map -Wl,--warn-common', CPPPATH=[ @@ -133,12 +143,12 @@ env.Replace( ] + CPPPATH_MOD, CPPDEFINES=[ ('TREZOR_MODEL', '$TREZOR_MODEL'), - 'STM32F427xx', + CPU_MODEL, 'USE_HAL_DRIVER', ('STM32_HAL_H', '""'), 'PB_FIELD_16BIT', ] + CPPDEFINES_MOD, - ASFLAGS='-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16', + ASFLAGS=CPU_ASFLAGS, ASPPFLAGS='$CFLAGS $CCFLAGS', ) env.Replace( diff --git a/SConscript.firmware b/SConscript.firmware index 6afd6cbe7..0e109dbed 100644 --- a/SConscript.firmware +++ b/SConscript.firmware @@ -301,17 +301,27 @@ env.Replace( OBJCOPY='arm-none-eabi-objcopy', ) env.Replace( - TREZOR_MODEL=env.get('ENV').get('TREZOR_MODEL', 'T'), + TREZOR_MODEL=env.get('ENV').get('TREZOR_MODEL', 'T'), ) + +if env.get('TREZOR_MODEL') == 'T': + CPU_ASFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16' + CPU_CCFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mtune=cortex-m4 ' + CPU_MODEL = 'STM32F427xx' +else: + CPU_ASFLAGS = '-mthumb -mcpu=cortex-m3 -mfloat-abi=soft' + CPU_CCFLAGS = '-mthumb -mtune=cortex-m3 -mcpu=cortex-m3 -mfloat-abi=soft ' + CPU_MODEL = 'STM32F405xx' + +env.Replace( COPT=env.get('ENV').get('OPTIMIZE', '-Os'), CCFLAGS='$COPT ' '-g3 ' '-nostdlib ' '-std=gnu99 -Wall -Werror -Wdouble-promotion -Wpointer-arith -fno-common ' - '-mthumb -mtune=cortex-m4 -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard ' '-fsingle-precision-constant -fdata-sections -ffunction-sections ' '-ffreestanding ' '-fstack-protector-all ' - + CCFLAGS_MOD, + + CPU_CCFLAGS + CCFLAGS_MOD, CCFLAGS_QSTR='-DNO_QSTR -DN_X64 -DN_X86 -DN_THUMB', LINKFLAGS='-T embed/firmware/memory_${TREZOR_MODEL}.ld -Wl,--gc-sections -Wl,-Map=build/firmware/firmware.map -Wl,--warn-common', CPPPATH=[ @@ -327,11 +337,11 @@ env.Replace( ] + CPPPATH_MOD, CPPDEFINES=[ ('TREZOR_MODEL', '$TREZOR_MODEL'), - 'STM32F427xx', + CPU_MODEL, 'USE_HAL_DRIVER', ('STM32_HAL_H', '""'), ] + CPPDEFINES_MOD, - ASFLAGS='-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16', + ASFLAGS=CPU_ASFLAGS, ASPPFLAGS='$CFLAGS $CCFLAGS', ) env.Replace( diff --git a/SConscript.prodtest b/SConscript.prodtest index 86e5854c9..769499392 100644 --- a/SConscript.prodtest +++ b/SConscript.prodtest @@ -76,17 +76,18 @@ env.Replace( OBJCOPY='arm-none-eabi-objcopy', ) env.Replace( - TREZOR_MODEL=env.get('ENV').get('TREZOR_MODEL', 'T'), + TREZOR_MODEL=env.get('ENV').get('TREZOR_MODEL', 'T'), ) + +env.Replace( COPT=env.get('ENV').get('OPTIMIZE', '-Os'), CCFLAGS='$COPT ' '-g3 ' '-nostdlib ' '-std=gnu99 -Wall -Werror -Wdouble-promotion -Wpointer-arith -fno-common ' - '-mthumb -mtune=cortex-m4 -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard ' '-fsingle-precision-constant -fdata-sections -ffunction-sections ' '-ffreestanding ' '-fstack-protector-all ' - + CCFLAGS_MOD, + + CPU_CCFLAGS + CCFLAGS_MOD, CCFLAGS_QSTR='-DNO_QSTR -DN_X64 -DN_X86 -DN_THUMB', LINKFLAGS='-T embed/prodtest/memory.ld -Wl,--gc-sections -Wl,-Map=build/prodtest/prodtest.map -Wl,--warn-common', CPPPATH=[ @@ -100,10 +101,11 @@ env.Replace( ] + CPPPATH_MOD, CPPDEFINES=[ ('TREZOR_MODEL', '$TREZOR_MODEL'), - 'STM32F427xx', - ('STM32_HAL_H', '""'), + CPU_MODEL, + 'USE_HAL_DRIVER', + ('STM32_HAL_H', '""'), ] + CPPDEFINES_MOD, - ASFLAGS='-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16', + ASFLAGS=CPU_ASFLAGS, ASPPFLAGS='$CFLAGS $CCFLAGS', ) env.Replace( diff --git a/SConscript.reflash b/SConscript.reflash index 981eaac7a..13669604a 100644 --- a/SConscript.reflash +++ b/SConscript.reflash @@ -76,17 +76,27 @@ env.Replace( OBJCOPY='arm-none-eabi-objcopy', ) env.Replace( - TREZOR_MODEL=env.get('ENV').get('TREZOR_MODEL', 'T'), + TREZOR_MODEL=env.get('ENV').get('TREZOR_MODEL', 'T'), ) + +if env.get('TREZOR_MODEL') == 'T': + CPU_ASFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16' + CPU_CCFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mtune=cortex-m4 ' + CPU_MODEL = 'STM32F427xx' +else: + CPU_ASFLAGS = '-mthumb -mcpu=cortex-m3 -mfloat-abi=soft' + CPU_CCFLAGS = '-mthumb -mtune=cortex-m3 -mcpu=cortex-m3 -mfloat-abi=soft ' + CPU_MODEL = 'STM32F405xx' + +env.Replace( COPT=env.get('ENV').get('OPTIMIZE', '-Os'), CCFLAGS='$COPT ' '-g3 ' '-nostdlib ' '-std=gnu99 -Wall -Werror -Wdouble-promotion -Wpointer-arith -fno-common ' - '-mthumb -mtune=cortex-m4 -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard ' '-fsingle-precision-constant -fdata-sections -ffunction-sections ' '-ffreestanding ' '-fstack-protector-all ' - + CCFLAGS_MOD, + + CPU_CCFLAGS + CCFLAGS_MOD, CCFLAGS_QSTR='-DNO_QSTR -DN_X64 -DN_X86 -DN_THUMB', LINKFLAGS='-T embed/reflash/memory.ld -Wl,--gc-sections -Wl,-Map=build/reflash/reflash.map -Wl,--warn-common', CPPPATH=[ @@ -100,10 +110,11 @@ env.Replace( ] + CPPPATH_MOD, CPPDEFINES=[ ('TREZOR_MODEL', '$TREZOR_MODEL'), - 'STM32F427xx', - ('STM32_HAL_H', '""'), + CPU_MODEL, + 'USE_HAL_DRIVER', + ('STM32_HAL_H', '""'), ] + CPPDEFINES_MOD, - ASFLAGS='-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16', + ASFLAGS=CPU_ASFLAGS, ASPPFLAGS='$CFLAGS $CCFLAGS', ) env.Replace( diff --git a/SConscript.unix b/SConscript.unix index fe345c3ba..da19bd4f8 100644 --- a/SConscript.unix +++ b/SConscript.unix @@ -247,7 +247,9 @@ env.Replace( OBJCOPY='objcopy', ) env.Replace( - TREZOR_MODEL=env.get('ENV').get('TREZOR_MODEL', 'T'), + TREZOR_MODEL=env.get('ENV').get('TREZOR_MODEL', 'T'), ) + +env.Replace( COPT=env.get('ENV').get('OPTIMIZE', '-Os'), CCFLAGS='$COPT ' '-g3 ' diff --git a/embed/trezorhal/flash.h b/embed/trezorhal/flash.h index 31d2fda73..4bcf8592e 100644 --- a/embed/trezorhal/flash.h +++ b/embed/trezorhal/flash.h @@ -60,7 +60,7 @@ #define FLASH_SECTOR_COUNT 24 // note: FLASH_SR_RDERR is STM32F42xxx and STM32F43xxx specific (STM32F427) (reference RM0090 section 3.7.5) -#ifndef FLASH_SR_RDERR +#ifndef STM32F427xx #define FLASH_SR_RDERR 0 #endif