Hello William. Thanks.
> For starters, we'd need to see your uEnv.txt file. After that, while it is possible to troubleshoot an issue like this without a serial debug cable( I've done it, and it is not any fun ). You'd > have to be very meticulous, and know exactly how the process works completely.
Serial cable is always in use
Some uEnv and serial spew at end of post. It does not look like it even tries to TFTP zImage+dtb
Anyway here is a link to a guide I wrote a couple years ago: http://www.embeddedhobbyist.com/2013/06/beaglebone-black-network-boot/
Yep. Saw that in my travels. Very useful but a little dated.
Keep in mind that zImage should now work, so everything pertaining to uImage needs to be changed, or ignored( in the case of mkimage ).
Just a note though . . . You *need* flash media ( sdcard / eMMC ) anyway, for MLO and uboot.image . . . so I figure what does it hurt to boot the kernel off flash media, and just load
the rootfs from NFS ? Anyway, this is what I do now days myself, so have not personally bothered with TFTP boot since I wrote that guide.
Yes, I certainly understand that. At the moment I'm just trying to make sure I've got 100% control over then environment. And it don't feel that way 
TAIA
----------------------------------------------------uEnv
uname_r=4.1.0-bone9
loadaddr=0x82000000
fdtaddr=0x88000000
rdaddr=0x88080000
initrd_high=0xffffffff
fdt_high=0xffffffff
console=ttyO0,115200n8
ipaddr=192.168.1.111
serverip=192.168.1.115
gateway=192.168.1.254
netmask=255.255.255.0
bootdelay=1
bootfile=boot/zImage
fdtfile=boot/dtbs/4.1.0-bone9/am335x-boneblack.dtb
rootpath=/home/jevans/bone/rootfs
netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs rootdelay=10 nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=${ipaddr}:${serverip}:${gateway}:${netmask}:${hostname}:eth0:off
netboot=echo ----------BOOTING NFS----------; tftp ${loadaddr} ${bootfile}; tftp ${fdtaddr} ${fdtfile}; run netargs; bootz ${loadaddr} - ${fdtaddr}
uenvcmd=run netboot
--------------------------------serial (seriously snipped with just a few odd bits-------------------------
cpsw
Hit any key to stop autoboot: 0
gpio: pin 53 (gpio 53) value is 1
switch to partitions #0, OK
mmc0 is current device
gpio: pin 54 (gpio 54) value is 1
Checking for: /uEnv.txt ...
Checking for: /boot.scr ...
Checking for: /boot/boot.scr ...
Checking for: /boot/uEnv.txt ...
gpio: pin 55 (gpio 55) value is 1
785 bytes read in 17 ms (44.9 KiB/s)
Loaded environment from /boot/uEnv.txt
Checking if uname_r is set in /boot/uEnv.txt...
gpio: pin 56 (gpio 56) value is 1
Running uname_boot ...
loading /boot/vmlinuz-4.1.0-bone9 ...
6878968 bytes read in 394 ms (16.7 MiB/s)
loading /boot/boot/dtbs/4.1.0-bone9/am335x-boneblack.dtb ...
** File not found /boot/boot/dtbs/4.1.0-bone9/am335x-boneblack.dtb **
debug: [console=ttyO0,115200n8 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait fixrtc] ...
debug: [bootz 0x82000000 - 0x88000000] ...
Kernel image @ 0x82000000 [ 0x000000 - 0x68f6f8 ]
ERROR: Did not find a cmdline Flattened Device Tree
Could not find a valid device tree