-
-
Notifications
You must be signed in to change notification settings - Fork 655
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(core): add support for STM32U585
[no changelog]
- Loading branch information
1 parent
757fed5
commit c30d2b7
Showing
17 changed files
with
734 additions
and
63 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
/* Trezor v2 boardloader linker script */ | ||
|
||
ENTRY(reset_handler) | ||
|
||
MEMORY { | ||
FLASH (rx) : ORIGIN = 0x0C004000, LENGTH = 48K | ||
SRAM1 (wal) : ORIGIN = 0x30000000, LENGTH = 192K - 0x100 | ||
BOOT_ARGS (wal) : ORIGIN = 0x3002FF00, LENGTH = 0x100 | ||
SRAM2 (wal) : ORIGIN = 0x30030000, LENGTH = 64K | ||
SRAM3 (wal) : ORIGIN = 0x30040000, LENGTH = 512K | ||
SRAM5 (wal) : ORIGIN = 0x30080000, LENGTH = 0K /* SRAM5 is not available */ | ||
SRAM6 (wal) : ORIGIN = 0x30080000, LENGTH = 0K /* SRAM6 is not available */ | ||
SRAM4 (wal) : ORIGIN = 0x38000000, LENGTH = 16K | ||
} | ||
|
||
main_stack_base = ORIGIN(SRAM2) + SIZEOF(.stack); /* 8-byte aligned full descending stack */ | ||
_sstack = ORIGIN(SRAM2); | ||
_estack = main_stack_base; | ||
|
||
/* used by the startup code to populate variables used by the C code */ | ||
data_lma = LOADADDR(.data); | ||
data_vma = ADDR(.data); | ||
data_size = SIZEOF(.data); | ||
|
||
/* used by the startup code to populate variables used by the C code */ | ||
sensitive_lma = LOADADDR(.sensitive); | ||
sensitive_vma = ADDR(.sensitive); | ||
sensitive_size = SIZEOF(.sensitive); | ||
|
||
/* used by the startup code to wipe memory */ | ||
sram1_start = ORIGIN(SRAM1); | ||
sram1_end = ORIGIN(SRAM1) + LENGTH(SRAM1); | ||
sram2_start = ORIGIN(SRAM2); | ||
sram2_end = ORIGIN(SRAM2) + LENGTH(SRAM2); | ||
sram3_start = ORIGIN(SRAM3); | ||
sram3_end = ORIGIN(SRAM3) + LENGTH(SRAM3); | ||
sram4_start = ORIGIN(SRAM4); | ||
sram4_end = ORIGIN(SRAM4) + LENGTH(SRAM4); | ||
sram5_start = ORIGIN(SRAM5); | ||
sram5_end = ORIGIN(SRAM5) + LENGTH(SRAM5); | ||
sram6_start = ORIGIN(SRAM6); | ||
sram6_end = ORIGIN(SRAM6) + LENGTH(SRAM6); | ||
|
||
/* reserve 256 bytes for bootloader arguments */ | ||
boot_args_start = ORIGIN(BOOT_ARGS); | ||
boot_args_end = ORIGIN(BOOT_ARGS) + LENGTH(BOOT_ARGS); | ||
|
||
SECTIONS { | ||
.vector_table : ALIGN(512) { | ||
KEEP(*(.vector_table)); | ||
} >FLASH AT>FLASH | ||
|
||
.text : ALIGN(4) { | ||
*(.text*); | ||
. = ALIGN(4); /* make the section size a multiple of the word size */ | ||
} >FLASH AT>FLASH | ||
|
||
.rodata : ALIGN(4) { | ||
*(.rodata*); | ||
. = ALIGN(4); /* make the section size a multiple of the word size */ | ||
} >FLASH AT>FLASH | ||
|
||
.data : ALIGN(4) { | ||
*(.data*); | ||
. = ALIGN(8); | ||
} >SRAM1 AT>FLASH | ||
|
||
/DISCARD/ : { | ||
*(.ARM.exidx*); | ||
} | ||
|
||
.bss : ALIGN(4) { | ||
*(.bss*); | ||
. = ALIGN(4); | ||
} >SRAM1 | ||
|
||
.buf : ALIGN(4) { | ||
*(.buf*); | ||
. = ALIGN(4); | ||
} >SRAM1 | ||
|
||
.stack : ALIGN(8) { | ||
. = 16K; /* Overflow causes UsageFault */ | ||
} >SRAM2 | ||
|
||
.sensitive : ALIGN(8) { | ||
*(.sensitive*); | ||
. = ALIGN(4); | ||
} >SRAM2 AT>FLASH | ||
|
||
.fb : ALIGN(4) { | ||
__fb_start = .; | ||
*(.fb1*); | ||
*(.fb2*); | ||
__fb_end = .; | ||
. = ALIGN(4); | ||
} >SRAM3 | ||
|
||
.boot_args : ALIGN(8) { | ||
*(.boot_command*); | ||
. = ALIGN(8); | ||
*(.boot_args*); | ||
. = ALIGN(8); | ||
} >BOOT_ARGS | ||
|
||
|
||
/* Hard-coded address for capabilities structure */ | ||
.capabilities 0x0C00FF00 : {KEEP(*(.capabilities_section))} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
/* Trezor v2 bootloader linker script */ | ||
|
||
ENTRY(reset_handler) | ||
|
||
MEMORY { | ||
FLASH (rx) : ORIGIN = 0x0C010000, LENGTH = 128K | ||
SRAM1 (wal) : ORIGIN = 0x30000000, LENGTH = 192K - 0x100 | ||
BOOT_ARGS (wal) : ORIGIN = 0x3002FF00, LENGTH = 0x100 | ||
SRAM2 (wal) : ORIGIN = 0x30030000, LENGTH = 64K | ||
SRAM3 (wal) : ORIGIN = 0x30040000, LENGTH = 512K | ||
SRAM5 (wal) : ORIGIN = 0x30080000, LENGTH = 0K /* SRAM5 is not available */ | ||
SRAM6 (wal) : ORIGIN = 0x30080000, LENGTH = 0K /* SRAM6 is not available */ | ||
SRAM4 (wal) : ORIGIN = 0x38000000, LENGTH = 16K | ||
} | ||
|
||
main_stack_base = ORIGIN(SRAM2) + SIZEOF(.stack); /* 8-byte aligned full descending stack */ | ||
_sstack = ORIGIN(SRAM2); | ||
_estack = main_stack_base; | ||
|
||
/* used by the startup code to populate variables used by the C code */ | ||
data_lma = LOADADDR(.data); | ||
data_vma = ADDR(.data); | ||
data_size = SIZEOF(.data); | ||
|
||
/* used by the startup code to populate variables used by the C code */ | ||
sensitive_lma = LOADADDR(.sensitive); | ||
sensitive_vma = ADDR(.sensitive); | ||
sensitive_size = SIZEOF(.sensitive); | ||
|
||
/* used by the startup code to wipe memory */ | ||
sram1_start = ORIGIN(SRAM1); | ||
sram1_end = ORIGIN(SRAM1) + LENGTH(SRAM1); | ||
sram2_start = ORIGIN(SRAM2); | ||
sram2_end = ORIGIN(SRAM2) + LENGTH(SRAM2); | ||
sram3_start = ORIGIN(SRAM3); | ||
sram3_end = ORIGIN(SRAM3) + LENGTH(SRAM3); | ||
sram4_start = ORIGIN(SRAM4); | ||
sram4_end = ORIGIN(SRAM4) + LENGTH(SRAM4); | ||
sram5_start = ORIGIN(SRAM5); | ||
sram5_end = ORIGIN(SRAM5) + LENGTH(SRAM5); | ||
sram6_start = ORIGIN(SRAM6); | ||
sram6_end = ORIGIN(SRAM6) + LENGTH(SRAM6); | ||
|
||
/* reserve 256 bytes for bootloader arguments */ | ||
boot_args_start = ORIGIN(BOOT_ARGS); | ||
boot_args_end = ORIGIN(BOOT_ARGS) + LENGTH(BOOT_ARGS); | ||
|
||
_codelen = SIZEOF(.flash) + SIZEOF(.data) + SIZEOF(.sensitive); | ||
|
||
SECTIONS { | ||
.header : ALIGN(4) { | ||
KEEP(*(.header)); | ||
} >FLASH AT>FLASH | ||
|
||
.flash : ALIGN(512) { | ||
KEEP(*(.vector_table)); | ||
. = ALIGN(4); | ||
*(.text*); | ||
. = ALIGN(4); | ||
*(.rodata*); | ||
. = ALIGN(512); | ||
} >FLASH AT>FLASH | ||
|
||
.data : ALIGN(4) { | ||
*(.data*); | ||
. = ALIGN(512); | ||
} >SRAM1 AT>FLASH | ||
|
||
/DISCARD/ : { | ||
*(.ARM.exidx*); | ||
} | ||
|
||
.bss : ALIGN(4) { | ||
*(.bss*); | ||
. = ALIGN(4); | ||
} >SRAM1 | ||
|
||
.buf : ALIGN(4) { | ||
*(.buf*); | ||
. = ALIGN(4); | ||
} >SRAM1 | ||
|
||
.stack : ALIGN(8) { | ||
. = 16K; /* Overflow causes UsageFault */ | ||
} >SRAM2 | ||
|
||
.sensitive : ALIGN(512) { | ||
*(.sensitive*); | ||
. = ALIGN(512); | ||
} >SRAM2 AT>FLASH | ||
|
||
.fb : ALIGN(4) { | ||
__fb_start = .; | ||
*(.fb1*); | ||
*(.fb2*); | ||
__fb_end = .; | ||
. = ALIGN(4); | ||
} >SRAM3 | ||
|
||
.boot_args : ALIGN(8) { | ||
*(.boot_command*); | ||
. = ALIGN(8); | ||
*(.boot_args*); | ||
. = ALIGN(8); | ||
} >BOOT_ARGS | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
/* Trezor v2 bootloader linker script */ | ||
|
||
ENTRY(reset_handler) | ||
|
||
MEMORY { | ||
FLASH (rx) : ORIGIN = 0x0C010000, LENGTH = 128K | ||
SRAM1 (wal) : ORIGIN = 0x30000000, LENGTH = 192K - 0x100 | ||
BOOT_ARGS (wal) : ORIGIN = 0x3002FF00, LENGTH = 0x100 | ||
SRAM2 (wal) : ORIGIN = 0x30030000, LENGTH = 64K | ||
SRAM3 (wal) : ORIGIN = 0x30040000, LENGTH = 512K | ||
SRAM5 (wal) : ORIGIN = 0x30080000, LENGTH = 0K /* SRAM5 is not available */ | ||
SRAM6 (wal) : ORIGIN = 0x30080000, LENGTH = 0K /* SRAM6 is not available */ | ||
SRAM4 (wal) : ORIGIN = 0x38000000, LENGTH = 16K | ||
} | ||
|
||
main_stack_base = ORIGIN(SRAM2) + SIZEOF(.stack); /* 8-byte aligned full descending stack */ | ||
_sstack = ORIGIN(SRAM2); | ||
_estack = main_stack_base; | ||
|
||
/* used by the startup code to populate variables used by the C code */ | ||
data_lma = LOADADDR(.data); | ||
data_vma = ADDR(.data); | ||
data_size = SIZEOF(.data); | ||
|
||
/* used by the startup code to populate variables used by the C code */ | ||
sensitive_lma = LOADADDR(.sensitive); | ||
sensitive_vma = ADDR(.sensitive); | ||
sensitive_size = SIZEOF(.sensitive); | ||
|
||
/* used by the startup code to wipe memory */ | ||
sram1_start = ORIGIN(SRAM1); | ||
sram1_end = ORIGIN(SRAM1) + LENGTH(SRAM1); | ||
sram2_start = ORIGIN(SRAM2); | ||
sram2_end = ORIGIN(SRAM2) + LENGTH(SRAM2); | ||
sram3_start = ORIGIN(SRAM3); | ||
sram3_end = ORIGIN(SRAM3) + LENGTH(SRAM3); | ||
sram4_start = ORIGIN(SRAM4); | ||
sram4_end = ORIGIN(SRAM4) + LENGTH(SRAM4); | ||
sram5_start = ORIGIN(SRAM5); | ||
sram5_end = ORIGIN(SRAM5) + LENGTH(SRAM5); | ||
sram6_start = ORIGIN(SRAM6); | ||
sram6_end = ORIGIN(SRAM6) + LENGTH(SRAM6); | ||
|
||
/* reserve 256 bytes for bootloader arguments */ | ||
boot_args_start = ORIGIN(BOOT_ARGS); | ||
boot_args_end = ORIGIN(BOOT_ARGS) + LENGTH(BOOT_ARGS); | ||
|
||
_codelen = SIZEOF(.flash) + SIZEOF(.data) + SIZEOF(.sensitive); | ||
|
||
SECTIONS { | ||
.header : ALIGN(4) { | ||
KEEP(*(.header)); | ||
} >FLASH AT>FLASH | ||
|
||
.flash : ALIGN(512) { | ||
KEEP(*(.vector_table)); | ||
. = ALIGN(4); | ||
*(.text*); | ||
. = ALIGN(4); | ||
*(.rodata*); | ||
. = ALIGN(512); | ||
} >FLASH AT>FLASH | ||
|
||
.data : ALIGN(4) { | ||
*(.data*); | ||
. = ALIGN(512); | ||
} >SRAM1 AT>FLASH | ||
|
||
/DISCARD/ : { | ||
*(.ARM.exidx*); | ||
} | ||
|
||
.bss : ALIGN(4) { | ||
*(.bss*); | ||
. = ALIGN(4); | ||
} >SRAM1 | ||
|
||
.buf : ALIGN(4) { | ||
*(.buf*); | ||
. = ALIGN(4); | ||
} >SRAM1 | ||
|
||
.stack : ALIGN(8) { | ||
. = 16K; /* Exactly 16K allocated for stack. Overflow causes Usage fault. */ | ||
} >SRAM2 | ||
|
||
.sensitive : ALIGN(512) { | ||
*(.sensitive*); | ||
. = ALIGN(512); | ||
} >SRAM2 AT>FLASH | ||
|
||
.fb : ALIGN(4) { | ||
__fb_start = .; | ||
*(.fb1*); | ||
*(.fb2*); | ||
__fb_end = .; | ||
. = ALIGN(4); | ||
} >SRAM3 | ||
|
||
.boot_args : ALIGN(8) { | ||
*(.boot_command*); | ||
. = ALIGN(8); | ||
*(.boot_args*); | ||
. = ALIGN(8); | ||
} >BOOT_ARGS | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
#ifndef SIZEDEFS_H_ | ||
#define SIZEDEFS_H_ | ||
|
||
#define SIZE_2K (2 * 1024) | ||
#define SIZE_16K (16 * 1024) | ||
#define SIZE_48K (48 * 1024) | ||
#define SIZE_64K (64 * 1024) | ||
#define SIZE_128K (128 * 1024) | ||
#define SIZE_192K (192 * 1024) | ||
#define SIZE_256K (256 * 1024) | ||
#define SIZE_320K (320 * 1024) | ||
#define SIZE_768K (768 * 1024) | ||
#define SIZE_2496K (2496 * 1024) | ||
#define SIZE_3712K ((4096 - 384) * 1024) | ||
#define SIZE_3776K ((4096 - 320) * 1024) | ||
#define SIZE_3904K ((4096 - 192) * 1024) | ||
#define SIZE_4032K ((4096 - 64) * 1024) | ||
#define SIZE_2M (2 * 1024 * 1024) | ||
#define SIZE_4M (4 * 1024 * 1024) | ||
#define SIZE_16M (16 * 1024 * 1024) | ||
#define SIZE_256M (256 * 1024 * 1024) | ||
#define SIZE_512M (512 * 1024 * 1024) | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.