
Add a -u option to specify a UPL to load. This is made available in a separate virtio device. Allow this to work even if the -B flag is provided, to allow iterating on the payload, without changing U-Boot
Signed-off-by: Simon Glass sjg@chromium.org ---
scripts/build-qemu.sh | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/scripts/build-qemu.sh b/scripts/build-qemu.sh index 10ea99982d2..b92623c9bc5 100755 --- a/scripts/build-qemu.sh +++ b/scripts/build-qemu.sh @@ -30,6 +30,7 @@ usage() { echo " -R <os> - Select OS release (e.g. 24.04)" echo " -s - Use serial only (no display)" echo " -S <seq> - Select SCT sequence-file" + echo " -u <file> - Run Universal Payload (UPL) file" echo " -w - Use word version (32-bit)" ) >&2 exit 1 } @@ -69,11 +70,14 @@ serial= # Use kvm kvm=
+# Use UPL +upl= + # Set ubdir to the build directory where you build U-Boot out-of-tree # We avoid in-tree build because it gets confusing trying different builds ubdir=${ubdir-/tmp/b}
-while getopts "a:Beko:rR:sS:w" opt; do +while getopts "a:Beko:rR:sS:u:w" opt; do case "${opt}" in a) arch=$OPTARG @@ -113,6 +117,9 @@ while getopts "a:Beko:rR:sS:w" opt; do S) seq=$OPTARG ;; + u) + upl=$OPTARG + ;; w) bitness=32 ;; @@ -140,11 +147,24 @@ update_sct_seq() { sudo losetup -d ${LOOP} }
+# Add a Universal Payload into the image +add_upl() { + if [[ -z "${upl}" ]]; then + return + fi + qemu-img create upl.img 8M + mkfs.fat upl.img + mcopy -vs -i upl.img "${upl}" ::/upl.fit +} + # Run QEMU with U-Boot run_qemu() { if [[ -n "${os_image}" ]]; then extra+=" -drive if=virtio,file=${os_image},format=raw,id=hd0" fi + if [[ -n "${upl}" ]]; then + extra+=" -drive if=virtio,file=upl.img,format=raw,id=hd0" + fi if [[ -n "${serial}" ]]; then extra+=" -display none -serial mon:stdio" else @@ -204,8 +224,9 @@ DIR=${ubdir}/${BOARD}
if [[ -n "${build}" ]]; then build_u_boot - update_sct_seq fi +update_sct_seq +add_upl
if [[ -n "${run}" ]]; then run_qemu