Best overall documentation I could find is Derek Malloy's "Exploring Beaglebone" textbook.
It was relatively cheap bought for Amazon Kindle and is an amazing resource for the things I want to do.
Yet it was written a while ago and some (many?) things have changed since it was written.
https://www.mouser.com/pdfdocs/BBG_SRM_V3.pdf is a good reference on how BBGW is intended to work.
It doesn't tell you much about how it does what it does, or how to change it.
I believe there is no documented way to switch boot order to favor sdcard over u-boot other than the boot button.
https://www.linuxjournal.com/content/handy-u-boot-trick is a good article on some ways to change u-boot rules but as the title suggests it's more of a "u boot trick" than a standardized way to switch boot order such as a boot manager.
I booted my board using the u-boot on eMMC then used u-boot commands on the serial port to boot my linux from sdcard.
The linux I booted was the yocto build that the textbook above described how to build.
See my notes below.
This may be enough to get you going?
I'd like come up with a way to select an image via the debug serial port.
Some sort of boot manager / image selector like grub is for the x86 world.
But I haven't spent any time investigating that path.
Here are my notes.
=> ext4ls mmc 0:2 /boot
<DIR> 4096 .
<DIR> 4096 ..
58296 am335x-boneblack.dtb
56480 am335x-bone.dtb
6785592 zImage-5.2.17-yocto-standard
56736 am335x-bonegreen.dtb
<SYM> 28 zImage
=> setenv loadzimage "load mmc 0:2 ${loadaddr} /boot/zImage"
=> setenv loadftd "load mmc 0:2 ${fdtaddr} /boot/am335x-boneblack.dtb"
=> setenv bootargs "console=ttyO0,115200n8 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait fixrtc ${optargs}"
=> run loadzimage
6785592 bytes read in 459 ms (14.1 MiB/s)
=> run loadftd
58296 bytes read in 24 ms (2.3 MiB/s)
=> bootz ${loadaddr} - ${fdtaddr}
## Flattened Device Tree blob at 88000000
Booting using the fdt blob at 0x88000000
Loading Device Tree to 8ffee000, end 8ffff3b7 ... OK
Starting kernel ...