It was not to difficult to compile uboot for raspberry pi.
And a was chainbooting uboot from the original boot rom.
What do you want to archive with uboot ??
I was using it because of lack of netbooting in the main boot rom.
Now a days Raspberry pi is supporting netbooting, with the newer ones.
I have seen that Home Assistant uses uboot for raspberry pi.
Don't know why ?
I think that just loading new image use current device drivers and memory setup. Loader (U-boot/barebox etc .) starts uP (= Arm on this case) on real time mode, sets up device drivers, sets up MMU and memories, switch to protected mode, load kernel on virtual memory space and (hopefully) jump to correct virtual memory address for kernel startup.
On PC systems, udev handles dynamic driver loading:
https://en.wikipedia.org/wiki/Udev...so, mechanism to do so is already there. Embedded systems things are more difficult, and static device drivers are preferred on many cases.
Writing drivers is very difficult on add-on-HW, and because HW-cards with uP, memory and I/O is chaper than making new device depended software, TCP/IP and USB are nowadays used instead HW-bus. USB and TCP/IP drivers and memory allocation are already there, so it is how things are done.
Is it good or bad depends security issues....