mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-08-05 05:15:27 +00:00
chore(core): remove unprivileged SAES on U5G models
[no changelog]
This commit is contained in:
parent
6bb3c0cf1d
commit
7fb272bade
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
FLASH_START = 0x8000000;
|
FLASH_START = 0x8000000;
|
||||||
NORCOW_SECTOR_SIZE = 0x10000;
|
NORCOW_SECTOR_SIZE = 0x10000;
|
||||||
NORCOW_MIN_VERSION = 0x0;
|
NORCOW_MIN_VERSION = 0x6;
|
||||||
BOARDLOADER_START = 0x8000000;
|
BOARDLOADER_START = 0x8000000;
|
||||||
BOARDLOADER_MAXSIZE = 0xc000;
|
BOARDLOADER_MAXSIZE = 0xc000;
|
||||||
BOARDLOADER_SECTOR_START = 0x0;
|
BOARDLOADER_SECTOR_START = 0x0;
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
#define FLASH_START 0x08000000
|
#define FLASH_START 0x08000000
|
||||||
#define NORCOW_SECTOR_SIZE (1 * 64 * 1024) // 64 kB
|
#define NORCOW_SECTOR_SIZE (1 * 64 * 1024) // 64 kB
|
||||||
#define NORCOW_MIN_VERSION 0x00000000
|
#define NORCOW_MIN_VERSION 0x00000006
|
||||||
|
|
||||||
// FLASH layout
|
// FLASH layout
|
||||||
#define BOARDLOADER_START 0x08000000
|
#define BOARDLOADER_START 0x08000000
|
||||||
|
@ -27,7 +27,6 @@ FIRMWARE_SECTOR_START = 0x22;
|
|||||||
FIRMWARE_SECTOR_END = 0x1cf;
|
FIRMWARE_SECTOR_END = 0x1cf;
|
||||||
KERNEL_START = 0xc044000;
|
KERNEL_START = 0xc044000;
|
||||||
KERNEL_MAXSIZE = 0x80000;
|
KERNEL_MAXSIZE = 0x80000;
|
||||||
KERNEL_U_FLASH_SIZE = 0x200;
|
|
||||||
STORAGE_1_START = 0xc3a0000;
|
STORAGE_1_START = 0xc3a0000;
|
||||||
STORAGE_1_MAXSIZE = 0x20000;
|
STORAGE_1_MAXSIZE = 0x20000;
|
||||||
STORAGE_1_SECTOR_START = 0x1d0;
|
STORAGE_1_SECTOR_START = 0x1d0;
|
||||||
@ -45,9 +44,7 @@ BOOTARGS_SIZE = 0x200;
|
|||||||
FB1_RAM_START = 0x30000200;
|
FB1_RAM_START = 0x30000200;
|
||||||
FB1_RAM_SIZE = 0xbfe00;
|
FB1_RAM_SIZE = 0xbfe00;
|
||||||
MAIN_RAM_START = 0x300c0000;
|
MAIN_RAM_START = 0x300c0000;
|
||||||
MAIN_RAM_SIZE = 0xfe00;
|
MAIN_RAM_SIZE = 0x10000;
|
||||||
SAES_RAM_START = 0x300cfe00;
|
|
||||||
SAES_RAM_SIZE = 0x200;
|
|
||||||
FB2_RAM_START = 0x300d0000;
|
FB2_RAM_START = 0x300d0000;
|
||||||
FB2_RAM_SIZE = 0xc0000;
|
FB2_RAM_SIZE = 0xc0000;
|
||||||
AUX1_RAM_START = 0x30190000;
|
AUX1_RAM_START = 0x30190000;
|
||||||
|
@ -67,7 +67,6 @@
|
|||||||
#define FIRMWARE_SECTOR_END 0x1CF
|
#define FIRMWARE_SECTOR_END 0x1CF
|
||||||
#define KERNEL_START 0x0C044000
|
#define KERNEL_START 0x0C044000
|
||||||
#define KERNEL_MAXSIZE (512 * 1024) // 512 kB
|
#define KERNEL_MAXSIZE (512 * 1024) // 512 kB
|
||||||
#define KERNEL_U_FLASH_SIZE 512
|
|
||||||
|
|
||||||
#define STORAGE_1_START 0x0C3A0000
|
#define STORAGE_1_START 0x0C3A0000
|
||||||
#define STORAGE_1_MAXSIZE (16 * 8 * 1024) // 128 kB
|
#define STORAGE_1_MAXSIZE (16 * 8 * 1024) // 128 kB
|
||||||
@ -92,10 +91,7 @@
|
|||||||
#define FB1_RAM_SIZE (768 * 1024 - 512)
|
#define FB1_RAM_SIZE (768 * 1024 - 512)
|
||||||
|
|
||||||
#define MAIN_RAM_START 0x300C0000
|
#define MAIN_RAM_START 0x300C0000
|
||||||
#define MAIN_RAM_SIZE (64 * 1024 - 512)
|
#define MAIN_RAM_SIZE (64 * 1024)
|
||||||
|
|
||||||
#define SAES_RAM_START 0x300CFE00
|
|
||||||
#define SAES_RAM_SIZE 512
|
|
||||||
|
|
||||||
#define FB2_RAM_START 0x300D0000
|
#define FB2_RAM_START 0x300D0000
|
||||||
#define FB2_RAM_SIZE (768 * 1024)
|
#define FB2_RAM_SIZE (768 * 1024)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
FLASH_START = 0x8000000;
|
FLASH_START = 0x8000000;
|
||||||
NORCOW_SECTOR_SIZE = 0x10000;
|
NORCOW_SECTOR_SIZE = 0x10000;
|
||||||
NORCOW_MIN_VERSION = 0x0;
|
NORCOW_MIN_VERSION = 0x3;
|
||||||
BOARDLOADER_START = 0x8000000;
|
BOARDLOADER_START = 0x8000000;
|
||||||
BOARDLOADER_MAXSIZE = 0xc000;
|
BOARDLOADER_MAXSIZE = 0xc000;
|
||||||
BOARDLOADER_SECTOR_START = 0x0;
|
BOARDLOADER_SECTOR_START = 0x0;
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
#define FLASH_START 0x08000000
|
#define FLASH_START 0x08000000
|
||||||
#define NORCOW_SECTOR_SIZE (1 * 64 * 1024) // 64 kB
|
#define NORCOW_SECTOR_SIZE (1 * 64 * 1024) // 64 kB
|
||||||
#define NORCOW_MIN_VERSION 0x00000000
|
#define NORCOW_MIN_VERSION 0x00000003
|
||||||
|
|
||||||
// FLASH layout
|
// FLASH layout
|
||||||
#define BOARDLOADER_START 0x08000000
|
#define BOARDLOADER_START 0x08000000
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
FLASH_START = 0xc004000;
|
FLASH_START = 0xc004000;
|
||||||
NORCOW_SECTOR_SIZE = 0x10000;
|
NORCOW_SECTOR_SIZE = 0x10000;
|
||||||
NORCOW_MIN_VERSION = 0x0;
|
NORCOW_MIN_VERSION = 0x5;
|
||||||
SECRET_START = 0xc000000;
|
SECRET_START = 0xc000000;
|
||||||
SECRET_MAXSIZE = 0x4000;
|
SECRET_MAXSIZE = 0x4000;
|
||||||
SECRET_SECTOR_START = 0x0;
|
SECRET_SECTOR_START = 0x0;
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
// misc
|
// misc
|
||||||
#define FLASH_START 0x0C004000
|
#define FLASH_START 0x0C004000
|
||||||
#define NORCOW_SECTOR_SIZE (8 * 8 * 1024) // 64 kB
|
#define NORCOW_SECTOR_SIZE (8 * 8 * 1024) // 64 kB
|
||||||
#define NORCOW_MIN_VERSION 0x00000000
|
#define NORCOW_MIN_VERSION 0x00000005
|
||||||
|
|
||||||
// FLASH layout
|
// FLASH layout
|
||||||
#define SECRET_START 0x0C000000
|
#define SECRET_START 0x0C000000
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
FLASH_START = 0xc004000;
|
FLASH_START = 0xc004000;
|
||||||
NORCOW_SECTOR_SIZE = 0x10000;
|
NORCOW_SECTOR_SIZE = 0x10000;
|
||||||
NORCOW_MIN_VERSION = 0x0;
|
NORCOW_MIN_VERSION = 0x4;
|
||||||
SECRET_START = 0xc000000;
|
SECRET_START = 0xc000000;
|
||||||
SECRET_MAXSIZE = 0x4000;
|
SECRET_MAXSIZE = 0x4000;
|
||||||
SECRET_SECTOR_START = 0x0;
|
SECRET_SECTOR_START = 0x0;
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
// misc
|
// misc
|
||||||
#define FLASH_START 0x0C004000
|
#define FLASH_START 0x0C004000
|
||||||
#define NORCOW_SECTOR_SIZE (8 * 8 * 1024) // 64 kB
|
#define NORCOW_SECTOR_SIZE (8 * 8 * 1024) // 64 kB
|
||||||
#define NORCOW_MIN_VERSION 0x00000000
|
#define NORCOW_MIN_VERSION 0x00000004
|
||||||
|
|
||||||
// FLASH layout
|
// FLASH layout
|
||||||
#define SECRET_START 0x0C000000
|
#define SECRET_START 0x0C000000
|
||||||
|
@ -27,7 +27,6 @@ FIRMWARE_SECTOR_START = 0x22;
|
|||||||
FIRMWARE_SECTOR_END = 0x1cf;
|
FIRMWARE_SECTOR_END = 0x1cf;
|
||||||
KERNEL_START = 0xc044000;
|
KERNEL_START = 0xc044000;
|
||||||
KERNEL_MAXSIZE = 0x80000;
|
KERNEL_MAXSIZE = 0x80000;
|
||||||
KERNEL_U_FLASH_SIZE = 0x200;
|
|
||||||
STORAGE_1_START = 0xc3a0000;
|
STORAGE_1_START = 0xc3a0000;
|
||||||
STORAGE_1_MAXSIZE = 0x20000;
|
STORAGE_1_MAXSIZE = 0x20000;
|
||||||
STORAGE_1_SECTOR_START = 0x1d0;
|
STORAGE_1_SECTOR_START = 0x1d0;
|
||||||
@ -45,9 +44,7 @@ BOOTARGS_SIZE = 0x200;
|
|||||||
FB1_RAM_START = 0x30000200;
|
FB1_RAM_START = 0x30000200;
|
||||||
FB1_RAM_SIZE = 0xbfe00;
|
FB1_RAM_SIZE = 0xbfe00;
|
||||||
MAIN_RAM_START = 0x300c0000;
|
MAIN_RAM_START = 0x300c0000;
|
||||||
MAIN_RAM_SIZE = 0xfe00;
|
MAIN_RAM_SIZE = 0x10000;
|
||||||
SAES_RAM_START = 0x300cfe00;
|
|
||||||
SAES_RAM_SIZE = 0x200;
|
|
||||||
FB2_RAM_START = 0x300d0000;
|
FB2_RAM_START = 0x300d0000;
|
||||||
FB2_RAM_SIZE = 0xc0000;
|
FB2_RAM_SIZE = 0xc0000;
|
||||||
AUX1_RAM_START = 0x30190000;
|
AUX1_RAM_START = 0x30190000;
|
||||||
|
@ -66,7 +66,6 @@
|
|||||||
#define FIRMWARE_SECTOR_END 0x1CF
|
#define FIRMWARE_SECTOR_END 0x1CF
|
||||||
#define KERNEL_START 0x0C044000
|
#define KERNEL_START 0x0C044000
|
||||||
#define KERNEL_MAXSIZE (512 * 1024) // 512 kB
|
#define KERNEL_MAXSIZE (512 * 1024) // 512 kB
|
||||||
#define KERNEL_U_FLASH_SIZE 512
|
|
||||||
|
|
||||||
#define STORAGE_1_START 0x0C3A0000
|
#define STORAGE_1_START 0x0C3A0000
|
||||||
#define STORAGE_1_MAXSIZE (16 * 8 * 1024) // 128 kB
|
#define STORAGE_1_MAXSIZE (16 * 8 * 1024) // 128 kB
|
||||||
@ -91,10 +90,7 @@
|
|||||||
#define FB1_RAM_SIZE (768 * 1024 - 512)
|
#define FB1_RAM_SIZE (768 * 1024 - 512)
|
||||||
|
|
||||||
#define MAIN_RAM_START 0x300C0000
|
#define MAIN_RAM_START 0x300C0000
|
||||||
#define MAIN_RAM_SIZE (64 * 1024 - 512)
|
#define MAIN_RAM_SIZE (64 * 1024)
|
||||||
|
|
||||||
#define SAES_RAM_START 0x300CFE00
|
|
||||||
#define SAES_RAM_SIZE 512
|
|
||||||
|
|
||||||
#define FB2_RAM_START 0x300D0000
|
#define FB2_RAM_START 0x300D0000
|
||||||
#define FB2_RAM_SIZE (768 * 1024)
|
#define FB2_RAM_SIZE (768 * 1024)
|
||||||
|
@ -24,12 +24,6 @@
|
|||||||
#include <stm32u5xx_hal_cryp.h>
|
#include <stm32u5xx_hal_cryp.h>
|
||||||
|
|
||||||
#include <sec/secure_aes.h>
|
#include <sec/secure_aes.h>
|
||||||
#include <sys/mpu.h>
|
|
||||||
#include <sys/syscall.h>
|
|
||||||
|
|
||||||
#ifdef USE_TRUSTZONE
|
|
||||||
#include <sys/trustzone.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "memzero.h"
|
#include "memzero.h"
|
||||||
|
|
||||||
@ -38,8 +32,6 @@
|
|||||||
|
|
||||||
#ifdef KERNEL_MODE
|
#ifdef KERNEL_MODE
|
||||||
|
|
||||||
#include <sys/irq.h>
|
|
||||||
|
|
||||||
static void secure_aes_load_bhk(void) {
|
static void secure_aes_load_bhk(void) {
|
||||||
TAMP->BKP0R;
|
TAMP->BKP0R;
|
||||||
TAMP->BKP1R;
|
TAMP->BKP1R;
|
||||||
@ -76,8 +68,18 @@ static secbool is_key_supported(secure_aes_keysel_t key) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if NORCOW_MIN_VERSION <= 5
|
||||||
#ifdef SYSCALL_DISPATCH
|
#ifdef SYSCALL_DISPATCH
|
||||||
|
|
||||||
|
#include <sys/mpu.h>
|
||||||
|
#include <sys/syscall.h>
|
||||||
|
|
||||||
|
#ifdef USE_TRUSTZONE
|
||||||
|
#include <sys/trustzone.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <sys/irq.h>
|
||||||
|
|
||||||
__attribute__((section(".udata")))
|
__attribute__((section(".udata")))
|
||||||
uint32_t saes_input[SAES_DATA_SIZE_WITH_UPRIV_KEY / sizeof(uint32_t)];
|
uint32_t saes_input[SAES_DATA_SIZE_WITH_UPRIV_KEY / sizeof(uint32_t)];
|
||||||
|
|
||||||
@ -220,13 +222,16 @@ secbool unpriv_encrypt(const uint8_t* input, size_t size, uint8_t* output,
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
secbool secure_aes_ecb_encrypt_hw(const uint8_t* input, size_t size,
|
secbool secure_aes_ecb_encrypt_hw(const uint8_t* input, size_t size,
|
||||||
uint8_t* output, secure_aes_keysel_t key) {
|
uint8_t* output, secure_aes_keysel_t key) {
|
||||||
|
#if NORCOW_MIN_VERSION <= 5
|
||||||
#ifdef SYSCALL_DISPATCH
|
#ifdef SYSCALL_DISPATCH
|
||||||
if (key == SECURE_AES_KEY_XORK_SN) {
|
if (key == SECURE_AES_KEY_XORK_SN) {
|
||||||
return unpriv_encrypt(input, size, output, key);
|
return unpriv_encrypt(input, size, output, key);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (sectrue != is_key_supported(key)) {
|
if (sectrue != is_key_supported(key)) {
|
||||||
|
@ -9,7 +9,6 @@ MEMORY {
|
|||||||
MAIN_RAM (wal) : ORIGIN = MAIN_RAM_START, LENGTH = MAIN_RAM_SIZE
|
MAIN_RAM (wal) : ORIGIN = MAIN_RAM_START, LENGTH = MAIN_RAM_SIZE
|
||||||
AUX1_RAM (wal) : ORIGIN = AUX1_RAM_START, LENGTH = AUX1_RAM_SIZE
|
AUX1_RAM (wal) : ORIGIN = AUX1_RAM_START, LENGTH = AUX1_RAM_SIZE
|
||||||
BOOT_ARGS (wal) : ORIGIN = BOOTARGS_START, LENGTH = BOOTARGS_SIZE
|
BOOT_ARGS (wal) : ORIGIN = BOOTARGS_START, LENGTH = BOOTARGS_SIZE
|
||||||
SAES_RAM (wal) : ORIGIN = SAES_RAM_START, LENGTH = SAES_RAM_SIZE
|
|
||||||
FB1_RAM (wal) : ORIGIN = FB1_RAM_START, LENGTH = FB1_RAM_SIZE
|
FB1_RAM (wal) : ORIGIN = FB1_RAM_START, LENGTH = FB1_RAM_SIZE
|
||||||
FB2_RAM (wal) : ORIGIN = FB2_RAM_START, LENGTH = FB2_RAM_SIZE
|
FB2_RAM (wal) : ORIGIN = FB2_RAM_START, LENGTH = FB2_RAM_SIZE
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@ MEMORY {
|
|||||||
MAIN_RAM (wal) : ORIGIN = MAIN_RAM_START, LENGTH = MAIN_RAM_SIZE
|
MAIN_RAM (wal) : ORIGIN = MAIN_RAM_START, LENGTH = MAIN_RAM_SIZE
|
||||||
AUX1_RAM (wal) : ORIGIN = AUX1_RAM_START, LENGTH = AUX1_RAM_SIZE
|
AUX1_RAM (wal) : ORIGIN = AUX1_RAM_START, LENGTH = AUX1_RAM_SIZE
|
||||||
BOOT_ARGS (wal) : ORIGIN = BOOTARGS_START, LENGTH = BOOTARGS_SIZE
|
BOOT_ARGS (wal) : ORIGIN = BOOTARGS_START, LENGTH = BOOTARGS_SIZE
|
||||||
SAES_RAM (wal) : ORIGIN = SAES_RAM_START, LENGTH = SAES_RAM_SIZE
|
|
||||||
FB1_RAM (wal) : ORIGIN = FB1_RAM_START, LENGTH = FB1_RAM_SIZE
|
FB1_RAM (wal) : ORIGIN = FB1_RAM_START, LENGTH = FB1_RAM_SIZE
|
||||||
FB2_RAM (wal) : ORIGIN = FB2_RAM_START, LENGTH = FB2_RAM_SIZE
|
FB2_RAM (wal) : ORIGIN = FB2_RAM_START, LENGTH = FB2_RAM_SIZE
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,6 @@ MEMORY {
|
|||||||
|
|
||||||
MAIN_RAM (wal) : ORIGIN = MAIN_RAM_START, LENGTH = MAIN_RAM_SIZE
|
MAIN_RAM (wal) : ORIGIN = MAIN_RAM_START, LENGTH = MAIN_RAM_SIZE
|
||||||
BOOT_ARGS (wal) : ORIGIN = BOOTARGS_START, LENGTH = BOOTARGS_SIZE
|
BOOT_ARGS (wal) : ORIGIN = BOOTARGS_START, LENGTH = BOOTARGS_SIZE
|
||||||
SAES_RAM (wal) : ORIGIN = SAES_RAM_START, LENGTH = SAES_RAM_SIZE
|
|
||||||
FB1_RAM (wal) : ORIGIN = FB1_RAM_START, LENGTH = FB1_RAM_SIZE
|
FB1_RAM (wal) : ORIGIN = FB1_RAM_START, LENGTH = FB1_RAM_SIZE
|
||||||
FB2_RAM (wal) : ORIGIN = FB2_RAM_START, LENGTH = FB2_RAM_SIZE
|
FB2_RAM (wal) : ORIGIN = FB2_RAM_START, LENGTH = FB2_RAM_SIZE
|
||||||
}
|
}
|
||||||
@ -15,11 +14,6 @@ MEMORY {
|
|||||||
_stack_section_start = ADDR(.stack);
|
_stack_section_start = ADDR(.stack);
|
||||||
_stack_section_end = ADDR(.stack) + SIZEOF(.stack);
|
_stack_section_end = ADDR(.stack) + SIZEOF(.stack);
|
||||||
|
|
||||||
|
|
||||||
ustack_base = ADDR(.udata) + 512;
|
|
||||||
_sustack = ADDR(.udata) + 256;
|
|
||||||
_eustack = ustack_base;
|
|
||||||
|
|
||||||
_data_section_loadaddr = LOADADDR(.data);
|
_data_section_loadaddr = LOADADDR(.data);
|
||||||
_data_section_start = ADDR(.data);
|
_data_section_start = ADDR(.data);
|
||||||
_data_section_end = ADDR(.data) + SIZEOF(.data);
|
_data_section_end = ADDR(.data) + SIZEOF(.data);
|
||||||
@ -39,13 +33,10 @@ _accessible_ram_1_end = MCU_SRAM4 + MCU_SRAM4_SIZE;
|
|||||||
_bootargs_ram_start = BOOTARGS_START;
|
_bootargs_ram_start = BOOTARGS_START;
|
||||||
_bootargs_ram_end = BOOTARGS_START + BOOTARGS_SIZE;
|
_bootargs_ram_end = BOOTARGS_START + BOOTARGS_SIZE;
|
||||||
|
|
||||||
_codelen = SIZEOF(.vendorheader) + SIZEOF(.header) + SIZEOF(.flash) + SIZEOF(.uflash) + SIZEOF(.data) + SIZEOF(.confidential);
|
_codelen = SIZEOF(.vendorheader) + SIZEOF(.header) + SIZEOF(.flash) + SIZEOF(.data) + SIZEOF(.confidential);
|
||||||
_flash_start = ORIGIN(FLASH);
|
_flash_start = ORIGIN(FLASH);
|
||||||
_flash_end = ORIGIN(FLASH) + LENGTH(FLASH);
|
_flash_end = ORIGIN(FLASH) + LENGTH(FLASH);
|
||||||
|
|
||||||
_uflash_start = ADDR(.uflash);
|
|
||||||
_uflash_end = ADDR(.uflash) + SIZEOF(.uflash);
|
|
||||||
|
|
||||||
SECTIONS {
|
SECTIONS {
|
||||||
.vendorheader : ALIGN(4) {
|
.vendorheader : ALIGN(4) {
|
||||||
KEEP(*(.vendorheader))
|
KEEP(*(.vendorheader))
|
||||||
@ -87,23 +78,11 @@ SECTIONS {
|
|||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
} >MAIN_RAM
|
} >MAIN_RAM
|
||||||
|
|
||||||
/* unprivileged data and stack for SAES */
|
|
||||||
.udata : ALIGN(512) {
|
|
||||||
*(.udata*);
|
|
||||||
. = ALIGN(256);
|
|
||||||
. = 256; /* Overflow causes UsageFault */
|
|
||||||
} >SAES_RAM
|
|
||||||
|
|
||||||
.confidential : ALIGN(512) {
|
.confidential : ALIGN(512) {
|
||||||
*(.confidential*);
|
*(.confidential*);
|
||||||
. = ALIGN(512);
|
. = ALIGN(512);
|
||||||
} >MAIN_RAM AT>FLASH
|
} >MAIN_RAM AT>FLASH
|
||||||
|
|
||||||
.uflash : ALIGN(512) {
|
|
||||||
*(.uflash*);
|
|
||||||
. = ALIGN(COREAPP_ALIGNMENT);
|
|
||||||
} >FLASH AT>FLASH
|
|
||||||
|
|
||||||
.fb1 : ALIGN(4) {
|
.fb1 : ALIGN(4) {
|
||||||
*(.fb1*);
|
*(.fb1*);
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
@ -8,7 +8,6 @@ MEMORY {
|
|||||||
MAIN_RAM (wal) : ORIGIN = MAIN_RAM_START, LENGTH = MAIN_RAM_SIZE
|
MAIN_RAM (wal) : ORIGIN = MAIN_RAM_START, LENGTH = MAIN_RAM_SIZE
|
||||||
AUX1_RAM (wal) : ORIGIN = AUX1_RAM_START, LENGTH = AUX1_RAM_SIZE
|
AUX1_RAM (wal) : ORIGIN = AUX1_RAM_START, LENGTH = AUX1_RAM_SIZE
|
||||||
BOOT_ARGS (wal) : ORIGIN = BOOTARGS_START, LENGTH = BOOTARGS_SIZE
|
BOOT_ARGS (wal) : ORIGIN = BOOTARGS_START, LENGTH = BOOTARGS_SIZE
|
||||||
SAES_RAM (wal) : ORIGIN = SAES_RAM_START, LENGTH = SAES_RAM_SIZE
|
|
||||||
FB1_RAM (wal) : ORIGIN = FB1_RAM_START, LENGTH = FB1_RAM_SIZE
|
FB1_RAM (wal) : ORIGIN = FB1_RAM_START, LENGTH = FB1_RAM_SIZE
|
||||||
FB2_RAM (wal) : ORIGIN = FB2_RAM_START, LENGTH = FB2_RAM_SIZE
|
FB2_RAM (wal) : ORIGIN = FB2_RAM_START, LENGTH = FB2_RAM_SIZE
|
||||||
}
|
}
|
||||||
|
@ -143,19 +143,29 @@ _Static_assert(NORCOW_SECTOR_SIZE == STORAGE_2_MAXSIZE, "norcow misconfigured");
|
|||||||
|
|
||||||
#ifdef KERNEL
|
#ifdef KERNEL
|
||||||
|
|
||||||
|
extern uint32_t _codelen;
|
||||||
|
#define KERNEL_SIZE (uint32_t) & _codelen
|
||||||
|
#define KERNEL_FLASH_START KERNEL_START
|
||||||
|
|
||||||
|
#if NORCOW_MIN_VERSION <= 5
|
||||||
extern uint8_t _uflash_start;
|
extern uint8_t _uflash_start;
|
||||||
extern uint8_t _uflash_end;
|
extern uint8_t _uflash_end;
|
||||||
#define KERNEL_FLASH_U_START (uint32_t) & _uflash_start
|
#define KERNEL_FLASH_U_START (uint32_t) & _uflash_start
|
||||||
#define KERNEL_FLASH_U_SIZE ((uint32_t) & _uflash_end - KERNEL_FLASH_U_START)
|
#define KERNEL_FLASH_U_SIZE ((uint32_t) & _uflash_end - KERNEL_FLASH_U_START)
|
||||||
|
|
||||||
extern uint32_t _codelen;
|
|
||||||
#define KERNEL_SIZE (uint32_t) & _codelen
|
|
||||||
|
|
||||||
#define KERNEL_FLASH_START KERNEL_START
|
|
||||||
#define KERNEL_FLASH_SIZE (KERNEL_SIZE - KERNEL_FLASH_U_SIZE)
|
#define KERNEL_FLASH_SIZE (KERNEL_SIZE - KERNEL_FLASH_U_SIZE)
|
||||||
|
|
||||||
#define COREAPP_FLASH_START \
|
#define COREAPP_FLASH_START \
|
||||||
(COREAPP_CODE_ALIGN(KERNEL_FLASH_START + KERNEL_SIZE) - KERNEL_FLASH_U_SIZE)
|
(COREAPP_CODE_ALIGN(KERNEL_FLASH_START + KERNEL_SIZE) - KERNEL_FLASH_U_SIZE)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define KERNEL_FLASH_SIZE KERNEL_SIZE
|
||||||
|
|
||||||
|
#define COREAPP_FLASH_START \
|
||||||
|
(COREAPP_CODE_ALIGN(KERNEL_FLASH_START + KERNEL_SIZE))
|
||||||
|
#endif
|
||||||
|
|
||||||
#define COREAPP_FLASH_SIZE \
|
#define COREAPP_FLASH_SIZE \
|
||||||
(FIRMWARE_MAXSIZE - (COREAPP_FLASH_START - FIRMWARE_START))
|
(FIRMWARE_MAXSIZE - (COREAPP_FLASH_START - FIRMWARE_START))
|
||||||
|
|
||||||
@ -401,7 +411,9 @@ mpu_mode_t mpu_reconfig(mpu_mode_t mode) {
|
|||||||
// REGION ADDRESS SIZE TYPE WRITE UNPRIV
|
// REGION ADDRESS SIZE TYPE WRITE UNPRIV
|
||||||
#ifdef KERNEL
|
#ifdef KERNEL
|
||||||
case MPU_MODE_SAES:
|
case MPU_MODE_SAES:
|
||||||
|
#ifdef SAES_RAM_START
|
||||||
SET_REGION( 7, SAES_RAM_START, SAES_RAM_SIZE, SRAM, YES, YES ); // Unprivileged kernel SRAM
|
SET_REGION( 7, SAES_RAM_START, SAES_RAM_SIZE, SRAM, YES, YES ); // Unprivileged kernel SRAM
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user