# U-Boot environment variables for A/B boot system # Default variables for first boot - these will be modified during operation # Active partition (A or B) active_part=A active_root=/dev/mmcblk0p2 inactive_part=B inactive_root=/dev/mmcblk0p3 # Boot attempt counters bootcount=0 bootlimit=3 # Default bootcmd bootcmd=run bootcmd_${active_part} # Kernel boot arguments bootargs=console=ttyAMA0,115200 console=tty1 root=${active_root} rootwait # Commands for booting from A or B partitions bootcmd_A=setenv bootargs console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootwait; load mmc 0:1 ${kernel_addr_r} zImage; load mmc 0:1 ${fdt_addr_r} bcm2710-rpi-3-b.dtb; bootz ${kernel_addr_r} - ${fdt_addr_r} bootcmd_B=setenv bootargs console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p3 rootwait; load mmc 0:1 ${kernel_addr_r} zImage; load mmc 0:1 ${fdt_addr_r} bcm2710-rpi-3-b.dtb; bootz ${kernel_addr_r} - ${fdt_addr_r} # Fallback logic for failed boots altbootcmd=if test ${active_part} = A; then setenv active_part B; setenv active_root /dev/mmcblk0p3; setenv inactive_part A; setenv inactive_root /dev/mmcblk0p2; else setenv active_part A; setenv active_root /dev/mmcblk0p2; setenv inactive_part B; setenv inactive_root /dev/mmcblk0p3; fi; setenv bootcount 0; saveenv; run bootcmd # Memory addresses kernel_addr_r=0x01000000 fdt_addr_r=0x02000000 # Board name board_name=rpi3 # Network configuration (DHCP) autoload=no ethact=smi ethaddr_sdio0=00:44:55:66:77:88