Yes, SDPS and SDPV steps can be in one UUU command list. For i.MX95 the intended sequence is: first SDPS: boot -f flash.bin starts SPL, then SDPV: write -f flash.bin -skipspl and SDPV: jump complete/start U-Boot . The script examples I found use the same combined SDPS→SDPV flow without an SDPS: done between them .
What is wrong in your case is most likely the done placement, and possibly the way you invoke the script:
uuu_version 1.5.233
SDPS: boot -f flash.bin
SDPV: delay 1000
SDPV: write -f flash.bin -skipspl
SDPV: jump
Run it as a custom script file directly:
sudo /usr/bin/uuu -v ./cmd.lst
not as:
sudo /usr/bin/uuu -v -b ./cmd.lst
The -b option is documented for UUU built-in scripts such as sd , emmc , sd_all , or emmc_all , while a custom script file is normally passed directly to uuu . Also, done is described as the last command for the whole flow, so putting SDPS: done immediately after the first boot stage can make UUU stop that stage and wait for the next known USB device instead of continuing cleanly into the SDPV stage .
So I would change your file from:
SDPS: boot -f flash.bin
SDPS: done
SDPV: delay 1000
SDPV: write -f flash.bin -skipspl
SDPV: jump
SDPV: done
to:
uuu_version 1.5.233
SDPS: boot -f flash.bin
SDPV: delay 1000
SDPV: write -f flash.bin -skipspl
SDPV: jump
If it still waits at the SDPS→SDPV transition, try a newer UUU release; one i.MX95 report specifically recommends moving from uuu_1.5.201 to uuu_1.5.233 for hangs at 100% . You can also increase the stage-switch wait timeout with -T , which is the timeout for waiting for the next known USB device at a stage switch .
Use one script, but remove the intermediate done lines and run the file directly with uuu -v ./cmd.lst ; then update UUU or increase -T only if the board still does not re-enumerate into the SDPV stage.