Hi NXP team,
I am working on an S32K328 memory layout using AB_SWAP and HSE_B, and I need clarification on how IVT locations should be treated.
From the S32K3xx Reference Manual:
In the memory map for S32K328, I see:
IVT placement
Multiple IVT addresses in AB_SWAP
Use of secondary/alternate region
Best practice
1. One IVT at any available defined address is sufficient. It doesn’t have to be primary location like 0x40_0000. It’s up to SBAF to search for valid IVT in given order.
There’s an option to use second IVT as a backup if something goes wrong during update of IVT which is typically done when enabling secure boot by BOOT_SEQ bit in Boot Configuration Word in IVT.
2. S32K328 in AB_SWAP mode has three possible locations of IVT: 0x40_0000, 0x60_0000, 0x1000_0000. SBAF searches for valid IVT in this order. The lower address, the highest priority. For example, if there’s valid IVT at 0x40_0000, SBAF will use this one and it does not check other locations.
3. It’s not necessary to keep the area reserved, you can use it for your code or data.
4. For this use case, other IVT locations can be used as a backup as mentioned earlier. It’s also discussed in Secure Boot Application Note in section “6.2 Update IVT”.
It can be downloaded from:
https://www.nxp.com/products/S32K3
Application note can be found here:
Documentation -> Secure Files -> Secure Boot Application note v0.1.1.0 (AN744511)
Associated demo project can be downloaded here:
Design Resources -> Software -> Secure Files -> SecureBootAppNoteDemo (SW745310)
Regards,
Lukas