From 71035c3e0ce398cd3e32b135edaed30be0b18834 Mon Sep 17 00:00:00 2001 From: Stefano Stabellini Date: Fri, 26 Jul 2019 16:36:45 -0700 Subject: Update uboot script generator Signed-off-by: Stefano Stabellini --- docker-extras/uboot-script-gen | 56 ++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 27 deletions(-) (limited to 'docker-extras/uboot-script-gen') diff --git a/docker-extras/uboot-script-gen b/docker-extras/uboot-script-gen index ebb0f7a..bd90118 100644 --- a/docker-extras/uboot-script-gen +++ b/docker-extras/uboot-script-gen @@ -1,8 +1,5 @@ #!/bin/bash -# LOAD_CMD="tftpb" -# LOAD_CMD="load scsi 0:1" - offset=$((2*1024*1024)) filesize=0 @@ -45,19 +42,26 @@ function device_tree_editing() local device_tree_addr=$1 echo "fdt addr $device_tree_addr" >> $UBOOT_SOURCE - echo "fdt resize" >> $UBOOT_SOURCE + echo "fdt resize 1024" >> $UBOOT_SOURCE echo "fdt set /chosen \#address-cells <0x2>" >> $UBOOT_SOURCE echo "fdt set /chosen \#size-cells <0x2>" >> $UBOOT_SOURCE echo "fdt set /chosen xen,xen-bootargs \"console=dtuart dtuart=serial0 dom0_mem=700M dom0_max_vcpus=1 bootscrub=0 serrors=forward vwfi=native sched=null\"" >> $UBOOT_SOURCE echo "fdt mknod /chosen dom0" >> $UBOOT_SOURCE echo "fdt set /chosen/dom0 compatible \"xen,linux-zimage\" \"xen,multiboot-module\"" >> $UBOOT_SOURCE echo "fdt set /chosen/dom0 reg <0x0 "$dom0_kernel_addr" 0x0 "$dom0_kernel_size">" >> $UBOOT_SOURCE - if test "$LOAD_CMD" = "tftpb" - then - echo "fdt set /chosen/dom0 bootargs \"console=hvc0 earlycon=xen earlyprintk=xen\"" >> $UBOOT_SOURCE - else - echo "fdt set /chosen/dom0 bootargs \"console=hvc0 earlycon=xen earlyprintk=xen root=/dev/mmcblk0p2\"" >> $UBOOT_SOURCE - fi + if test "$LOAD_CMD" = "tftpb" + then + echo "fdt set /chosen/dom0 bootargs \"console=hvc0 earlycon=xen earlyprintk=xen root=/dev/ram0\"" >> $UBOOT_SOURCE + if test $dom0_ramdisk_addr != "-" + then + echo "fdt mknod /chosen dom0-ramdisk" >> $UBOOT_SOURCE + echo "fdt set /chosen/dom0-ramdisk compatible \"xen,linux-initrd\" \"xen,multiboot-module\"" >> $UBOOT_SOURCE + echo "fdt set /chosen/dom0-ramdisk reg <0x0 "$dom0_ramdisk_addr" 0x0 "$dom0_ramdisk_size">" >> $UBOOT_SOURCE + fi + else + echo "fdt set /chosen/dom0 bootargs \"console=hvc0 earlycon=xen earlyprintk=xen root=/dev/mmcblk0p2\"" >> $UBOOT_SOURCE + fi + i=0 while test $i -lt $NUM_DOMUS do @@ -131,28 +135,26 @@ function check_compressed_file_type() rm -f $UBOOT_SOURCE $UBOOT_SCRIPT memaddr=$(( $MEMORY_START + $offset )) memaddr=`printf "0x%X\n" $memaddr` - -if [[ $LOAD_CMD = *scsi* ]] -then - echo "scsi scan" >> $UBOOT_SOURCE -fi +uboot_addr=$memaddr +# 2MB are enough for a uboot script +memaddr=$(( $memaddr + $offset )) +memaddr=`printf "0x%X\n" $memaddr` check_compressed_file_type $XEN "MS-DOS executable" xen_addr=$memaddr -mkimage -A arm64 -T kernel -C none -a $xen_addr -e $xen_addr -d $XEN "$XEN".uboot &> /dev/null -load_file "$XEN".uboot +load_file "$XEN" check_compressed_file_type $DOM0_KERNEL "MS-DOS executable" dom0_kernel_addr=$memaddr load_file $DOM0_KERNEL -dom0_kernel_size=$(( $memaddr - $dom0_kernel_addr )) +dom0_kernel_size=$filesize if test "$DOM0_RAMDISK" && [[ $LOAD_CMD = "tftpb" ]] then check_compressed_file_type $DOM0_RAMDISK "cpio archive" dom0_ramdisk_addr=$memaddr - mkimage -A arm64 -T ramdisk -C gzip -a $dom0_ramdisk_addr -e $dom0_ramdisk_addr -d $DOM0_RAMDISK "$DOM0_RAMDISK".uboot &> /dev/null - load_file "$DOM0_RAMDISK".uboot + load_file "$DOM0_RAMDISK" + dom0_ramdisk_size=$filesize else dom0_ramdisk_addr="-" fi @@ -186,17 +188,17 @@ device_tree_addr=$memaddr load_file $DEVICE_TREE device_tree_editing $device_tree_addr -memaddr=$(( $MEMORY_END - $memaddr )) +# disable device tree reloation +echo "setenv fdt_high 0xffffffffffffffff" >> $UBOOT_SOURCE +echo "booti $xen_addr - $device_tree_addr" >> $UBOOT_SOURCE +mkimage -A arm64 -T script -C none -a $uboot_addr -e $uboot_addr -d $UBOOT_SOURCE "$UBOOT_SCRIPT" &> /dev/null + +memaddr=$(( $MEMORY_END - $memaddr - $offset )) if test $memaddr -lt 0 then echo Error, not enough memory to load all binaries exit 1 fi -echo "bootm $xen_addr $dom0_ramdisk_addr $device_tree_addr" >> $UBOOT_SOURCE - -memaddr=$(( $memaddr + $offset + $offset )) -memaddr=`printf "0x%X\n" $memaddr` -uboot_addr="$memaddr" -mkimage -A arm64 -T script -C none -a $uboot_addr -e $uboot_addr -d $UBOOT_SOURCE "$UBOOT_SCRIPT" &> /dev/null +echo "Generated uboot script $UBOOT_SCRIPT, to be loaded at address $uboot_addr:" echo "$LOAD_CMD $uboot_addr $UBOOT_SCRIPT; source $uboot_addr" -- cgit v1.2.3