From e81d11f1f8c3a462ca412a4d7cda3e632ef93455 Mon Sep 17 00:00:00 2001
From: Leon Hiemstra <hiemstra@astron.nl>
Date: Thu, 21 Apr 2016 13:55:27 +0000
Subject: [PATCH] added functionality to generate RBF files with bootloader
 (add --unb2_factory argument). This bootloader is necessary for Uniboard2
 factory image. See also: $RADIOHDL/libraries/io/epcs/doc/README.txt

---
 tools/quartus/run_rbf | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/tools/quartus/run_rbf b/tools/quartus/run_rbf
index f9c17ef65d..a98d2e9bbf 100755
--- a/tools/quartus/run_rbf
+++ b/tools/quartus/run_rbf
@@ -47,10 +47,14 @@ myself="${UNB}/Firmware/software/build/$(basename $0)"
 
 project=
 rev=
+arg_unb2_factory=
 
 # parse cmdline
 for arg ; do
     case ${arg} in
+        --unb2_factory)           
+           arg_unb2_factory=1
+            ;;
         --rev=*)           
            rev=`echo ${arg} | sed 's/^--rev=//'`
             ;;
@@ -110,7 +114,25 @@ echo "Bitstream_compression=on" > ${HOME}/.run_rbf_temp_options_file
 
 unb_info $0 "Converting ${quartusdir}/${project_rev}.sof to compressed Raw Binary File"
 
-unb_exec $0 quartus_cpf -c --option=${HOME}/.run_rbf_temp_options_file ${quartusdir}/${project_rev}.sof ${quartusdir}/${project_rev}.rbf
+if [ -z "${arg_unb2_factory}" ]; then
+  unb_exec $0 quartus_cpf -c --option=${HOME}/.run_rbf_temp_options_file ${quartusdir}/${project_rev}.sof ${quartusdir}/${project_rev}.rbf
+else
+  unb_info $0 "-> This is a factory image for Uniboard2: Convert .SOF -> .POF -> .HEXOUT -> .RBF"
+  # for more info see: $RADIOHDL/libraries/io/epcs/doc/README.txt
+  unb_exec $0 quartus_cpf -d EPCQL1024 -m ASx4 --option=${HOME}/.run_rbf_temp_options_file -c ${quartusdir}/${project_rev}.sof ${quartusdir}/${project_rev}.pof
+  unb_exec $0 quartus_cpf -c ${quartusdir}/${project_rev}.pof ${quartusdir}/${project_rev}.hexout
+  unb_exec $0 nios2-elf-objcopy -I ihex -O binary ${quartusdir}/${project_rev}.hexout ${quartusdir}/${project_rev}.rbf
+
+  unb_info $0 "Truncating RBF:"
+  echo "Size of .SOF is: "
+  du -h ${quartusdir}/${project_rev}.sof
+  echo "Truncating to 40M (FIXME find out if 40M is correct on different SOF files)"
+  unb_exec $0 truncate -s 40M ${quartusdir}/${project_rev}.rbf
+  echo "Deleting temp files"
+  unb_exec $0 rm -f ${quartusdir}/${project_rev}.pof
+  unb_exec $0 rm -f ${quartusdir}/${project_rev}.hexout
+fi
+
 
 if [ -n "${RADIOHDL_SVN_REVISION}" ]; then
   svn_revision=`echo ${RADIOHDL_SVN_REVISION} |cut -d' ' -f2`  # ${RADIOHDL_SVN_REVISION} looks like: "Revision: 14634"
-- 
GitLab