U-boot, tftp and starterware

I have developed a Beaglebone Black Starterware project which boots successfully from the SD card in the standard way.
I would like to boot it using u-boot and tftp over ethernet.

However, when I try to do this the program fails as soon as it attempts to set up the MMU.

In fact, it seems that doing any memory accesses like setting up the pageTable or clearing the PRU memory causes the program to fail.
Why does this happen and how can it be fixed?

If I change the program to only do simple things then booting using u-boot and tftp works.
For instance, if I just put the Starterware gpioLEDBlink example at the beginning of my program (and before doing any MMU setup etc.) then the program is loaded and run properly using u-boot and tftp.
One small caveat is that it is necessary for my program to firstly disable the watchdog timer (using WatchdogTimerDisable(SOC_WDT_1_REGS):wink: which is started by u-boot.

By the way, I load the program executable which does not have the 8 byte header e.g. download.bin not download_ti.bin to location 0x80000000.

I have compared the memory at 0x8000000 loaded by u-boot with the memory when using the jtag debugger and they seem identical.

Any suggestions on how to fix this problem would be most appreciated.

Thanks for your time, Bryan