mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #11594 from OpenNuvoton/nuvoton_m2351_partition-memory-pelion
M2351: Pre-build secure image/lib to favor pelion applicationpull/12010/head
commit
a8ee2d8c7d
File diff suppressed because it is too large
Load Diff
|
@ -1,14 +1,15 @@
|
||||||
The M2351 is a TrustZone target that requires two codes: secure and nonsecure. Secure code runs first to set up the secure environment and then brings up the nonsecure code. `NuMaker-mbed-TZ-secure-example.hex` is the pre-built secure image, and `cmse_lib.o` is its accompanying
|
The M2351 is a TrustZone target that requires two programs: secure and nonsecure.
|
||||||
secure gateway library, which exports secure functions to nonsecure code. It is built from the [non-PSA secure code template](https://github.com/OpenNuvoton/NuMaker-mbed-TZ-secure-example). Because secure and nonsecure code may start at an address other than `0x0`, we have chosen `.hex` rather than `.bin` as the output format.
|
Secure program runs first to set up the secure environment and then brings up the nonsecure program. `NuMaker-mbed-TZ-secure-example.hex` is the pre-built secure image, and `cmse_lib.o` is its accompanying secure gateway library, which exports secure functions to nonsecure program.
|
||||||
|
It is built from the [non-PSA secure program template](https://github.com/OpenNuvoton/NuMaker-mbed-TZ-secure-example). Because secure program and nonsecure program may start at an address other than `0x0`, we have chosen `.hex` rather than `.bin` as the output format.
|
||||||
|
|
||||||
## Hardware partition
|
## Hardware partition
|
||||||
|
|
||||||
On TrustZone targets, you need to partition the hardware first for secure code to run on secure world and nonsecure code to run on nonsecure world.
|
On TrustZone targets, you need to partition the hardware first for secure program to run on secure world and nonsecure program to run on nonsecure world.
|
||||||
|
|
||||||
The pre-built secure code has the following hardware partition:
|
The pre-built secure program will set up the following hardware partition:
|
||||||
|
|
||||||
- Flash (512KiB in total): 256KiB for secure and 256KiB for nonsecure.
|
- Flash (512KiB in total): 64KiB for secure and 448KiB for nonsecure.
|
||||||
- SRAM (96KiB in total): 32KiB for secure and 64KiB for nonsecure.
|
- SRAM (96KiB in total): 8KiB for secure and 88KiB for nonsecure.
|
||||||
- Peripherals: Most are configured to nonsecure except the following, which are hardwired or reserved:
|
- Peripherals: Most are configured to nonsecure except the following, which are hardwired or reserved:
|
||||||
- **SYS/CLK** hardwired to secure. Accessible to nonsecure through a secure gateway.
|
- **SYS/CLK** hardwired to secure. Accessible to nonsecure through a secure gateway.
|
||||||
- **FMC** hardwired to secure. Accessible to nonsecure through a secure gateway.
|
- **FMC** hardwired to secure. Accessible to nonsecure through a secure gateway.
|
||||||
|
@ -20,13 +21,22 @@ The pre-built secure code has the following hardware partition:
|
||||||
- **PDMA1** configured to nonsecure. Implements nonsecure asynchronous transfer.
|
- **PDMA1** configured to nonsecure. Implements nonsecure asynchronous transfer.
|
||||||
- **TRNG** configured to secure. Accessible to nonsecure through a secure gateway.
|
- **TRNG** configured to secure. Accessible to nonsecure through a secure gateway.
|
||||||
|
|
||||||
## Pre-built secure code files
|
In this memory partition, secure program is the most simplified.
|
||||||
|
Then non-secure program can make use of the most memory available for its large application like Pelion.
|
||||||
|
|
||||||
|
To regenerate the default secure program, in [non-PSA secure program template](https://github.com/OpenNuvoton/NuMaker-mbed-TZ-secure-example), run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ mbed compile -m NU_PFM_M2351_NPSA_S -t ARMC6 --profile release
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pre-built secure program files
|
||||||
|
|
||||||
- NuMaker-mbed-TZ-secure-example.hex
|
- NuMaker-mbed-TZ-secure-example.hex
|
||||||
Pre-built secure image generated in non-PSA secure target build and to combine with non-secure image in non-PSA non-secure target post-build
|
Pre-built secure image generated in non-PSA secure target build and to combine with non-secure image in non-PSA non-secure target post-build
|
||||||
- cmse_lib.o
|
- cmse_lib.o
|
||||||
Pre-built secure gateway library generated in non-PSA secure target build and to link with non-secure code in non-PSA non-secure target build
|
Pre-built secure gateway library generated in non-PSA secure target build and to link with non-secure program in non-PSA non-secure target build
|
||||||
|
|
||||||
## Reference
|
## Reference
|
||||||
|
|
||||||
Please refer to the [non-PSA secure code template](https://github.com/OpenNuvoton/NuMaker-mbed-TZ-secure-example) for details.
|
Please refer to the [non-PSA secure program template](https://github.com/OpenNuvoton/NuMaker-mbed-TZ-secure-example) for details.
|
||||||
|
|
Binary file not shown.
|
@ -8855,7 +8855,6 @@
|
||||||
"release_versions": ["5"],
|
"release_versions": ["5"],
|
||||||
"device_name": "M2351KIAAEES",
|
"device_name": "M2351KIAAEES",
|
||||||
"bootloader_supported": true,
|
"bootloader_supported": true,
|
||||||
"tickless-from-us-ticker": true,
|
|
||||||
"forced_reset_timeout": 3,
|
"forced_reset_timeout": 3,
|
||||||
"public": false
|
"public": false
|
||||||
},
|
},
|
||||||
|
@ -8873,25 +8872,29 @@
|
||||||
"components_add": ["FLASHIAP"],
|
"components_add": ["FLASHIAP"],
|
||||||
"post_binary_hook": {"function": "M2351Code.merge_secure"},
|
"post_binary_hook": {"function": "M2351Code.merge_secure"},
|
||||||
"secure_image_filename": "NuMaker-mbed-TZ-secure-example.hex",
|
"secure_image_filename": "NuMaker-mbed-TZ-secure-example.hex",
|
||||||
"mbed_rom_start" : "0x10040000",
|
"mbed_rom_start" : "0x10010000",
|
||||||
"mbed_rom_size" : "0x40000",
|
"mbed_rom_size" : "0x70000",
|
||||||
"mbed_ram_start" : "0x30008000",
|
"mbed_ram_start" : "0x30002000",
|
||||||
"mbed_ram_size" : "0x10000"
|
"mbed_ram_size" : "0x16000"
|
||||||
},
|
},
|
||||||
"NU_PFM_M2351_NPSA_S": {
|
"NU_PFM_M2351_NPSA_S": {
|
||||||
|
"overrides": {
|
||||||
|
"boot-stack-size" : "0x600"
|
||||||
|
},
|
||||||
"inherits": ["NU_PFM_M2351"],
|
"inherits": ["NU_PFM_M2351"],
|
||||||
"core": "Cortex-M23",
|
"core": "Cortex-M23",
|
||||||
"trustzone": true,
|
"trustzone": true,
|
||||||
"extra_labels_add": [
|
"extra_labels_add": [
|
||||||
"M23_S"
|
"M23_S"
|
||||||
],
|
],
|
||||||
|
"device_has_remove": ["SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "STDIO_MESSAGES"],
|
||||||
"components_add": ["FLASHIAP"],
|
"components_add": ["FLASHIAP"],
|
||||||
"deliver_to_target": "NU_PFM_M2351_NPSA_NS",
|
"deliver_to_target": "NU_PFM_M2351_NPSA_NS",
|
||||||
"delivery_dir": "TARGET_NUVOTON/TARGET_M2351/TARGET_M23_NS/TARGET_NU_PFM_M2351_NPSA_NS/TARGET_NU_PREBUILD_SECURE",
|
"delivery_dir": "TARGET_NUVOTON/TARGET_M2351/TARGET_M23_NS/TARGET_NU_PFM_M2351_NPSA_NS/TARGET_NU_PREBUILD_SECURE",
|
||||||
"mbed_rom_start" : "0x0",
|
"mbed_rom_start" : "0x0",
|
||||||
"mbed_rom_size" : "0x40000",
|
"mbed_rom_size" : "0x10000",
|
||||||
"mbed_ram_start" : "0x20000000",
|
"mbed_ram_start" : "0x20000000",
|
||||||
"mbed_ram_size" : "0x8000"
|
"mbed_ram_size" : "0x2000"
|
||||||
},
|
},
|
||||||
"NUMAKER_M252KG": {
|
"NUMAKER_M252KG": {
|
||||||
"core": "Cortex-M23",
|
"core": "Cortex-M23",
|
||||||
|
|
Loading…
Reference in New Issue