这一节我们将介绍采用TPL/SPL方式,如何编译源码以及烧录程序到eMMC,从而完成uboot的启动。 回到顶部 一、uboot uboot通常有三种: uboot官方源码:https://github.com/u-boot/u-boot,uboot官方源码是由uboot官方维护,支持非常全面的芯片,但对具体某款开发板支持情况一般; 半导体厂商瑞芯微官方源码:https://github...
void board_init_r(gd_t *dummy1, ulong dummy2) { u32 spl_boot_list[] = { BOOT_DEVICE_NONE, BOOT_DEVICE_NONE, BOOT_DEVICE_NONE, BOOT_DEVICE_NONE, BOOT_DEVICE_NONE, }; struct spl_image_info spl_image; int ret; debug(">>" SPL_TPL_PROMPT "board_init_r()\n"); //gd->bd= ...
所以这个第一阶段的引导加载程序是U-Boot SPL ; 和第二阶段的引导加载程序是常规的U-Boot(或适当的U-Boot)。需要说明的是:SPL代表二级程序加载器。这意味着ROM代码是加载(和执行)其他程序的第一件事,而SPL是加载(和执行)其他程序的第二件事。所以通常启动顺序是下一个:ROM code - > SPL - > u-boot - ...
U-Boot SPL 2013.07 (May 07 2019 - 13:20:56) Timer init [...] sdram init finished SDRAM init ok board_init_r image entry point: 0x80100000 U-Boot 2013.07 (May 07 2019 - 13:20:56) Board: ISVP (Ingenic XBurst T21 SoC) DRAM: 64 MiB Top of RAM usable for U-Boot at: 84000000...
Uboot分析--SPL跳转过程分析 上电后,片上的ROM code会将启动的bin文件拷贝到sram中运行,sram通常只有4kb 甚至更小。所以将uboot中放到sram中运行是不现实的。SPL应运而生,SPL(Secondary Program Loader)是一个非常小的bin文件,足以加载到sram中运行。SPL在sram运行起来以后会将uboot加载到外部ram中运行。
SPL是uboot第一阶段执行的代码。 主要负责搬移uboot第二阶段的代码到内存中运行。 SPL是由固化在芯片内部的ROM引导的。 我们知道很多芯片厂商固化的ROM支持从nandflash, SDCARD等外部介质启动。
最开始编译uboot时,使用如下命令: make O=am3517_evm CROSS_COMPILE=arm-arago-linux-gnueabi- am3517_evm 此时生成的文件被称为uboot第二阶段的代码,本节讲解如何编译uboot第一阶段(SPL)。 先来理解SOC的启动流程,针对嵌入式设备,一般上电时刻启动分为三个阶段: ...
bootrom --> spl(init ddr) --> bootrom --> tpl(load and run uboot)--> uboot 其示意图如下: 在此流程中,spl主要完成ddr初始化,由于其不带有镜像加载相关的驱动,因此执行完成后需要跳转回bootrom,由bootrom完成tpl的加载(类似atf中bl2加载完成后跳转回bl1),并由tpl完成最终uboot的加载。由于tpl的主...
这个是uboot开机的时候的一个等待时间的秒数,可以改大一点,默认是2s 六、SPL配置# SPL / TPL ---> 这个就是SPL相关的配置了 [*] MMC raw mode: by sector 按扇区 (0x50) Address on the MMC to load U-Boot from mmc加载uboot的地址 [*] Support GPIO 支持GPIO ...