您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

浅析U-Boot构架设计

时间:2020-05-11 11:08:38  来源:  作者:

1. U-Boot简介

Das U-Boot 是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括 PPC、ARM、AVR32、MIPS、x86、68k、NIOS 与 MicroBlaze。这也是一套在GNU通用公共许可证之下发布的自由软件。具有十大黄金法则:小巧、快速、简单、可移植、可配置、可调试、易用、可维护、优雅、开源。

所以本文试图从其设计的角度进行分析这些黄金法则,以期自己在软件工程思想的角度能有所获,同时也将自己笔记分享(Keep it open),方便与人交流,以期获得更为深入的理解与体悟。

废话说了蛮多,Let‘s go:

2. U-Boot 文件夹拓扑结构

基于 u-boot-u-boot-2016.09.y 的文件夹结构如下:

arch 体系架构依赖

api 机器架构独立 API,外部调用接口

实现 I/O,如标准化输入输出,显示,网络 API、存储 API 等,为 cmd 提供支持

board 板级依赖实现。

cmd shell 命令实现

common 与架构无关的杂项独立功能

configs 板级配置文件

disk 磁盘分区实现

doc 文档

drivers 通用设备驱动程序

examples 应用示例代码

fs 文件系统实现(cramfs,ext2,jffs 等)

include 头文件

lib 通用库

license

net 网络通讯实现

post 上电自检是实现

scripts 构建脚本以及 Makefile

tests 各种单元测试

tools 生成 S-Record 或 U-Boot 映像的工具等。

3. 项目管理

U-Boot 采用 Kconfig 进行项目管理,实现可裁剪可配置,新版 U-Boot 已支持 make menuconfig 功能,实现了易用的设计目标。其配置界面与内核一样。

浅析U-Boot构架设计

4. 模块层次架构分析

浅析U-Boot构架设计

arch 实现了不同体系结构的 CPU,指令集、设备树底层抽象,利用链接绑定实现了符号入口相对位置保持不变,故才能实现将内核镜像拷贝到内存然后进行引导的功能。lib 实现了初始化 C 运行时环境(栈 / 堆指针等的初始化),dts 实现了设备树的底层体系架构依赖的具体抽象剥离。

machine ,由于同样的内核相同,各家芯片外设都不尽相同,所以将各自个性实现剥离实现于此,这主要体系在 ARM 体系的芯片,由于 ARM 公司售卖 IP,各家芯片厂商在内核的基础上延伸出各自不同的芯片,所以需要将差异性剥离实现。

board, 实现了产业链下游,设备厂商的差异性,对于产品设计而言,需要将各自在 boot 阶段需要严格初始化的实现放在这里,比如 IO 口的初始化,产品中大部分 IO 口必须显式设置其初始状态。

driver 这里实现了 boot 阶段必要的设备驱动,如网口、显示等。

dts 实现了设备树

api 实现了基本的 IO,如标准化输入输出,显示,网络 API、存储 API 等,为 cmd 提供支持。

disk 实现了轻量级磁盘管理

fs 文件系统实现(cramfs,ext2,jffs 等)

lib 通用库,比如 CRC 算法,加密算法,压缩算法,字符串操作等

cmd 实现了 U-Boot 命令集。

net 实现网络协议层

cmd shell 命令集,调用下层实现用户接口功能,如下载,引导,存储环境变量,打印信息等。

common 是 U-Boot 主体,如系统停留在 U-Boot 阶段,CPU 始终在执行一个死循环,run_main_loop。

5. 基于 armv8 无 SPL 的启动流程分析

5.1 汇编程序执行阶段

浅析U-Boot构架设计

5.2 C 执行阶段

board_init_r 的调用,进入 C 执行阶段,如下:

浅析U-Boot构架设计

至此,粗浅的将 U-Boot 的架构设计分析了一下。还有很多设计细节有待深挖。文中仅代表个人理解观点。



Tags:   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
前言什么是数据脱敏数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护常用脱敏规则替换、重排、加密、截断、掩码良好的数据脱敏实施1、尽...【详细内容】
2021-12-28  Tags: U-Boot构架  点击:(2)  评论:(0)  加入收藏
河南最有名的“13碗面”,吃过10种以上的一定是地道河南人,你吃过几碗?河南位于黄河中下游,优越的地理位置和条件,让河南的种植业在全国脱颖而出,被称为全国的“粮仓”。小麦是河南...【详细内容】
2021-12-28  Tags: U-Boot构架  点击:(3)  评论:(0)  加入收藏
在狗界中,有些狗狗比较凶残、霸道,今天我们就来说说被称为“犬中四煞”的4种狗,请认住它们的长相,看见了要绕路走! NO1:黑狼犬产地:中国寿命:11-12年黑狼犬是狼狗的一种,长大高大威猛...【详细内容】
2021-12-28  Tags: U-Boot构架  点击:(3)  评论:(0)  加入收藏
协议下的体面离婚 2015年1月 方晴供职于一家外企,袁亮硕士毕业后开了家公司。两人相识、恋爱后走进婚姻殿堂。 方晴和袁亮的儿子小浩出生了。本该是其乐融融的三口之家,却在一...【详细内容】
2021-12-28  Tags: U-Boot构架  点击:(2)  评论:(0)  加入收藏
中国人神话世界五千年到一万年之前到底是一个什么样的世界?相信这个问题应该是困扰了大家许久吧!其实这些问题可以从远古时代的三皇五帝开始说起,三皇五帝对于中国人的影响就如...【详细内容】
2021-12-28  Tags: U-Boot构架  点击:(2)  评论:(0)  加入收藏
去年有个新闻,说的是一名印度女孩自小被欧洲有钱人家收养,长大后要回来给自己出生的村子捐钱做慈善。等她回村的时候,村里人专门为女孩修了一条路。表面上看,这貌似是个暖心的故...【详细内容】
2021-12-28  Tags: U-Boot构架  点击:(3)  评论:(0)  加入收藏
日本在今年又给大家带来了一个巨大消息,日本著名的球星本田圭佑出资设立的一家公司,正式发售了飞行摩托车。 在之前可是在电视或者是电影中才能看到的,是具备了未来科幻的一个...【详细内容】
2021-12-28  Tags: U-Boot构架  点击:(4)  评论:(0)  加入收藏
V社今日公布了2021年Steam最畅销游戏榜单,其中涵盖了本年度Steam上收入最高的100款游戏。为了得出每款游戏的总收入,Steam计算了2021年1月1日至2021年12月15日的游戏销售额、...【详细内容】
2021-12-28  Tags: U-Boot构架  点击:(3)  评论:(0)  加入收藏
“都怪我一时糊涂铸下大错,这几年为了蒙混过关,拆东墙补西墙就怕被发现,我对不起信任我的领导同事,更对不起我的家人。”内蒙古某国有合资公司原出纳员包某在庭审现场听取公诉人...【详细内容】
2021-12-28  Tags: U-Boot构架  点击:(2)  评论:(0)  加入收藏
2021年黄金价格下跌11.3%,黄金现在已经下跌了6.5%。白银价格一度下跌19.3%,白银现在已经下跌了15%。美元通胀。白银自2020年2月份以来,五家中央银行(Fed、欧洲中央银行、日本中...【详细内容】
2021-12-28  Tags: U-Boot构架  点击:(3)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条