12911bd18SPrzemyslaw Marczak# This is an example file to generate boot.scr - a boot script for U-Boot 22911bd18SPrzemyslaw Marczak# Generate boot.scr: 32911bd18SPrzemyslaw Marczak# ./tools/mkimage -c none -A arm -T script -d autoboot.cmd boot.scr 42911bd18SPrzemyslaw Marczak# 52911bd18SPrzemyslaw Marczak# It requires a list of environment variables to be defined before load: 6*e6b14670SKrzysztof Kozlowski# platform dependent: board_name, fdtfile, console 72911bd18SPrzemyslaw Marczak# system dependent: mmcbootdev, mmcbootpart, mmcrootdev, mmcrootpart, rootfstype 82911bd18SPrzemyslaw Marczak# 92911bd18SPrzemyslaw Marczaksetenv fdtaddr "40800000" 102911bd18SPrzemyslaw Marczaksetenv initrdname "uInitrd" 112911bd18SPrzemyslaw Marczaksetenv initrdaddr "42000000" 122911bd18SPrzemyslaw Marczaksetenv loaddtb "load mmc ${mmcbootdev}:${mmcbootpart} ${fdtaddr} ${fdtfile}" 132911bd18SPrzemyslaw Marczaksetenv loadinitrd "load mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} ${initrdname}" 142911bd18SPrzemyslaw Marczaksetenv loadkernel "load mmc ${mmcbootdev}:${mmcbootpart} '${kerneladdr}' '${kernelname}'" 152911bd18SPrzemyslaw Marczaksetenv kernel_args "setenv bootargs ${console} root=/dev/mmcblk${mmcrootdev}p${mmcrootpart} rootfstype=${rootfstype} rootwait ${opts}" 162911bd18SPrzemyslaw Marczak 172911bd18SPrzemyslaw Marczak#### Routine: check_dtb - check that target.dtb exists on boot partition 182911bd18SPrzemyslaw Marczaksetenv check_dtb " 192911bd18SPrzemyslaw Marczakif test -e mmc '${mmcbootdev}':'${mmcbootpart}' '${fdtfile}'; then 202911bd18SPrzemyslaw Marczak run loaddtb; 212911bd18SPrzemyslaw Marczak setenv fdt_addr ${fdtaddr}; 222911bd18SPrzemyslaw Marczakelse 232911bd18SPrzemyslaw Marczak echo Warning! Booting without DTB: '${fdtfile}'!; 242911bd18SPrzemyslaw Marczak setenv fdt_addr; 252911bd18SPrzemyslaw Marczakfi;" 262911bd18SPrzemyslaw Marczak 272911bd18SPrzemyslaw Marczak#### Routine: check_ramdisk - check that uInitrd exists on boot partition 282911bd18SPrzemyslaw Marczaksetenv check_ramdisk " 292911bd18SPrzemyslaw Marczakif test -e mmc '${mmcbootdev}':'${mmcbootpart}' '${initrdname}'; then 302911bd18SPrzemyslaw Marczak echo "Found ramdisk image."; 312911bd18SPrzemyslaw Marczak run loadinitrd; 322911bd18SPrzemyslaw Marczak setenv initrd_addr ${initrdaddr}; 332911bd18SPrzemyslaw Marczakelse 342911bd18SPrzemyslaw Marczak echo Warning! Booting without RAMDISK: '${initrdname}'!; 352911bd18SPrzemyslaw Marczak setenv initrd_addr -; 362911bd18SPrzemyslaw Marczakfi;" 372911bd18SPrzemyslaw Marczak 38*e6b14670SKrzysztof Kozlowski#### Routine: boot_fit - check that env $board_name is set and boot proper config of ITB image 392911bd18SPrzemyslaw Marczaksetenv setboot_fit " 40*e6b14670SKrzysztof Kozlowskiif test -e '${board_name}'; then 412911bd18SPrzemyslaw Marczak setenv fdt_addr ; 422911bd18SPrzemyslaw Marczak setenv initrd_addr ; 432911bd18SPrzemyslaw Marczak setenv kerneladdr 0x42000000; 442911bd18SPrzemyslaw Marczak setenv kernelname Image.itb; 45*e6b14670SKrzysztof Kozlowski setenv itbcfg "\"#${board_name}\""; 462911bd18SPrzemyslaw Marczak setenv imgbootcmd bootm; 472911bd18SPrzemyslaw Marczakelse 48*e6b14670SKrzysztof Kozlowski echo Warning! Variable: \$board_name is undefined!; 492911bd18SPrzemyslaw Marczakfi" 502911bd18SPrzemyslaw Marczak 512911bd18SPrzemyslaw Marczak#### Routine: setboot_uimg - prepare env to boot uImage 522911bd18SPrzemyslaw Marczaksetenv setboot_uimg " 532911bd18SPrzemyslaw Marczak setenv kerneladdr 0x40007FC0; 542911bd18SPrzemyslaw Marczak setenv kernelname uImage; 552911bd18SPrzemyslaw Marczak setenv itbcfg ; 562911bd18SPrzemyslaw Marczak setenv imgbootcmd bootm; 572911bd18SPrzemyslaw Marczak run check_dtb; 582911bd18SPrzemyslaw Marczak run check_ramdisk;" 592911bd18SPrzemyslaw Marczak 602911bd18SPrzemyslaw Marczak#### Routine: setboot_zimg - prepare env to boot zImage 612911bd18SPrzemyslaw Marczaksetenv setboot_zimg " 622911bd18SPrzemyslaw Marczak setenv kerneladdr 0x40007FC0; 632911bd18SPrzemyslaw Marczak setenv kernelname zImage; 642911bd18SPrzemyslaw Marczak setenv itbcfg ; 652911bd18SPrzemyslaw Marczak setenv imgbootcmd bootz; 662911bd18SPrzemyslaw Marczak run check_dtb; 672911bd18SPrzemyslaw Marczak run check_ramdisk;" 682911bd18SPrzemyslaw Marczak 692911bd18SPrzemyslaw Marczak#### Routine: boot_img - boot the kernel after env setup 702911bd18SPrzemyslaw Marczaksetenv boot_img " 712911bd18SPrzemyslaw Marczak run loadkernel; 722911bd18SPrzemyslaw Marczak run kernel_args; 732911bd18SPrzemyslaw Marczak '${imgbootcmd}' '${kerneladdr}${itbcfg}' '${initrd_addr}' '${fdt_addr}';" 742911bd18SPrzemyslaw Marczak 752911bd18SPrzemyslaw Marczak#### Routine: autoboot - choose proper boot path 762911bd18SPrzemyslaw Marczaksetenv autoboot " 7730373ef0SLukasz Majewskiif test -e mmc ${mmcbootdev}:${mmcbootpart} Image.itb; then 782911bd18SPrzemyslaw Marczak echo Found kernel image: Image.itb; 792911bd18SPrzemyslaw Marczak run setboot_fit; 802911bd18SPrzemyslaw Marczak run boot_img; 8130373ef0SLukasz Majewskielif test -e mmc ${mmcbootdev}:${mmcbootpart} zImage; then 822911bd18SPrzemyslaw Marczak echo Found kernel image: zImage; 832911bd18SPrzemyslaw Marczak run setboot_zimg; 842911bd18SPrzemyslaw Marczak run boot_img; 8530373ef0SLukasz Majewskielif test -e mmc ${mmcbootdev}:${mmcbootpart} uImage; then 862911bd18SPrzemyslaw Marczak echo Found kernel image: uImage; 872911bd18SPrzemyslaw Marczak run setboot_uimg; 882911bd18SPrzemyslaw Marczak run boot_img; 892911bd18SPrzemyslaw Marczakfi;" 902911bd18SPrzemyslaw Marczak 912911bd18SPrzemyslaw Marczak#### Execute the defined autoboot macro 922911bd18SPrzemyslaw Marczakrun autoboot 93