IC:

特性

  • 片内启动 ROM

  • 包含具有系统内编程(ISP)功能的引导加载程序

  • 基于软件实现的 Ed25519 算法的安全启动过程

  • 支持低功耗的挂起恢复过程

  • 从 NOR Flash 启动

  • 将 PSRAM 用作存储器

启动地址

复位后,处理器将 PC 加载为矢量表中定义的复位向量的值,该地址由硬件固定。KM4 和 KM0 均从地址 0x0000_0000 启动。

CPU

启动地址

类型

KM4

0x0000_0000

KM4 ITCM ROM

KM0

0x0000_0000

KM0 ITCM ROM

引脚描述

SoC 通过 LOGUART (PB4 / PB5)或 USB 将代码下载至 Flash 中(ISP)。ISP 模式由 PB5 在启动时的状态决定。

启动模式

PB5 (DOWNLOAD_MODE)

描述

No ISP

高电平

跳过 ISP,IC 尝试从 Flash 启动

ISP

低电平

IC 通过 LOGUART/USB 进入 ISP 模式

备注

量产之后,可以通过烧写特定的 eFuse 位来永久禁止进入 ISP 模式。

启动流程

芯片上电或硬件复位后,硬件将以 150MHz 的频率启动 KM4。整个启动过程由片内 Boot ROM 处理,且始终由 KM4 执行。

在 KM4 执行 bootloader 代码时,KM4 会为 KM0 建立运行环境。

  1. KM4 启动 ROM

  2. KM4 ROM 检查是否进入 ISP 模式

  3. KM4 安全启动,ROM 验证 bootloader 签名(可选)

  4. KM4 引导至 bootloader

  5. KM4 bootloader 根据 ameba_bootcfg.c 文件重新设置 SoC 的时钟频率

  6. 开启 TrustZone 功能后,KM4 bootloader 根据 ameba_boot_trustzonecfg.c 文件建立非安全运行环境

  7. KM4 bootloader 加载 KM0 固件并验证签名(可选)

../../_images/boot_flow_dplus.svg

芯片启动流程图

启动 API

API BOOT_Reason() 用于获取芯片启动的原因,其函数原型为:

u32 BOOT_Reason(void);

这个 API 的返回值会通过 LOGUART 进行打印。初次上电时,该 API 的默认返回值为 0,其他重启原因的返回值可通过下表查询。返回值相关的宏定义位于 sysreg_aon.h 文件中。

项目

描述

简介

获取启动原因

参数

返回值

启动原因。可选值包括:

  • AON_BIT_RSTF_OCP:OCP事件触发进入深度睡眠模式

  • AON_BIT_RSTF_KM0_SYS:KM0 系统复位

  • AON_BIT_RSTF_KM4_SYS:KM4 系统复位

  • AON_BIT_RSTF_WDG0:KM0 看门狗复位

  • AON_BIT_RSTF_WDG1:KM4 安全看门狗复位

  • AON_BIT_RSTF_WDG2:KM4 非安全看门狗复位

  • AON_BIT_RSTF_WARM_KM42PERI:KM4 热复位

  • AON_BIT_RSTF_WARM_KM02PERI:KM0 热复位

  • AON_BIT_RSTF_DSLP:从深度睡眠模式唤醒

  • AON_BIT_RSTF_BOR:BOR 复位