2
Finally found a solution:
After a couple weeks of seeing the behavior be so different when using the debugger, setting breakpoints, etc, today I stumbled across the solution.
The SDK send function requires a 1 sec delay to be added in order for the transmit to occur. I don’t understand why this is, but in my experimentation it can’t be shorter than this. It may need to be between setting the TxBD ready bit and setting TDAR high, that’s where I have it. It now works consistently.
Why would Uboot work fine without this extra delay? Maybe the steps that Uboot includes for the flushing of the data cache accomplishes the same thing. Something for Freescale engineers to take a look at.