@@ -17,6 +17,7 @@ This README describes configuration of supported targets.
1717* [ Microchip SAME51] ( #microchip-same51 )
1818* [ Nordic nRF52840] ( #nordic-nrf52840 )
1919* [ Nordic nRF5340] ( #nordic-nrf5340 )
20+ * [ Nordic nRF54L15] ( #nordic-nrf54l15 )
2021* [ NXP iMX-RT] ( #nxp-imx-rt )
2122* [ NXP Kinetis] ( #nxp-kinetis )
2223* [ NXP LPC54xxx] ( #nxp-lpc54xxx )
@@ -4060,6 +4061,120 @@ c
40604061```
40614062
40624063
4064+ ## Nordic nRF54L15
4065+
4066+ Tested with the Nordic nRF54L15-DK. This device features a 128MHz Arm Cortex-M33 application
4067+ processor with TrustZone support, a 128MHz RISC-V coprocessor (VPR) used as a SoftPeripheral,
4068+ 1524KB of RRAM (Resistive RAM), and 256KB of RAM. wolfBoot runs on the Cortex-M33 only and does
4069+ not interact with the RISC-V coprocessor.
4070+
4071+ Two configurations are available at ` config/examples ` :
4072+
4073+ - ` nrf54l15.config ` : TrustZone disabled; wolfBoot and the application always run in secure mode.
4074+ Delta updates are enabled.
4075+
4076+ - ` nrf54l15-wolfcrypt-tz.config ` : TrustZone enabled; wolfBoot runs in secure mode and boots the
4077+ application as non-secure code. Includes a non-secure callable (NSC) wolfPKCS11 API for
4078+ cryptographic operations via wolfCrypt, and a secure keyvault managed by wolfBoot. The update
4079+ partition is in secure memory and is intended to be written via wolfBoot's NSC veneers from the
4080+ non-secure application. See the "NSC API" section in ` docs/API.md ` .
4081+
4082+ ### Flash Memory Layout
4083+
4084+ #### nrf54l15.config
4085+
4086+ ```
4087+ 0x00000000 - 0x0000FFFF wolfBoot (64 KB)
4088+ 0x00010000 - 0x000C5FFF Boot partition (728 KB)
4089+ 0x000C6000 - 0x0017BFFF Update partition (728 KB)
4090+ 0x0017C000 - 0x0017CFFF Swap area (4 KB)
4091+ ```
4092+
4093+ #### nrf54l15-wolfcrypt-tz.config
4094+
4095+ ```
4096+ 0x00000000 - 0x0004EFFF wolfBoot (316 KB) secure
4097+ 0x0004F000 - 0x00064FFF Keyvault (88 KB) secure
4098+ 0x00065000 - 0x00065FFF NSC region (4 KB) non-secure callable
4099+ 0x00066000 - 0x000F0FFF Boot partition (556 KB) non-secure
4100+ 0x000F1000 - 0x0017BFFF Update partition (556 KB) secure
4101+ 0x0017C000 - 0x0017CFFF Swap area (4 KB) secure
4102+ ```
4103+
4104+ ### UART
4105+
4106+ Debug output is available on UART20, connected to the J-Link VCOM port (TX=P1.4, RX=P1.5).
4107+ A secondary UART (UART30, TX=P0.0, RX=P0.1) is reserved for the ` UART_FLASH ` feature.
4108+
4109+ ### Building
4110+
4111+ ``` sh
4112+ cp config/examples/nrf54l15.config .config
4113+ make clean
4114+ make
4115+ ```
4116+
4117+ Or, for the TrustZone + wolfCrypt variant:
4118+
4119+ ``` sh
4120+ cp config/examples/nrf54l15-wolfcrypt-tz.config .config
4121+ make clean
4122+ make
4123+ ```
4124+
4125+ ### Flashing
4126+
4127+ Flash the factory image using JLink:
4128+
4129+ ```
4130+ JLinkExe -device nRF54L15_xxAA -if SWD -speed 4000 -autoconnect 1
4131+ loadbin factory.bin 0x0
4132+ rnh
4133+ ```
4134+
4135+ ### Testing an Update
4136+
4137+ Sign the test application as version 2, then write the update trigger magic (` pBOOT ` )
4138+ at the end of the partition.
4139+
4140+ #### nrf54l15.config (partition size 0xB6000)
4141+
4142+ ``` sh
4143+ tools/keytools/sign --ecc384 --sha384 test-app/image.bin wolfboot_signing_private_key.der 2
4144+ echo -n " pBOOT" > trigger_magic.bin
4145+ ./tools/bin-assemble/bin-assemble \
4146+ update.bin \
4147+ 0x0 test-app/image_v2_signed.bin \
4148+ 0xB5FFB trigger_magic.bin
4149+ ```
4150+
4151+ Flash the assembled image to the update partition:
4152+
4153+ ```
4154+ JLinkExe -device nRF54L15_xxAA -if SWD -speed 4000 -autoconnect 1
4155+ loadbin update.bin 0xC6000
4156+ rnh
4157+ ```
4158+
4159+ #### nrf54l15-wolfcrypt-tz.config (partition size 0x8B000)
4160+
4161+ ``` sh
4162+ tools/keytools/sign --ecc384 --sha384 test-app/image.bin wolfboot_signing_private_key.der 2
4163+ echo -n " pBOOT" > trigger_magic.bin
4164+ ./tools/bin-assemble/bin-assemble \
4165+ update.bin \
4166+ 0x0 test-app/image_v2_signed.bin \
4167+ 0x8AFFB trigger_magic.bin
4168+ ```
4169+
4170+ Flash the assembled image to the update partition:
4171+
4172+ ```
4173+ JLinkExe -device nRF54L15_xxAA -if SWD -speed 4000 -autoconnect 1
4174+ loadbin update.bin 0xF1000
4175+ rnh
4176+ ```
4177+
40634178## Simulated
40644179
40654180You can create a simulated target that uses files to mimic an internal and
0 commit comments