2. uboot 能做什么?

本文内容来自对《朱有鹏嵌入式linux核心课程》总结

1. 为什么是 uboot

1.1 uboot 从哪里来

(1)uboot 是 SourceForge 上的开源项目
(2)uboot 项目的作者:一个德国人最早发起的项目
(3)uboot 就是由一个人发起,然后由整个网络上所有感兴趣的人共同维护发展而来的一个 bootloader。

1.2 uboot 的发展历程

(1)自己使用的小开源项目
(2)被更多人认可使用
(3)被 SoC 厂商默认支持
总结:uboot 经过多年发展,已经成为事实上的业内 bootloader 标准。现在大部分的嵌入式设备都会默认使用 uboot 来做为 bootloader。

1.3 uboot 的版本号问题

(1)早期的 uboot 的版本号类似于这样:uboot1.3.4。后来版本号便成了类似于 uboot-2010.06。
(2)uboot 的核心部分几乎没怎么变化,越新的版本支持的开发板越多而已,对于一个老版本的芯片来说,新旧版本的 uboot 并没有差异。

1.4 uboot 的可移植性的正确理解

(1)uboot 就是 universal bootloader (通用的启动代码),通用的意思就是在各种地方都可以用。所以说 uboot 具有可移植性。
(2)uboot 具有可移植性并不是说 uboot 在哪个开发板都可以随便用,而是说 uboot 具有在源代码级别的移植能力,可以针对多个开发板进行移植,移植后就可以在这个开发板上使用了。

1.5 总结

时势造英雄,任何牛逼的东西都是时代的产物
uboot 的出现是一种必然,如果没有 uboot 也会有另一个 bootloader 来代替



2. uboot 必须解决哪些问题

2.1 自身可开机直接启动

(1)一般的 SoC 都支持多种启动方式,譬如 SD 卡启动,NorFlash 启动,NandFlash 启动等… uboot 要能够开机启动,必须根据具体的 SoC 的启动设计来设计 uboot
(2)uboot 必须进行和硬件相对应的代码级别的更改和移植,才能够保证可以从相应的启动介质启动。uboot 中第一阶段的 start.S 文件中具体处理了这一块。

2.2 能够引导操作系统内核启动并给内核传参

(1)uboot 的终极目标就是启动内核
(2)linux 内核在设计的时候,设计为可以被传参。也就是说我们可以在 uboot 中事先给 linux 内核准备一些启动参数放在内存中特定位置然后传给内核,内核启动后会到这个特定位置去取 uboot 传给他的参数,然后在内核中解析这些参数,这些参数将被用来指导 linux 内核的启动过程。

2.3 能提供系统部署功能

(1)uboot 必须能够被人借助而完成整个系统(包括 uboot,kernel,rootfs 等的镜像)在 Flash 上的烧录下载工作。
(2)裸机教程中刷机( ARM 裸机第三部分)就是利用 uboot 中的 fastboot 功能将各种镜像烧录到 iNand 中,然后从 iNand 启动。

2.4 能进行 soc 级和板级硬件管理

(1)uboot 中实现了一部分硬件的控制能力(uboot 中初始化了一部分硬件),因为 uboot 为了完成一些任务必须让这些硬件工作。譬如 uboot 要实现刷机必须能驱动 iNand,譬如 uboot 要在刷机时 LCD 上显示进度条就必须能驱动 LCD,譬如 uboot 能够通过串口提供操作界面就必须驱动串口。譬如 uboot 要实现网络功能就必须驱动网卡芯片。

2.5 uboot 的 “生命周期”

(1)uboot 的生命周期就是指:uboot 什么时候开始运行,什么时候结束运行。
(2)uboot 的本质上是一个裸机程序(不是操作系统),一旦 uboot 开始 SoC 就会单纯运行 uboot (意思就是 uboot 运行的时候别的程序是不可能同时运行的),一旦 uboot 结束运行则无法再回到 uboot (所以 uboot 启动了内核后 uboot 自己本身就死了,要想再次看到 uboot 界面只能重启系统。重启并不是复活了刚才的 uboot,重启只是 uboot 的另一生)
(3)uboot 的入口和出口。uboot 的入口就是开机自动启动,uboot 的唯一出口就是启动内核。uboot 还可以执行很多特别的任务(譬如烧录系统),但是其他任务执行完成后都可以回到 uboot 的命令行继续执行 uboot 命令,而启动内核命令一旦执行就回不来了。

2.6 总结

一切都是为了启动内核

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzg2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值