flasher stuff
[pandora-misc.git] / flasher / doit.sh
diff --git a/flasher/doit.sh b/flasher/doit.sh
new file mode 100755 (executable)
index 0000000..a45cc95
--- /dev/null
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# Firmware flasher creator for Pandora
+# Copyright (c) 2010, GraÅžvydas Ignotas
+
+set -e
+
+out_dir="out/"
+out_opt_dir="out_opt/"
+sysf_in="in/"
+rd_input="rootfs"
+rdfile=`mktemp`
+rdfile_out="tmp/rd-ext2.bin"
+boot_scr_tmp=`mktemp`
+boot_scr_tmp2=`mktemp`
+boot_scr_tmp_scr=`mktemp`
+zipfile="pandora_flasher_v.zip"
+
+if test '!' '(' -d $rd_input -a -f ${sysf_in}x-load.bin.ift -a -f ${sysf_in}u-boot.bin \
+       -a -f ${sysf_in}uImage -a -f ${sysf_in}uImage_updater ')'
+then
+       echo "missing input files"
+       exit 1
+fi
+
+rm -rf $out_dir $out_opt_dir
+mkdir $out_dir 2>/dev/null && mkdir $out_opt_dir 2>/dev/null || true
+
+
+# files for SD boot
+cp ${sysf_in}x-load.bin.ift ${out_opt_dir}MLO
+cp ${sysf_in}u-boot.bin_updater ${out_opt_dir}u-boot.bin
+
+
+# sysf.tgz
+cd $sysf_in
+tar czvf sysf.tgz u-boot.bin uImage
+cd ..
+mv -f ${sysf_in}sysf.tgz ${out_dir}
+
+
+# rootfs
+dd if=/dev/zero of=$rdfile bs=1M count=8
+mkfs.ext2 -F $rdfile 
+sudo mount -o loop $rdfile /mnt/tmp
+sudo cp -r $rd_input/* /mnt/tmp/
+sudo umount /mnt/tmp
+cat $rdfile | gzip -9 > $rdfile_out
+rm $rdfile
+
+
+# boot.scr
+dd if=/dev/zero of=$boot_scr_tmp_scr bs=1 count=4020
+dd if=/dev/zero of=$boot_scr_tmp bs=4K count=800
+
+# 000000 - 000fff: u-boot header, the script
+dd if=script.txt of=$boot_scr_tmp_scr conv=notrunc bs=1
+# 001000 - 020fff: x-load
+dd if=$rd_input/usr/local/erasednandblk of=$boot_scr_tmp conv=notrunc bs=4K
+dd if=${sysf_in}x-load.bin.ift of=$boot_scr_tmp conv=notrunc bs=4K
+# 021000 - 320fff: uImage
+dd if=${sysf_in}uImage_updater of=$boot_scr_tmp conv=notrunc bs=4K seek=32
+# 321000 - end:    ramdisk
+cat $boot_scr_tmp $rdfile_out > $boot_scr_tmp2
+# adjust for u-boot header
+#dd if=$boot_scr_tmp2 of=$boot_scr_tmp bs=72 skip=1
+tmp/mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "script" \
+       -d $boot_scr_tmp_scr:$boot_scr_tmp2 ${out_dir}boot.scr
+rm $boot_scr_tmp $boot_scr_tmp2 $boot_scr_tmp_scr
+
+# release zip
+cd ${out_dir}
+zip -9 $zipfile sysf.tgz boot.scr
+mv -f $zipfile ../tmp/
+cd ..