[U-Boot] [PATCH] wandboard: add pxe support, set default boot command like highbank

Rob Herring robherring2 at gmail.com
Thu Aug 1 01:01:33 CEST 2013


Dennis,

On Thu, Jul 25, 2013 at 4:13 PM,  <dgilmore at fedoraproject.org> wrote:
> From: Dennis Gilmore <dennis at ausil.us>
>
> Signed-off-by: Dennis Gilmore <dennis at ausil.us>
> ---
>  include/configs/wandboard.h | 42 +++++++++++++++++++++++++++++++++++++++---
>  1 file changed, 39 insertions(+), 3 deletions(-)
>
> diff --git a/include/configs/wandboard.h b/include/configs/wandboard.h
> index ee6bf21..a5052c5 100644
> --- a/include/configs/wandboard.h
> +++ b/include/configs/wandboard.h
> @@ -58,6 +58,8 @@
>  #define CONFIG_LOADADDR                        0x12000000
>  #define CONFIG_SYS_TEXT_BASE           0x17800000
>
> +#define CONFIG_SUPPORT_RAW_INITRD
> +
>  /* MMC Configuration */
>  #define CONFIG_FSL_ESDHC
>  #define CONFIG_FSL_USDHC
> @@ -72,6 +74,14 @@
>  #define CONFIG_CMD_FAT
>  #define CONFIG_DOS_PARTITION
>
> +/* PXE support */
> +#define CONFIG_BOOTP_PXE
> +#define CONFIG_BOOTP_PXE_CLIENTARCH     0x100
> +#define CONFIG_BOOTP_VCI_STRING         "U-boot.armv7.wandboard"
> +#define CONFIG_CMD_PXE
> +#define CONFIG_MENU
> +
> +
>  /* Ethernet Configuration */
>  #define CONFIG_CMD_PING
>  #define CONFIG_CMD_DHCP
> @@ -117,7 +127,32 @@
>         "initrd_high=0xffffffff\0" \
>         "fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
>         "fdt_addr=0x11000000\0" \
> +       "pxefile_addr_r=0x12000000\0" \
> +       "kernel_addr_r=0x13000000\0" \
> +       "ramdisk_addr_r=0x32000000\0" \
> +       "fdt_addr_r=0x11000000\0" \
>         "boot_fdt=try\0" \
> +       "bootcmd_setup=mmc rescan\0" \
> +       "bootcmd_pxe=setenv bootfile \"\" ;dhcp; pxe get; pxe boot\0" \
> +       "bootcmd_disk_scr=ext2load ${boot_ifc} ${bootdevice} ${scr_addr_r} boot.scr && source ${scr_addr_r}\0" \
> +       "bootcmd_disk_sysboot1=setenv bootfile /boot/extlinux/extlinux.conf; sysboot ${boot_ifc} ${bootdevice} ext2\0" \
> +       "bootcmd_disk_sysboot2=setenv bootfile /extlinux/extlinux.conf; sysboot ${boot_ifc} ${bootdevice} ext2\0" \
> +       "bootcmd_disk_uenv=ext2load ${boot_ifc} ${bootdevice} ${uenv_addr_r} uEnv.txt; env import -t ${uenv_addr_r} ${filesize}; run bootcmd_uenv\0" \
> +       "bootcmd_disk_kernel=ext2load ${boot_ifc} ${bootdevice} ${kernel_addr_r} vmlinuz && ext2load ${boot_ifc} ${bootdevice} ${ramdisk_addr_r} initrd.img && bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr}\0" \
> +       "bootcmd_disk=run bootcmd_disk_sysboot1; run bootcmd_disk_sysboot2; run bootcmd_disk_uenv; run bootcmd_disk_scr; run bootcmd_disk_kernel\0" \
> +       "bootcmd_sata=setenv boot_ifc scsi; scsi scan && run bootcmd_disk\0" \
> +       "bootcmd_mmc=setenv boot_ifc mmc; mmc rescan && run bootcmd_disk\0" \
> +       "bootcmd_default=run bootcmd_mmc; run bootcmd_sata; run bootcmd_pxe\0" \

I really would not like to see this propagated to another board. I've
completely redone the env for highbank based on what Stephen Warren
did for Tegra. It would be good to come up with a common version
rather than duplicating for each board. This is now what the env looks
like for highbank in current firmware:

kernel_boot=echo Trying kernel...; ${fs}load ${devtype} ${devnum}
${kernel_addr_r} ${prefix}vmlinuz && ${fs}load ${devtype} ${devnum}
${ramdisk_addr_r} ${prefix}initrd.img && bootz ${kernel_addr_r}
${ramdisk_addr_r}:${filesize} ${fdt_addr}
script_boot=echo Trying script images...; for script in
${boot_scripts}; do ${fs}load ${devtype} ${devnum} ${script_addr}
${prefix}${script} && echo Executing ${prefix}${script}... && source
${script_addr}; done;
env_boot=echo Trying environment file...; ${fs}load ${devtype}
${devnum} ${script_addr} ${prefix}uEnv.txt && Executing
${prefix}uEnv.txt... && env import -t  ${script_addr} ${filesize}};
syslinux_boot=echo Trying syslinux boot menu...; sysboot ${devtype}
${devnum} ${fs} ${script_addr} ${prefix}extlinux/extlinux.conf
scan_disk=echo Scanning ${devtype} ${devnum}...; for fs in
${boot_fstypes}; do for mode in ${boot_modes}; do for prefix in
${boot_prefixes}; do run ${mode}_boot; done; done; done;
boot_targets=scsi pxe
boot_fstypes=ext2
boot_prefixes=/ /boot/
boot_scripts=boot.scr.uimg boot.scr
boot_modes=syslinux env script kernel
init_scsi=scsi scan; setenv devtype scsi
bootcmd_scsi=run scan_disk
init_pxe=setenv bootfile ""
bootcmd_pxe=dhcp; pxe get; pxe boot
boot_iter=for target in ${boot_targets}; do run init_${target} && run
bootcmd_${target}; done
bootcmd0=run boot_iter
bootcmd1=setenv boot_targets pxe; run boot_iter
bootcmd2=setenv boot_targets scsi; run boot_iter
bootcmd15=run bootcmd_setup; run bootcmd_mmc
localcmd=run bootcmd2
devnum=0:auto
bootargs=console=ttyAMA0 root=LABEL=rootfs nosplash
bootdelay=2
bootretry=90
bootstopkey=s
bootdelaykey=d
netretry=once
fdt_addr=0x1000
fdt_high=0xffffffff
pxefile_addr_r=0x700000
kernel_addr_r=0x800000
ramdisk_addr_r=0x01000000
script_addr=0x100000
initrd_high=0xffffffff

> +       "bootcmd0=run bootcmd_setup; run bootcmd_default\0" \
> +       "bootcmd1=run bootcmd_setup; run bootcmd_pxe; run bootcmd_default\0" \
> +       "bootcmd2=run bootcmd_setup; run bootcmd_sata; run bootcmd_default\0" \
> +       "bootcmd15=run bootcmd_setup; run bootcmd_mmc; run bootcmd_default\0" \

These are pretty much highbank specific. The number is based on IPMI
bootdev numbering.

Rob


More information about the U-Boot mailing list