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 汇编程序执行阶段

5.2 C执行阶段

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

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

关于嵌入式操作系统就介绍完了,您有什么想法可以联系小编。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查