uboot设计原则

来源:互联网 发布:高颜值 知乎 编辑:程序博客网 时间:2024/06/06 08:42

uboot 10条黄金设计原则


本文翻译自uboot网站U-Boot Design Principles

uboot是一个引导加载器,它的主要目标是装载操作系统。那就意味着uboot必须执行一个特定的任务,但是你丢给它很多重要的资源毫无意义。通常uboot保存在相对小的NorFlash内存上,它比NandFlash更加昂贵,通常用来保存操作系统和应用软件。

当前,uboot支持板载128kB的ROM或者256kB的NorFlash。我们不应该简单忽略这些配置–在众多的其他单板中,它们是例外。但是,因为一块单板可能制造成千上万甚至百万,在设计时,通常硬件启动部分的费用很苛克。

一个有用和可用的uboot配置,包含一个基础的交互命令解释器,支持从网口下载支持超过128kB的Flash编程。

我将bootloader翻译为引导加载器,也就是计算机启动首先要执行的一种软件。

Nor Flash是一种可以保存数据,掉电不丢失数据,但是可以快速执行的内存芯片。

快速

最终的用户对运行uboot不感兴趣,甚至在嵌入式系统中都不知道有它的存在。用户想拿到设备后,尽快能去执行应用程序。

所以uboot的核心是尽可能的快,特别是装在和引导操作系统尽可能的快。

为了实现这些,需要按照下面的设计原则:

  • 任何时候,尽可能的快速使能cache
  • 只初始化uboot需要的设备,不需要初始化网口 ,除非需要从网络下载;不要初始化IDE或者USB设备,除非需要从usb读取文件,等等。(不要忘记关闭,当使用完–否则你会在引导系统是发现一些恶心的事情)。

同时,构建uboot应该尽可能快。对于所有的可支持配置或者一些架构的指定配置,这会使它更容易运行一个构建,这也是一个质量保证的核心。如果构建很笨重和缓慢,大多数人会忽略这重要的一步。

简单

uboot是一个引导加载器,但也是一个工具,用于启动单板,用于产品测试,和用于其他活动。

可移植

uboot是一个引导加载器,但也是一个工具,用于启动单板,用于产品测试,和用于其他活动, 通常和硬件开发密不可分。截止目前,它已经移植到几千类不同的单板,30多种不同处理器家族–请确保你的代码尽可能支持不同的平台。

任何时候避免使用汇编–只有启动代码包含基本cpu初始化,大概一个静态DRAM初始化和C语言堆栈安装需要使用汇编,所有未来的初始化都是用c,使用汇编/c的子程序或者宏。

可配置

可调式

可用

可维护

开放

贡献你的工作反馈到整个社区,提交你改变和扩展的补丁包到Uboot邮件列表。


黄金规则的前提

  1. 通用代码是好代码
    新代码应该尽可能通用,并且添加到Uboot尽可能高的抽象层。在单板文件夹下尽可能少增加不可重用的代码。外围驱动应该放在“驱动”目录下,甚至一个简单的配置项的驱动。
0 0
原创粉丝点击