You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 50a9985
Browse filesBrowse the repository at this point in the historyBrowse files
@@ -9877,6 +9878,76 @@ A TPM that offers both buses latches its choice from a strap while its own reset
9877
9878
9878
9879
Every FIFO and bus wait in both drivers is bounded, so a device that is absent or unpowered makes `wolfBoot_tpm2_init()` report a failure rather than wedging the bootloader in a spin loop.
9879
9880
9881
+
## Infineon PSOC Edge E8
9882
+
9883
+
The Infineon PSOC Edge E8 family (PSE8x, CAT1D) pairs a Cortex-M33 with TrustZone and a Cortex-M55 behind a Secure Enclave, which runs the boot ROM and Infineon's extended boot. wolfBoot runs on the CM33 in the Secure state as the first image extended boot launches. The port is bare metal and needs no Peripheral Driver Library or BSP. Board differences are make options, and `config/examples/psoc_e8_ai.config` describes KIT_PSE84_AI.
9884
+
9885
+
Verified on KIT_PSE84_AI (PSE846GPS2DBZC4A): boot from QSPI under the factory extended boot, ECC256 verification and handoff, A/B update with confirmation, resumption of an update interrupted mid-swap, RRAM write and erase, and the wolfCrypt test and benchmark. Booting from RRAM (`PSOC_E8_BOOT_RRAM=1`) is build-tested only. The CM55 is not started.
9886
+
9887
+
### Boot chain and memory
9888
+
9889
+
Extended boot runs the first CM33 image in place from QSPI at `0x60100000`, in MCUboot format: a 0x400-byte header, the image, and a TLV with the SHA-256 of both, with no key. `tools/scripts/psoc_e8/psoc_e8_mcuboot_wrap.py` wraps `wolfboot.bin` this way.
9890
+
9891
+
Each memory has four aliases, Secure/Non-secure by code/system bus. wolfBoot links at `0x18100400` and all `.config` addresses use the Secure code-bus QSPI alias:
9892
+
9893
+
```
9894
+
RRAM 0x02000000 NS code 0x12000000 S code 0x22000000 NS sys 0x32000000 S sys
9895
+
QSPI 0x08000000 NS code 0x18000000 S code 0x60000000 NS sys 0x70000000 S sys
`IMAGE_HEADER_SIZE=1024` keeps the application vector table on the 1 KB boundary the CM33 requires.
9904
+
9905
+
### QSPI flash
9906
+
9907
+
The HAL programs the 64 MB NOR through the SMIF MMIO command interface, using the device and 3- or 4-byte addressing that extended boot configured for XIP, which stays enabled. The flash path runs from RAM with interrupts masked, stages each page in RAM (the source is often QSPI itself), and invalidates the SMIF and CM33 caches afterwards. The test application runs from the QSPI it programs, so its flash path is also placed in RAM.
9908
+
9909
+
The NOR keeps ECC over 16-byte units and rejects a second program into a unit, so the config sets `NVM_FLASH_WRITEONCE=1`. With 256 KB sectors this costs a sector-sized RAM buffer. A rejected program leaves the part busy across a warm reset, where extended boot can no longer read it, so the HAL clears the failure flags when it sees them.
9910
+
9911
+
### Build options
9912
+
9913
+
wolfBoot does not change the clocks extended boot sets. The console is SCB2 on P6.5/P6.7, the KitProg3 COM port, at 115200 baud.
|`PSOC_E8_BOOT_RRAM`| 0 | link wolfBoot into RRAM instead of QSPI |
9925
+
|`PSOC_E8_RRAM_SLOT_SIZE`| 0x20000 | RRAM slot with `PSOC_E8_BOOT_RRAM=1`|
9926
+
9927
+
### Building and flashing
9928
+
9929
+
```sh
9930
+
cp config/examples/psoc_e8_ai.config .config
9931
+
make clean && make
9932
+
tools/scripts/psoc_e8/psoc_e8_flash.sh
9933
+
```
9934
+
9935
+
The script wraps `wolfboot.bin` and programs it and `test-app/image_v1_signed.bin` over the KitProg3, with the ModusToolbox Programming Tools OpenOCD (`MTB_PROGTOOLS`, default `/opt/Tools/ModusToolboxProgtools-1.6`). Set `KITPROG_SERIAL` if several probes are attached. This replaces the factory CM33 image, so read QSPI back first to keep the stock demo. `factory.bin` does not apply here, since it lacks the MCUboot header.
9936
+
9937
+
To test an update, sign v2 and program it into UPDATE. The v1 application triggers the update, and v2 confirms itself:
`make WOLFCRYPT_TEST=1 WOLFCRYPT_BENCHMARK=1` adds the software wolfCrypt test and benchmark to the test application. Its RNG seed is deterministic and only for testing.
9946
+
9947
+
### Booting from RRAM
9948
+
9949
+
`PSOC_E8_BOOT_RRAM=1` links wolfBoot at `0x12011400` in the RRAM user area, keeping the partitions in QSPI. Extended boot only launches it once the boot policy is reprovisioned with Infineon's Edge Protect Tools, which this port does not automate. RRAM is written in 16-byte blocks through the RRAMC indirect-write action, under the IPC and PC_LOCK locks. It has no erase, so `hal_flash_erase()` writes zeros.
9950
+
9880
9951
## Infineon AURIX TC3xx
9881
9952
9882
9953
wolfBoot supports the Infineon AURIX TC3xx family and includes a demo application for the TC375 AURIX LiteKit-V2. It can be configured to run on either the TriCore application cores or the HSM core.
0 commit comments