u-boot启动流程详解:从XIP设备到重定位
创作时间:
作者:
@小白创作中心
u-boot启动流程详解:从XIP设备到重定位
引用
CSDN
1.
https://blog.csdn.net/u011456016/article/details/139666459
本文详细介绍了u-boot的启动流程,包括XIP设备、BootROM的作用、SPL(Secondary Program Loader)、重定位等关键概念,并通过具体的启动流程图进行了说明。
一、XIP设备
XIP设备是指一种可以直接在存储器中执行程序代码的设备,而不需要将代码复制到内存中。XIP的全称是eXecute In Place,即芯片内执行。这类设备包括片内的SRAM、NOR Flash、BootROM等。
XIP设备的启动方式是系统上电之后CPU执行的第一条指令是直接在非易失性存储器中执行的,比如被存储在flash中的启动程序,便可以直接在flash中执行,而不需要拷贝到内存中运行。这种启动方式的特点是节省了从存储器到内存的复制过程,从而减少了启动时间和资源消耗。
二、BootROM的作用
支持多种启动方式(如SD卡、EMMC、USB、UART启动)的芯片,内部必定有BootROM。BootROM的主要作用是硬件初始化,并将程序从非XIP设备复制进RAM,然后从RAM中执行。
支持多种启动方式的方法有两种:
- 芯片有boot pin,决定使用哪个外设。bootrom根据引脚决定读取哪个设备的程序
- 芯片有boot pin,决定多种外设的尝试顺序
三、完整的u-boot复制进内存
由于片内RAM容量有限(只有几KB),而用户程序可能有几百KB或几MB,因此需要采用以下方法:
- BootROM从启动设备读取用户程序的前几KB到SRAM,运行它;这前几KB的代码负责:初始化DDR、把完整的程序从启动设备复制到DDR、并跳到DDR运行。
- BootROM从启动设备读取SPL到SRAM,运行它;SPL负责:初始化DDR、把用户程序从启动设备复制到DDR、并跳到DDR运行。
四、SPL
SPL全称叫做Secondary Program Loader,实质上是一个二级加载程序。由于SRAM容量有限(通常只有几KB),而u-boot编译后可能有几百KB,因此需要采用以下方法:
- 放不下就放不下呗,BootROM加载多少算多少;
- 做一个小一点的boot程序,先让BootROM加载这个小的程序,后面再由这个小boot去加载u-boot。
五、重定位
重定位就是uboot将自身拷贝到DRAM的另一个地方去继续运行(DRAM的高地址处)。链接地址和运行地址的关系:正常情况下链接地址 = 运行地址,当运行地址等于链接地址时,程序肯定能运行。
位置无关码:从本质上讲,位置无关码就是代码中跳转或者取值、赋值的目标地址都使用相对地址,位置有关码使用的是绝对地址。
重定位的两种方法:
- 链接地址是Addr_A,拷贝到Addr_A去运行,此时链接地址和运行地址相等,程序可以正常运行。
- 链接地址是Addr_A,拷贝到Addr_B去运行,运行地址和链接地址就不一样了,这样在进行寻址就会出问题,解决办法就是使用位置无关码,对.rel.dyn的定位问题进行修复,就是为了解决该问题。
六、启动过程总结
热门推荐
青岛五大打卡圣地:冬日里的浪漫之旅
青岛历史建筑探秘:德国总督楼、天后宫、八大关,citywalk打卡攻略
栈桥徒步,解锁青岛最美海岸线
子时鼠、丑时牛:揭秘十二生肖与时辰的完美对应
贫困中的坚守,逆境中的乐观:两位诗人的十二时辰
中国国家地理带你玩转江西摄影之旅
庐山四季旅游攻略:春赏花、夏避暑、秋赏红叶、冬赏雪
江西秋收冬藏:科技助力,政策扶持,农民增收
中药调理、口腔清洁等四法,科学应对口干口苦
高职高考数学考试答题技巧
布宜诺斯艾利斯:阿根廷的文化心脏
探秘阿根廷三大必打卡景点:布宜诺斯艾利斯、伊瓜苏瀑布和乌斯怀亚
莫雷诺冰川:阿根廷的自然奇迹
感冒用药指南:五大误区要避免,四类感冒这样选药
严控的感冒药成分:伪麻黄碱的医药价值与毒品风险
一壶浊酒半卷书:这副对联为何如此惊艳?
长筱之战:武田信玄的战术传奇
武田信玄的“风林火山”:从战国战场到现代文化
武田信玄:日本战国的最强军师
北京市商务局教你合法处理报废车辆
驾驶报废车被罚,环保出行成新宠
报废车回收:环保新时尚
营养均衡,让你的眉毛“逆天改命”
眉毛变化真的能透露健康秘密吗?
压力山大,眉毛先“秃”?
50岁后眉毛变长是健康预警?科学解读来了
车载收音机改装指南:让你家秒变音乐厅
高速突发抖动险酿大祸,车主分享轮胎保养全攻略
3-5分钟撬动全球市场:中国短剧的TikTok出海之道
威海至九寨沟自驾游过路费详解