please post the output of
printenv ( from within uboot )
most likely uboot resides within Pi flash. BACK IT UP!
i would not recommend writing uboot...... most ( OEM ) uboots vary slightly in what they have to offer so we'll need to experiment a bit ( unless a knowledgable soul / more research leads us to the answers first )
in my case, the limiting factor was that the OEM uboot did not recognise the external sdcard on my device..... so it was not possible for me to experiment non destructively with that.... and compiling another uboot to flash was ambiguous, intensive, a potentially destructive.... your kind of lucky in the fact that the Pi is REALLY well documented / tested / utilised......
so i switched to external usb.....
i would be asking myself;
-can i verify that the bootloader will read from mmc
-what filesystem / etc. other limitations reside within the built in uboot.
basically two or thress commands are ( usually ) needed to mess around.....
-a device init command ( usb start / mmc init or whatever )
-device select ( usb dev 0:1 / mmc dev 0:2 ) or whatever
-device read ( ext2ls usb 0:1 / ext4ls / fatls ) or whatever
once you nail down what these commands are in your circumstances, all will be clear(er)
EDIT: probably enough above to cobble something for you to test.....
beware though..... sysupgrade might overwrite stuff if it ends up working
mmc rescan
mmc dev 0:1
fatload mmc 0:1 ${loadaddr} /path/to/kernel/on/fatpart1
bootm
or something like that.... fatls or similar would be helpful