@@ -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 )
@@ -4582,6 +4583,120 @@ c
45824583```
45834584
45844585
4586+ ## Nordic nRF54L15
4587+
4588+ Tested with the Nordic nRF54L15-DK. This device features a 128MHz Arm Cortex-M33 application
4589+ processor with TrustZone support, a 128MHz RISC-V coprocessor (VPR) used as a SoftPeripheral,
4590+ 1524KB of RRAM (Resistive RAM), and 256KB of RAM. wolfBoot runs on the Cortex-M33 only and does
4591+ not interact with the RISC-V coprocessor.
4592+
4593+ Two configurations are available at ` config/examples ` :
4594+
4595+ - ` nrf54l15.config ` : TrustZone disabled; wolfBoot and the application always run in secure mode.
4596+ Delta updates are enabled.
4597+
4598+ - ` nrf54l15-wolfcrypt-tz.config ` : TrustZone enabled; wolfBoot runs in secure mode and boots the
4599+ application as non-secure code. Includes a non-secure callable (NSC) wolfPKCS11 API for
4600+ cryptographic operations via wolfCrypt, and a secure keyvault managed by wolfBoot. The update
4601+ partition is in secure memory and is intended to be written via wolfBoot's NSC veneers from the
4602+ non-secure application. See the "NSC API" section in ` docs/API.md ` .
4603+
4604+ ### Flash Memory Layout
4605+
4606+ #### nrf54l15.config
4607+
4608+ ```
4609+ 0x00000000 - 0x0000FFFF wolfBoot (64 KB)
4610+ 0x00010000 - 0x000C5FFF Boot partition (728 KB)
4611+ 0x000C6000 - 0x0017BFFF Update partition (728 KB)
4612+ 0x0017C000 - 0x0017CFFF Swap area (4 KB)
4613+ ```
4614+
4615+ #### nrf54l15-wolfcrypt-tz.config
4616+
4617+ ```
4618+ 0x00000000 - 0x0004EFFF wolfBoot (316 KB) secure
4619+ 0x0004F000 - 0x00064FFF Keyvault (88 KB) secure
4620+ 0x00065000 - 0x00065FFF NSC region (4 KB) non-secure callable
4621+ 0x00066000 - 0x000F0FFF Boot partition (556 KB) non-secure
4622+ 0x000F1000 - 0x0017BFFF Update partition (556 KB) secure
4623+ 0x0017C000 - 0x0017CFFF Swap area (4 KB) secure
4624+ ```
4625+
4626+ ### UART
4627+
4628+ Debug output is available on UART20, connected to the J-Link VCOM port (TX=P1.4, RX=P1.5).
4629+ A secondary UART (UART30, TX=P0.0, RX=P0.1) is reserved for the ` UART_FLASH ` feature.
4630+
4631+ ### Building
4632+
4633+ ``` sh
4634+ cp config/examples/nrf54l15.config .config
4635+ make clean
4636+ make
4637+ ```
4638+
4639+ Or, for the TrustZone + wolfCrypt variant:
4640+
4641+ ``` sh
4642+ cp config/examples/nrf54l15-wolfcrypt-tz.config .config
4643+ make clean
4644+ make
4645+ ```
4646+
4647+ ### Flashing
4648+
4649+ Flash the factory image using JLink:
4650+
4651+ ```
4652+ JLinkExe -device nRF54L15_xxAA -if SWD -speed 4000 -autoconnect 1
4653+ loadbin factory.bin 0x0
4654+ rnh
4655+ ```
4656+
4657+ ### Testing an Update
4658+
4659+ Sign the test application as version 2, then write the update trigger magic (` pBOOT ` )
4660+ at the end of the partition.
4661+
4662+ #### nrf54l15.config (partition size 0xB6000)
4663+
4664+ ``` sh
4665+ tools/keytools/sign --ecc384 --sha384 test-app/image.bin wolfboot_signing_private_key.der 2
4666+ echo -n " pBOOT" > trigger_magic.bin
4667+ ./tools/bin-assemble/bin-assemble \
4668+ update.bin \
4669+ 0x0 test-app/image_v2_signed.bin \
4670+ 0xB5FFB trigger_magic.bin
4671+ ```
4672+
4673+ Flash the assembled image to the update partition:
4674+
4675+ ```
4676+ JLinkExe -device nRF54L15_xxAA -if SWD -speed 4000 -autoconnect 1
4677+ loadbin update.bin 0xC6000
4678+ rnh
4679+ ```
4680+
4681+ #### nrf54l15-wolfcrypt-tz.config (partition size 0x8B000)
4682+
4683+ ``` sh
4684+ tools/keytools/sign --ecc384 --sha384 test-app/image.bin wolfboot_signing_private_key.der 2
4685+ echo -n " pBOOT" > trigger_magic.bin
4686+ ./tools/bin-assemble/bin-assemble \
4687+ update.bin \
4688+ 0x0 test-app/image_v2_signed.bin \
4689+ 0x8AFFB trigger_magic.bin
4690+ ```
4691+
4692+ Flash the assembled image to the update partition:
4693+
4694+ ```
4695+ JLinkExe -device nRF54L15_xxAA -if SWD -speed 4000 -autoconnect 1
4696+ loadbin update.bin 0xF1000
4697+ rnh
4698+ ```
4699+
45854700## Simulated
45864701
45874702You can create a simulated target that uses files to mimic an internal and
0 commit comments