echo 'produktion.cmd'

mtdparts
if mmc rescan; then echo MMC gefunden; else echo MMC NICHT gefunden; fi

if true
then

nand erase.chip

# kernel image laden

if test "${CV_BOARD}" = "CV_34_39_500"
then
    cv_kernel=uImage.CV_34_39_500
elif test "${CV_BOARD}" = "CV_34_39_500A"
then
    cv_kernel=uImage.CV_34_39_500A
else
    cv_kernel=uImage.CV_34_39_500B
fi

load mmc 0:1 $loadaddr STANDARD_$cv_kernel

# env anpassen:

setenv my_kernel0_size $filesize
# nicht mehr:
#setenv boot_os 1 # falcon mode setzen da dieser beim naechsten boot verwendet werden soll
setenv boot_os 0
#echo boot_os auf 1 gesetzt.
# my_boot_switch = 0 bedeutet Partitionen NAND.rootfs0, NAND.kernel0 und NAND.kparams0 aktiv, sonst NAND.rootfs1, NAND.kernel1 und NAND.kparams1

############################################################
# BEGIN generated by Java Tool MtdParts

setenv my_rootfs0_num 11
setenv my_rootfs0_name NAND.rootfs0
setenv my_rootfs1_num 12
setenv my_rootfs1_name NAND.rootfs1
setenv my_kernel0_num 7
setenv my_kernel0_name NAND.kernel0
setenv my_kernel1_num 8
setenv my_kernel1_name NAND.kernel1
setenv my_kparams0_num 9
setenv my_kparams0_name NAND.kparams0
setenv my_kparams1_num 10
setenv my_kparams1_name NAND.kparams1
setenv my_data_num 13
setenv my_data_name NAND.data

# END generated by Java Tool MtdParts
############################################################


# my_assign:
#  Argumente:
#   my_assign_1: lname
#   my_assign_2: rname
#  Benutzte temporaere Var.:
#   my_assign_t1, my_assign_t2
#  Nachbed.: printenv ${my_assign_1} gibt dasselbe aus wie printenv ${my_assign_2}
setenv my_assign 'setenv my_assign_t1 setenv my_assign_t2 \$${my_assign_2}; run my_assign_t1; setenv ${my_assign_1} ${my_assign_t2}'


# my_follow_boot_switch_gen:
#  Argumente:
#   my_follow_boot_switch_gen_subject: rootfs | kernel | kparams
#   my_follow_boot_switch_gen_attr: num | name
#  Nachbed.:
#   Ausgabe von printenv my_${my_follow_boot_switch_gen_subject}_${my_follow_boot_switch_gen_attr} ist gleich zu Ausgabe von
#   printenv my_${my_follow_boot_switch_gen_subject}${my_boot_switch}_${my_follow_boot_switch_gen_attr}
setenv my_follow_boot_switch_gen 'setenv my_assign_1 my_${my_follow_boot_switch_gen_subject}_${my_follow_boot_switch_gen_attr}; setenv my_assign_2 my_${my_follow_boot_switch_gen_subject}${my_boot_switch}_${my_follow_boot_switch_gen_attr}; run my_assign'

# my_follow_boot_switch_gen1:
#  Argumente: my_follow_boot_switch_gen_subject # kein eigentliches Argument, sondern uebernommen aus logisch uebergeordneter aufrufender funktion
#  Nachbed.:
#   Fuer alle Attribute ${attr} in {num, name} ist die Ausgabe von
#   printenv my_${my_follow_boot_switch_gen_subject}_${attr} gleich zur Ausgabe von
#   printenv my_${my_follow_boot_switch_gen_subject}${my_boot_switch}_${attr}
setenv my_follow_boot_switch_gen1 'setenv my_follow_boot_switch_gen_attr num; run my_follow_boot_switch_gen; setenv my_follow_boot_switch_gen_attr name; run my_follow_boot_switch_gen'

# my_follow_boot_switch:
#  Nachbed.:
#   Ausgaben von printenv my_rootfs_num und printenv my_rootfs0_num sind gleich falls printenv my_boot_switch 0 ausgibt, sonst sind printenv my_rootfs_num und printenv my_rootfs1_num gleich.
#   Analog fuer my_rootfs_name, my_kernel_num, my_kernel_name, my_kparams_num, my_kparams_name
setenv my_follow_boot_switch 'setenv my_follow_boot_switch_gen_subject rootfs; run my_follow_boot_switch_gen1; setenv my_follow_boot_switch_gen_subject kernel; run my_follow_boot_switch_gen1; setenv my_follow_boot_switch_gen_subject kparams; run my_follow_boot_switch_gen1; setenv my_follow_boot_switch_gen_subject kernel; setenv my_follow_boot_switch_gen_attr size; run my_follow_boot_switch_gen'


# bootcmd fuer nicht-falcon mode auch setzen:
setenv my_nand_boot 'if test $my_boot_switch_dirty = 1; then run my_follow_boot_switch; setenv my_boot_switch_dirty 0; setenv boot_os 0; saveenv; nand read $loadaddr ${my_kernel_name} ${my_kernel_size}; setenv bootargs console=$console coherent_pool=16M root=ubi0:rootfs rw ubi.mtd=${my_rootfs_num},2048 rootfstype=ubifs rootwait=1; run my_spl_export; fi; nand read $loadaddr ${my_kernel_name} ${my_kernel_size}; setenv bootargs console=$console coherent_pool=16M root=ubi0:rootfs rw ubi.mtd=${my_rootfs_num},2048 rootfstype=ubifs rootwait=1; bootm $loadaddr'
setenv my_spl_export 'setenv bootargs console=$console coherent_pool=16M root=ubi0:rootfs rw ubi.mtd=${my_rootfs_num},2048 rootfstype=ubifs rootwait=1; echo bootargs before spl export:; printenv bootargs; spl export atags $loadaddr;nand erase.part ${my_kparams_name};nand write 0x80000100 ${my_kparams_name};'
setenv bootcmd 'echo 'reset hmi'; gpio clear 42; gpio clear 43; sleep 0.2; gpio set 43; if mmc rescan; then if load mmc 0:1 $loadaddr /boot.scr; then source $loadaddr; fi; fi; run my_nand_boot;'


echo my_spl_export ist:
printenv my_spl_export
echo vor saveenv
setenv my_boot_switch 0
run my_follow_boot_switch
setenv my_boot_switch_dirty 0
setenv console
saveenv
echo nach saveenv


# falcon mode vorbereiten (fuer anschließenden boot von nand nach installation von sd-karte)

# eigentlich doppelt:
setenv my_boot_switch 0
run my_follow_boot_switch
run my_spl_export

echo 'reset hmi'
gpio clear 42
gpio clear 43
sleep 0.2
gpio set 43

# Booten von SD-Karte damit unter Linux rootfs und images geflasht werden koennen:

else
	echo 'Skipped adaption of environment and Falcon Mode!'
fi

load mmc 0:1 $loadaddr $cv_kernel
setenv bootargs console=${console} ${optargs} coherent_pool=16M root=/dev/mmcblk0p2
bootm $loadaddr

