uboot通过从linux中去移植已有的linux设备驱动作为uboot的驱动。
uboot本身是裸机程序,正常情况下。驱动是在操作系统中用于操控硬件的代码,而裸机是直接作用于硬件的,二者所处的层次不同,该怎么操作还是怎么操作。
在操作系统在,MMU是开启的,linux必须开启虚拟地址,裸机情况下只需操作物理地址已经足以功能的实现。但在uboot的启动后期,也需要开启MMU去做一些事情,如重定位,将0x30000000~0x3FFFFFFF映射到0xC0000000~0xCFFFFFFF,驱动主要是操控硬件的寄存器如SFR 0xE0000000~0xExxxxxxxx所以linux需要驱动工作是要虚拟地址映射的。
linux驱动是模块化的,非强耦合的。uboot是从源码基别进行的liunx的移植。
uboot硬件驱动对于linux而言是简化版本的,简化为裸机水平,不会进行附加功能的操作。