aboutsummaryrefslogtreecommitdiff
path: root/docker-extras
diff options
context:
space:
mode:
authorStefano Stabellini2019-07-26 16:36:45 -0700
committerStefano Stabellini2019-08-01 14:57:24 -0700
commit71035c3e0ce398cd3e32b135edaed30be0b18834 (patch)
tree848913d480cfc9d370d8498bef15b27400d147a0 /docker-extras
parent9ab1b1d15ff41829385e65555592cac08448d1e0 (diff)
Update uboot script generator
Signed-off-by: Stefano Stabellini <stefanos@xilinx.com>
Diffstat (limited to 'docker-extras')
-rw-r--r--docker-extras/uboot-script-gen56
1 files changed, 29 insertions, 27 deletions
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"