UBOOT启动原理

UBOOT是一个引导加载器,负责将Linux内核加载到内存中运行。文章详细介绍了UBOOT的启动流程,包括nuc980内存分布和启动步骤,如初始化DDR、拷贝SPL和UBOOT内容等。此外,解释了为何如此启动,主要是为了统一Linux启动方式和应对内存资源限制。

UBOOT启动原理分析

文章主要围绕两个问题探讨。一方面是启动流程,另一方面是为什么这么启动。



前言

聊到uboot,我们得提一下单片机,我们在单片机上写代码的时候一般都不会考虑uboot,即使我们考虑bootloader也是在做OTA升级的时候才会去编码。这种一般都比较简单。但是当我们使用操作系统的时候,我们就得考虑uboot的移植和适配(这个工作原厂也做好了准备,实际上,我们只需要修改里面的一些加载地址和配置的功能项)。因为这两者的程序一个是跑着flash上,一个的跑着DDR上。


一、UBOOT是什么?

我简单描述一下UBOOT,uboot就是把linux内核镜像的代码搬运到内存上运行的东西(搬运到内存上运行,是因为在内存上运行速度比较快)。它有一个承上启下的作用。它引导操作系统,配置操作系统的参数,并完成一些硬件工作的初始化。

二、UBOOT启动流程

1.nuc980 内存分布图

NUC980内存分布图

2.启动流程

在这里插入图片描述

启动文件功能
IBR选择启动方式、初始化DDR(芯片自带),拷贝SPL程序到DDR 0x200地址运行
SPL初始化默认串口0,拷贝uboot内容到DDR中去,详见上图
UBOOT初始化设置的串口外设、设置GD结构体变量、重定位、初始化串口控制台并开始接收命令or执行自动化命令跳转到内核

三.为什么这么启动

1.统一性
统一Linux操作系统的启动方式,方便管理。尽管在这个方案中DDR初始化在芯片内部已经完成可以直接加载UBOOT到DDR中,但是就是一个另类的存在。
2.内存受限
如果芯片内部内存空间太少,这时候就需要外接DDR。那么,一般来说是在SPL中初始化外部DDR,然后将uboot搬运到外部DDR上运行。

总结

我写这些文章没有打算长篇大论,而且这些只是辅助性的功能。如果你真的想完全了解uboot,一定要去看看源代码。有什么好的建议也可以留言,作者都会回复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值