AM243X 的 ccs使用

什么是 Bootloader

bootloader 是一个软件/固件,只要你打开 SoC 电源就会运行。引导加载程序的主要职责是启动后续软件,例如作系统、裸机应用程序或在某些情况下的另一个引导加载程序。当涉及到嵌入式时,引导加载程序通常与底层 SoC 架构密切相关。bootloader 通常存储在受保护的非易失性片上存储器中。通常,bootloader 会执行各种硬件检查、初始化处理器并配置 SoC 寄存器等。由于 bootloader 的主要目标是加载下一个软件,因此它需要与外部世界通信以接收此固件/应用程序映像。这可以通过多种协议实现 - USB、UART、SPI、I2C、外部闪存、内部闪存、SD 卡、以太网、CAN 等。Bootloader 也是嵌入式安全的关键组件。硬件信任根通常传递到引导加载程序上,并向下传递

多阶段引导加载程序

bootloader 可以加载另一个 bootloader,在高级 SoC 中通常是这种情况,原因有很多。出于安全原因,第一个 bootloader 通常保存在安全的只读内存中,并且始终在应用程序软件启动之前具有已知状态。因此,保持此 bootloader 简单并让它只执行所需的最低配置是有意义的。这个辅助 bootloader 可以很复杂,并且可以根据应用程序的需求进行配置。与第一阶段 bootloader 相比,这也可以很容易地更新。事实上,对于 MCU+SDK 中的器件,我们有一个两阶段的引导加载——第一阶段的引导加载程序称为 ROM 引导加载程序 (RBL),第二阶段的引导加载程序称为二级引导加载程序 (SBL)

多核引导加载

当存在多阶段引导加载时,多核引导加载几乎总是跟进。在这种情况下,从技术上讲,第一个 bootloader 甚至可能不知道其他内核,它只会引导下一阶段的 bootloader,而第二个阶段的 bootloader 将处理不同内核上的复杂引导加载。

加载多核应用程序比加载单核应用程序稍微复杂一些。会有关于映像准备、共享内存访问等的担忧。大多数情况下,会有一种特定的格式来创建各个核心图像,然后它们可能会/可能不会连接成单个图像以供 SBL 加载。无论应用程序映像采用何种格式,SBL 都应该知道它,以便它可以正确分析和加载映像。

在 MCU+SDK 中引导加载

  1. ROM 引导,其中 ROM 引导加载程序引导辅助引导加载程序或 SBL
  2. SBL 引导,其中辅助引导加载程序引导应用程序

ROM 引导

RBL 或 ROM Bootloader 存储在只读存储器中,几乎被视为 SoC 的一部分。 ROM 期望提供辅助引导加载程序的 x509 签名二进制映像以供引导。

  • 一旦电路板上电,ROM 引导加载程序或 RBL 就开始运行。RBL 是主要的引导加载程序。
  • 根据选择的引导模式,RBL 将从引导介质(OSPI 闪存、SD 卡或通过 UART)加载辅助引导加载程序或 SBL。
    其余的引导由 SBL 完成。
  • RBL 希望它引导的镜像(在我们的例子中为 SBL)始终如上所述进行签名。

根据设备类型,以下是 ROM 的验证要求:
请添加图片描述
这里的device type可以通过脚本在ccs串口打印判断

系统控制器固件 (SYSFW)

对于 AM243X,还有一个称为系统控制器固件 (SYSFW) 的组件,它在启动过程和 SoC作中非常重要。顾名思义,它是在 Cortex M3 内核中运行的控制器固件,充当 SoC 的集中式服务器

  • 由于 SYSFW 提供的服务是基础服务,因此需要在辅助引导加载程序执行几乎任何作之前加载它
  • RBL 引导 SBL 和 SYSFW,我们必须专门为 RBL 准备启动映像。它将是 SBL 二进制文件、SYSFW 二进制文件和板配置二进制文件的串联,所有二进制文件都使用单个 x509 证书进行签名。
  • SBL 要做的第一件事是等待来自 SYSFW 的启动通知。
    链接: sysfw-ti

SBL引导

SBL 使用编译器和链接器工具链创建,将应用程序转换为可启动映像。

  • 构建 :使用 TI ARM CLANG 工具将 SBL 应用文件转换为二进制格式,使用签名脚本对此文件进行签名,以创建最终的可引导映像,根据我们为其构建 SBL 的设备类型,扩展将有某些前缀,如下所示:.tiimage
    • GP 设备:
      • sbl_xxx.release.tiimage[前面没有前缀,纯图像].tiimage
    • HS-FS 设备:
      • sbl_xxx.release.hs_fs.tiimage [hs_fs前缀.tiimage]
    • HS-SE 设备:
      • sbl_xxx.release.hs.tiimage [hs前缀.tiimage]

请添加图片描述

  • 启动:在 AM243X 上,上电后 ROM 启动 SBL 并将 SBL 的入口点设置为 R5FSS0-0 和 R5FSS0-1,仅在 Core0 上运行。并保持 Core1 在循环中。进入后,请务必调用 等待 SYSFW 的启动。

  • 引导
    SBL 通常会执行一系列特定于 SOC 的初始化,然后继续加载应用程序。
    根据加载的 SBL 类型,SBL 在引导介质中的指定位置查找应用程序二进制文件的多核 appimage(有关多核 appimage 的更多信息,请参阅引导工具)。
    如果找到 appimage,则多核 appimage 将被解析为多个 RPRC。这些是经过优化的二进制文件,然后加载到各个 CPU 中。
    每个 RPRC 映像都将包含有关要加载它的内核、入口点和该应用程序二进制文件的多个部分的信息
    SBL 使用此信息初始化具有有效 RPRC 的每个内核。然后,它根据指定的部分加载 RPRC,设置入口点并从 reset 中释放内核。现在,核心将开始运行。
    请添加图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值