Hello NXP Team,
We are currently in the design and implementation phase of adding OTA A/B swap support to an existing application running on S32K328.
This is an initial implementation where we are extending the existing software with OTA capability rather than integrating a complete FOTA framework.
Current Environment
The OTA binary is received over UART by a custom OTA CDD.
Our current Vector configuration contains MemAccM only for NvM/Fee (D-Flash). There is no MemAccM configuration for programming the application P-Flash, and we are not using Vector OTA/FOTA.
Therefore, we are considering using Mem_43_INFLS from the OTA CDD to erase and program the inactive application flash directly.
We would appreciate guidance on the following points.
Is Mem_43_INFLS the recommended low-level driver for managing OTA image programming in an A/B swap setup when not using Vector’s OTA/FOTA package?
Or should MemAccM be extended to cover P‑Flash programming even for custom OTA implementations?
After enabling HSE A/B swap:
What are the mandatory preconditions for successful execution of HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK?
For example:
Does the C40 flash controller on S32K328 support concurrent operations between D‑Flash (Fee/NvM) and P‑Flash (inactive block)?
If not, what is the recommended synchronization strategy:
Is the following architecture aligned with NXP recommendations?
UART
↓
Custom OTA CDD
↓
Mem_43_INFLS (erase/write inactive P‑Flash)
↓
Image verification
↓
HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK
↓
System reset
↓
HSE/BAF activates the passive block
We are specifically looking for guidance on whether this lightweight approach is appropriate and compliant with HSE requirements.
If there are any application notes, RTD examples, or reference implementations for custom OTA with HSE A/B swap, we would greatly appreciate your guidance.
Thank you for your support.
Best regards,
Venkatesh KV
#s32k328