Skip to content

Commit 96ce8ae

Browse files
committed
[M2351] Add README.md for secure library/executable
1 parent 744f150 commit 96ce8ae

File tree

1 file changed

+36
-0
lines changed
  • targets/TARGET_NUVOTON/TARGET_M2351/TARGET_NUMAKER_PFM_M2351/TARGET_M23_NS

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Default secure code for M2351
2+
3+
M2351 is a TrustZone target which requires two codes: secure and non-secure.
4+
Secure code would run first to set up secure environment and then bring up non-secure code.
5+
`NuMaker-mbed-TZ-secure-example.hex` is the default secure code and `cmse_lib.o` is its accompanying
6+
secure gateway library which exports secure functions to non-secure code. It is built from
7+
[secure code template](https://github.com/OpenNuvoton/NuMaker-mbed-TZ-secure-example).
8+
With secure/non-secure code possibly not starting at address `0x0`, `.hex` rather than `.bin` is
9+
chosen as output format.
10+
11+
## Hardware partition
12+
13+
On TrustZone targets, it is necessary to partition the hardware first for secure/non-secure code
14+
to run on secure/non-secure worlds respectively.
15+
16+
The default secure code has the following hardware partition:
17+
- Flash (512KiB in total): 256KiB/256KiB to secure/non-secure respectively
18+
- SRAM (96KiB in total): 32KiB/64KiB to secure/non-secure respectively
19+
- Peripherals: most are configured to non-secure except the following which are hardwired or reserved:
20+
- **SYS/CLK** hardwired to secure. Accessible to non-secure through secure gateway
21+
- **FMC** hardwired to secure. Accessible to non-secure through secure gateway
22+
- **WDT** hardwired to secure. Accessible to non-secure through secure gateway
23+
- **RTC** configured to secure. Accessible to non-secure through secure gateway
24+
- **TMR0/1** hardwired to secure. Implement secure `us_ticker`/`lp_ticker` respectively
25+
- **TMR2/3** configured to non-secure. Implement non-secure `us_ticker`/`lp_ticker` respectively
26+
- **PDMA0** hardwired to secure. Implement secure asynchronous transfer
27+
- **PDMA1** configured to non-secure. Implement non-secure asynchronous transfer
28+
29+
## Flash secure/non-secure code
30+
31+
To flash secure/non-secure code on M2351, drag-n-drop `NuMaker-mbed-TZ-secure-example.hex`
32+
first and then built user program e.g. [mbed-os-example-blinky.hex](https://github.com/ARMmbed/mbed-os-example-blinky).
33+
34+
## Reference
35+
36+
Refer to [secure code template](https://github.com/OpenNuvoton/NuMaker-mbed-TZ-secure-example) for details.

0 commit comments

Comments
 (0)