1*2911bd18SPrzemyslaw Marczak# This is an example file to generate boot.scr - a boot script for U-Boot 2*2911bd18SPrzemyslaw Marczak# Generate boot.scr: 3*2911bd18SPrzemyslaw Marczak# ./tools/mkimage -c none -A arm -T script -d autoboot.cmd boot.scr 4*2911bd18SPrzemyslaw Marczak# 5*2911bd18SPrzemyslaw Marczak# It requires a list of environment variables to be defined before load: 6*2911bd18SPrzemyslaw Marczak# platform dependent: boardname, fdtfile, console 7*2911bd18SPrzemyslaw Marczak# system dependent: mmcbootdev, mmcbootpart, mmcrootdev, mmcrootpart, rootfstype 8*2911bd18SPrzemyslaw Marczak# 9*2911bd18SPrzemyslaw Marczaksetenv fdtaddr "40800000" 10*2911bd18SPrzemyslaw Marczaksetenv initrdname "uInitrd" 11*2911bd18SPrzemyslaw Marczaksetenv initrdaddr "42000000" 12*2911bd18SPrzemyslaw Marczaksetenv loaddtb "load mmc ${mmcbootdev}:${mmcbootpart} ${fdtaddr} ${fdtfile}" 13*2911bd18SPrzemyslaw Marczaksetenv loadinitrd "load mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} ${initrdname}" 14*2911bd18SPrzemyslaw Marczaksetenv loadkernel "load mmc ${mmcbootdev}:${mmcbootpart} '${kerneladdr}' '${kernelname}'" 15*2911bd18SPrzemyslaw Marczaksetenv kernel_args "setenv bootargs ${console} root=/dev/mmcblk${mmcrootdev}p${mmcrootpart} rootfstype=${rootfstype} rootwait ${opts}" 16*2911bd18SPrzemyslaw Marczak 17*2911bd18SPrzemyslaw Marczak#### Routine: check_dtb - check that target.dtb exists on boot partition 18*2911bd18SPrzemyslaw Marczaksetenv check_dtb " 19*2911bd18SPrzemyslaw Marczakif test -e mmc '${mmcbootdev}':'${mmcbootpart}' '${fdtfile}'; then 20*2911bd18SPrzemyslaw Marczak run loaddtb; 21*2911bd18SPrzemyslaw Marczak setenv fdt_addr ${fdtaddr}; 22*2911bd18SPrzemyslaw Marczakelse 23*2911bd18SPrzemyslaw Marczak echo Warning! Booting without DTB: '${fdtfile}'!; 24*2911bd18SPrzemyslaw Marczak setenv fdt_addr; 25*2911bd18SPrzemyslaw Marczakfi;" 26*2911bd18SPrzemyslaw Marczak 27*2911bd18SPrzemyslaw Marczak#### Routine: check_ramdisk - check that uInitrd exists on boot partition 28*2911bd18SPrzemyslaw Marczaksetenv check_ramdisk " 29*2911bd18SPrzemyslaw Marczakif test -e mmc '${mmcbootdev}':'${mmcbootpart}' '${initrdname}'; then 30*2911bd18SPrzemyslaw Marczak echo "Found ramdisk image."; 31*2911bd18SPrzemyslaw Marczak run loadinitrd; 32*2911bd18SPrzemyslaw Marczak setenv initrd_addr ${initrdaddr}; 33*2911bd18SPrzemyslaw Marczakelse 34*2911bd18SPrzemyslaw Marczak echo Warning! Booting without RAMDISK: '${initrdname}'!; 35*2911bd18SPrzemyslaw Marczak setenv initrd_addr -; 36*2911bd18SPrzemyslaw Marczakfi;" 37*2911bd18SPrzemyslaw Marczak 38*2911bd18SPrzemyslaw Marczak#### Routine: boot_fit - check that env $boardname is set and boot proper config of ITB image 39*2911bd18SPrzemyslaw Marczaksetenv setboot_fit " 40*2911bd18SPrzemyslaw Marczakif test -e '${boardname}'; then 41*2911bd18SPrzemyslaw Marczak setenv fdt_addr ; 42*2911bd18SPrzemyslaw Marczak setenv initrd_addr ; 43*2911bd18SPrzemyslaw Marczak setenv kerneladdr 0x42000000; 44*2911bd18SPrzemyslaw Marczak setenv kernelname Image.itb; 45*2911bd18SPrzemyslaw Marczak setenv itbcfg \#'${boardname}'; 46*2911bd18SPrzemyslaw Marczak setenv imgbootcmd bootm; 47*2911bd18SPrzemyslaw Marczakelse 48*2911bd18SPrzemyslaw Marczak echo Warning! Variable: \$boardname is undefined!; 49*2911bd18SPrzemyslaw Marczakfi" 50*2911bd18SPrzemyslaw Marczak 51*2911bd18SPrzemyslaw Marczak#### Routine: setboot_uimg - prepare env to boot uImage 52*2911bd18SPrzemyslaw Marczaksetenv setboot_uimg " 53*2911bd18SPrzemyslaw Marczak setenv kerneladdr 0x40007FC0; 54*2911bd18SPrzemyslaw Marczak setenv kernelname uImage; 55*2911bd18SPrzemyslaw Marczak setenv itbcfg ; 56*2911bd18SPrzemyslaw Marczak setenv imgbootcmd bootm; 57*2911bd18SPrzemyslaw Marczak run check_dtb; 58*2911bd18SPrzemyslaw Marczak run check_ramdisk;" 59*2911bd18SPrzemyslaw Marczak 60*2911bd18SPrzemyslaw Marczak#### Routine: setboot_zimg - prepare env to boot zImage 61*2911bd18SPrzemyslaw Marczaksetenv setboot_zimg " 62*2911bd18SPrzemyslaw Marczak setenv kerneladdr 0x40007FC0; 63*2911bd18SPrzemyslaw Marczak setenv kernelname zImage; 64*2911bd18SPrzemyslaw Marczak setenv itbcfg ; 65*2911bd18SPrzemyslaw Marczak setenv imgbootcmd bootz; 66*2911bd18SPrzemyslaw Marczak run check_dtb; 67*2911bd18SPrzemyslaw Marczak run check_ramdisk;" 68*2911bd18SPrzemyslaw Marczak 69*2911bd18SPrzemyslaw Marczak#### Routine: boot_img - boot the kernel after env setup 70*2911bd18SPrzemyslaw Marczaksetenv boot_img " 71*2911bd18SPrzemyslaw Marczak run loadkernel; 72*2911bd18SPrzemyslaw Marczak run kernel_args; 73*2911bd18SPrzemyslaw Marczak '${imgbootcmd}' '${kerneladdr}${itbcfg}' '${initrd_addr}' '${fdt_addr}';" 74*2911bd18SPrzemyslaw Marczak 75*2911bd18SPrzemyslaw Marczak#### Routine: autoboot - choose proper boot path 76*2911bd18SPrzemyslaw Marczaksetenv autoboot " 77*2911bd18SPrzemyslaw Marczakif test -e mmc 0:${mmcbootpart} Image.itb; then 78*2911bd18SPrzemyslaw Marczak echo Found kernel image: Image.itb; 79*2911bd18SPrzemyslaw Marczak run setboot_fit; 80*2911bd18SPrzemyslaw Marczak run boot_img; 81*2911bd18SPrzemyslaw Marczakelif test -e mmc 0:${mmcbootpart} zImage; then 82*2911bd18SPrzemyslaw Marczak echo Found kernel image: zImage; 83*2911bd18SPrzemyslaw Marczak run setboot_zimg; 84*2911bd18SPrzemyslaw Marczak run boot_img; 85*2911bd18SPrzemyslaw Marczakelif test -e mmc 0:${mmcbootpart} uImage; then 86*2911bd18SPrzemyslaw Marczak echo Found kernel image: uImage; 87*2911bd18SPrzemyslaw Marczak run setboot_uimg; 88*2911bd18SPrzemyslaw Marczak run boot_img; 89*2911bd18SPrzemyslaw Marczakfi;" 90*2911bd18SPrzemyslaw Marczak 91*2911bd18SPrzemyslaw Marczak#### Execute the defined autoboot macro 92*2911bd18SPrzemyslaw Marczakrun autoboot 93