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的架构设计分析了一下。还有很多设计细节有待深挖。文中仅代表个人理解观点,错误在所难免,欢迎交流。
关于嵌入式操作系统就介绍完了,您有什么想法可以联系小编。