Fork me on GitHub

随笔 - 997  文章 - 5  评论 - 181  阅读 - 300万 

  U-boot的整体结构和linux基本类似,编译方式一般也是非常类似的,一般的编译命令:

  make CROSS_COMPILE=arm-linux-gnueabihf- XXX(目标名)

清除命令:

  make CROSS_COMPILE=arm-linux-gnueabihf- distclean

  其实,他的目录结构也和linux'的内核比较类似,这里就对他的内核结构做个大致的介绍:

* board 目标板相关文件,主要包含各种驱动的初始化和配置,比如,SPI,USB,单板信息等

* common 独立于处理器体系结构的通用代码,主要是很多通用的接口封装,如USB,GPIO,文件系统等;

* examples可在U-Boot下运行的示例程序;如hello_world.c, timer.c,test_burst.c等

* driver 通用设备驱动,常用的通信接口驱动都有,如ddr,i2c,pci,net等

* include U-Boot头文件;尤其configs子目录下与目标板相关的配置头文件是移植过程中经常要修改的文件;

* SPL 与网络功能相关的文件目录,如bootp,nfs,tftp;

  SPL是Secondary Program Loader的简称,第二阶段程序加载器,这里所谓的第二阶段是相对于SOC中的

BROM来说的,之前的文章已经有所介绍,SOC启动最先执行的是BROM中的固化程序。

BROM会通过检测启动方式来加载第二阶段bootloader。uboot已经是一个bootloader了,那么为什么还多一个uboot spl呢?

这个主要原因是对于一些SOC来说,它的内部SRAM可能会比较小,小到无法装载下一个完整的uboot镜像,那么就需要spl,

它主要负责初始化外部RAM和环境,并加载真正的uboot镜像到外部RAM中来执行。所以由此来看,SPL应该是一个非常小

的loader程序,可以运行于SOC的内部SRAM中,它的主要功能就是加载真正的uboot并运行之。

  总体来说,u-boot的结构和linux内核还是很像的,以后在实际使用的过程中再继续分析一下代码和流程。

posted on   虚生  阅读(419)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示