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