uboot spl(Secondary Program Loader)是uboot的一个分阶段启动机制,主要负责加载uboot的镜像,使uboot能够运行起来。
在启动时,CPU内部的ROM代码会启动一个非常小的程序,然后这个程序再去启动uboot spl,uboot spl 负责初始化一些硬件,加载uboot镜像,然后将控制权交给uboot。
uboot spl主要有以下几个作用:
1. 初始化存储器,包括DDR、NOR/NAND Flash等,使它们能够正常工作。
2. 将uboot的二进制镜像加载到内存中,准备将控制权交给uboot。
3. 同步一些硬件时钟,如CPU时钟、存储器时钟等。
4. 在一些特定的平台上,uboot spl还可能会进行一些额外的工作,如初始化调试端口等。
uboot spl的实现分成两个部分:
1. 针对特定平台编写的spl代码;
2. spl的打包程序mkimage。
spl代码是针对特定平台编写的,主要目的是初始化硬件、加载uboot二进制镜像。
mkimage是将spl和uboot二进制镜像打包成一个整体镜像的工具,可以支持多种格式,如U-Boot的默认格式、FIT格式等。
编译uboot spl时需要使用交叉编译工具链,指定编译出来的代码类型为SPL,编译出来的代码通常会被称为SPL文件。
烧写uboot spl时,通常需要使用一些专门的工具和设备,如JTAG、USB转串口等。
具体步骤可参考各个平台的官方文档或者第三方教程。