| # This is an example file to generate boot.scr - a boot script for U-Boot |
| # Generate boot.scr: |
| # ./tools/mkimage -c none -A arm -T script -d autoboot.cmd boot.scr |
| # |
| # It requires a list of environment variables to be defined before load: |
| # platform dependent: boardname, fdtfile, console |
| # system dependent: mmcbootdev, mmcbootpart, mmcrootdev, mmcrootpart, rootfstype |
| # |
| setenv fdtaddr "40800000" |
| setenv initrdname "uInitrd" |
| setenv initrdaddr "42000000" |
| setenv loaddtb "load mmc ${mmcbootdev}:${mmcbootpart} ${fdtaddr} ${fdtfile}" |
| setenv loadinitrd "load mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} ${initrdname}" |
| setenv loadkernel "load mmc ${mmcbootdev}:${mmcbootpart} '${kerneladdr}' '${kernelname}'" |
| setenv kernel_args "setenv bootargs ${console} root=/dev/mmcblk${mmcrootdev}p${mmcrootpart} rootfstype=${rootfstype} rootwait ${opts}" |
| |
| #### Routine: check_dtb - check that target.dtb exists on boot partition |
| setenv check_dtb " |
| if test -e mmc '${mmcbootdev}':'${mmcbootpart}' '${fdtfile}'; then |
| run loaddtb; |
| setenv fdt_addr ${fdtaddr}; |
| else |
| echo Warning! Booting without DTB: '${fdtfile}'!; |
| setenv fdt_addr; |
| fi;" |
| |
| #### Routine: check_ramdisk - check that uInitrd exists on boot partition |
| setenv check_ramdisk " |
| if test -e mmc '${mmcbootdev}':'${mmcbootpart}' '${initrdname}'; then |
| echo "Found ramdisk image."; |
| run loadinitrd; |
| setenv initrd_addr ${initrdaddr}; |
| else |
| echo Warning! Booting without RAMDISK: '${initrdname}'!; |
| setenv initrd_addr -; |
| fi;" |
| |
| #### Routine: boot_fit - check that env $boardname is set and boot proper config of ITB image |
| setenv setboot_fit " |
| if test -e '${boardname}'; then |
| setenv fdt_addr ; |
| setenv initrd_addr ; |
| setenv kerneladdr 0x42000000; |
| setenv kernelname Image.itb; |
| setenv itbcfg "\"#${boardname}\""; |
| setenv imgbootcmd bootm; |
| else |
| echo Warning! Variable: \$boardname is undefined!; |
| fi" |
| |
| #### Routine: setboot_uimg - prepare env to boot uImage |
| setenv setboot_uimg " |
| setenv kerneladdr 0x40007FC0; |
| setenv kernelname uImage; |
| setenv itbcfg ; |
| setenv imgbootcmd bootm; |
| run check_dtb; |
| run check_ramdisk;" |
| |
| #### Routine: setboot_zimg - prepare env to boot zImage |
| setenv setboot_zimg " |
| setenv kerneladdr 0x40007FC0; |
| setenv kernelname zImage; |
| setenv itbcfg ; |
| setenv imgbootcmd bootz; |
| run check_dtb; |
| run check_ramdisk;" |
| |
| #### Routine: boot_img - boot the kernel after env setup |
| setenv boot_img " |
| run loadkernel; |
| run kernel_args; |
| '${imgbootcmd}' '${kerneladdr}${itbcfg}' '${initrd_addr}' '${fdt_addr}';" |
| |
| #### Routine: autoboot - choose proper boot path |
| setenv autoboot " |
| if test -e mmc 0:${mmcbootpart} Image.itb; then |
| echo Found kernel image: Image.itb; |
| run setboot_fit; |
| run boot_img; |
| elif test -e mmc 0:${mmcbootpart} zImage; then |
| echo Found kernel image: zImage; |
| run setboot_zimg; |
| run boot_img; |
| elif test -e mmc 0:${mmcbootpart} uImage; then |
| echo Found kernel image: uImage; |
| run setboot_uimg; |
| run boot_img; |
| fi;" |
| |
| #### Execute the defined autoboot macro |
| run autoboot |