U-Boot架构浅析之u-boot架构的特点分析

导读:嵌入式     Linux   系统搭建,bootloader是必不可少的一环,而U-Boot已成嵌入式Linux事实标准。所以较为深入的分析U-Boot的设计,对于更好的理解U-Boot的工作原理有着重要意义。

 1. U-Boot简介

Das U-Boot 是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的     计算机   系统结构,包括PPC、     ARM   、A     VR   32、     MI   PS、x86、68k、N     ios   与MicroBlaze。这也是一套在GNU通用公共许可证之下发布的自由软件。《百度百科》

见http://www.denx.de/wiki/U-Boot

如其官网上所述,具有十大黄金法则:小巧、快速、简单、可移植、可配置、可调试、易用、可维护、优雅、开源。

(1. Keep it Small,2. Keep it Fast,3. Keep it Simple,4. Keep it Portable;5. Keep it Configurable;6. Keep it Debuggable;7. Keep it Usable;8. Keep it M     ai   ntainable;9. Keep it Beaut     if   ul;10. Keep it Open)

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

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

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

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

 U_Boot架构浅析之u_boot架构的特点分析_设计制作_模拟技术

arch 体系架构依赖

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

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

board 板级依赖实现。

cmd shell命令实现

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

configs 板级配置文件

disk 磁盘分区实现

doc 文档

drive     rs   通用设备驱动程序

examples 应用示例代码

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

include 头文件

lib 通用库

license

net 网络通讯实现

post 上电自检是实现

scripts 构建脚本以及Makefile

    te   sts 各种单元     测试  

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

 3. 项目管理

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

 U_Boot架构浅析之u_boot架构的特点分析_设计制作_模拟技术

 4. 模块层次架构分析

 U_Boot架构浅析之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架构浅析之u_boot架构的特点分析_设计制作_模拟技术

 5.2 C执行阶段

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

 U_Boot架构浅析之u_boot架构的特点分析_设计制作_模拟技术

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

32
27
0
54

相关资讯

  1. 1、《美国队长2》口碑爆棚IMAX立体展现美队风采4440
  2. 2、菲比沃勒出演夺宝奇兵5,与哈里森演对手戏,网友:琼斯孙女吗?728
  3. 3、《印度暴徒》创印度影史新记录阿米尔·汗颠覆形象饰演江湖骗子653
  4. 4、日本新片展开幕片《北斋》:讲述浮世绘背后不为人知的故事4450
  5. 5、盘点几位爱上“小男人”的印度女演员最多的和男友相差整整一轮4051
  6. 6、《如懿传》热播袁祎一浮出水面对戏辛芷蕾无奈命苦2676
  7. 7、红过林志颖,因得罪日本老板被封杀,现事业不顺婚姻却很幸福4040
  8. 8、华谊兄弟成立20周年庆典近百巨星将齐聚共庆1725
  9. 9、《新洗冤录》剧照曝光!欧阳震华:投资人看了都称赞!2777
  10. 10、王晶新作追龙,甄子丹刘德华明星阵容,被誉为其最了不起的作品2332
全部评论(0)
我也有话说
0
收藏
点赞
顶部