linux arm 重启,ARM Linux重启过程

重启过程如何在运行Linux的ARM SOC上运行,??

目前使用的典型ARM处理器与外设集成在单个IC上,称为SoC,片上系统。通常,重启过程几乎与开机启动过程相同。在复位时,ARM处理器通常会跳转到地址0。

主存储器,例如DRAM和非易失性存储器,例如, NAND闪存通常位于SoC外部(具有Linux功能),可实现最大的设计灵活性

但通常有一个小的(可能是128KB)嵌入式ROM(只读存储器)来初始化最小系统组件(例如时钟,外部存储器)以开始自举操作。处理器复位将导致执行此引导ROM。 (该ROM是真正的只读,不能修改。在芯片制造过程中,代码被掩盖在硅片中。)

SoC可能有一个捆绑选项来代替执行外部启动存储器,例如NOR闪存或EEPROM,它们可以直接执行(即XIP,就地执行)。

第一阶段引导程序使用的任何ROM,闪存和SRAM的显着特征是在复位后必须立即访问这些存储器。

引导使用DRAM作为主存储器的系统的一个问题是其硬件初始化。在将代码加载到DRAM中并执行之前,必须用特定于板的参数初始化DRAM存储器控制器。那么这个特定于电路板的初始化代码从何处执行,因为它不能存在于主存储器中?

每个供应商都有自己的解决方案

有些要求将存储器配置数据存储在非易失性存储器中以供引导ROM访问

一些SoC集成了SRAM(不需要像DRAM这样的初始化)来执行一个小的第二阶段自举程序

一些SoC使用NOR闪存来保存XIP(就地执行)引导程序(例如U-Boot的SPL程序)。

每个SoC供应商都有自己的引导方法来加载和执行操作系统

有些使用硬件捆绑读取GPIO引脚来确定引导序列下一阶段的来源

另一个供应商可以使用有序的存储器和设备列表来探测引导程序

另一种技术是分支到NOR闪存中的固件,可以直接执行(即XIP,就地执行)。

一旦引导程序初始化了DRAM,那么这个主存储器可用于加载下一级引导。这可能是一个复杂的启动实用程序,如U-Boot,或者(如果引导程序能够)Linux内核。 ROM引导程序可以完成加载ARM Linux内核(例如ETRAX)的所有操作,但更常见的是在处理器重置与执行OS之间会有多个引导程序或阶段。

以下文档中详细说明了引导Linux ARM内核的要求:Booting ARM Linux

较早版本的Linux ARM使用ATAG列表将基本配置信息传递给内核。现代版本使用设备树的编译二进制文件提供完整的电路板配置。

...例如,引导装载程序是否重新初始化DDR内存?

在我看到的几个例子中,启动程序无条件地配置动态RAM控制器。

PC具有BIOS和开机自检,即POST。 POST的执行是上电复位(又称冷启动)与软件复位(也称为热启动或重启)之间的主要区别。 ARM系统通常不执行POST,因此您通常会看到重置类型之间的差异很小甚至没有差异。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值