一、uboot是什么
U-Boot,全称 Universal Boot Loader,属于bootloader的一种,是一个用来引导启动系统的程序。
二、uboot存在的必要性
我们首先需要知道一个背景:每颗芯片内部都有一个IROM一个IRAM,IROM中soc厂商会固化有一段ROM Code, 作为芯片启动的最初代码,但由于IROM与IRAM价格非常昂贵,所以无法支持上百上千MB的程序下载或 运行。为了让Soc能够运行成百上千MB的程序,需要在启动后将外部介质(eMMC/UFS/SD/USB)以及 DDR进行初始化,最后利用外部DDR运行更大的程序。Uboot便是为了解决这一问题设计的。
因为uboot编译后,一般都有700多k,但是IRAM只有几十k,所以uboot引导启动一般分为三个阶段。
第一阶段:
芯片上电后,ROM Code开始执行,Rom Code会根据芯片bootPin以及外部存储是是否包 含启动程序进入相应的启动模式,这里便是第一启动,当判断是正常模式时,ROM Code便会从外部介质(eMMC,UFS,SDCard,Serial,USB)中加载Uboot(这部分uboot一般只有16k,称为SPL uboot)到IRAM中运行,因Soc芯片厂商ROM Code不同, 所支持的介质也不同。
第二阶段:
为了解决IRAM不足以运行UBoot,我们可以将UBoot分为两部分,只复制一部分代码到 IRAM,这部分代码初始化DDR(SP