Edit online

关键流程设计

3 Mar 2025
Read time: 2 minute(s)

本节描述了 WRI 模块的关键流程设计。

Reboot Reason 的设计

WRI 模块需要和 RTC 模块的 SYS_BAK 寄存器一起配合来完成 Reboot Reason 的处理:

  1. WRI 负责记录硬件可监测到的 Reboot 原因,如过温保护、看门狗复位、外部输入复位等。
  2. SYS_BAK 负责记录软件可监测到的 Reboot 原因,如 Suspend、Panic、进入烧写模式、正常重启等。

关于 Reboot 原因,梳理分类如下:


reboot_reason

1. 各种情况的 Reboot reason 梳理
提示:

外部 IO 复位指常用的 Reset 按键。

定义 SYS_BAK0 寄存器(4~7bit) 的值如下:(详见 include/linux/reboot-reason.h

enum aic_reboot_reason {
    REBOOT_REASON_COLD = 0,
    REBOOT_REASON_CMD_REBOOT = 1,
    REBOOT_REASON_CMD_SHUTDOWN = 2,
    REBOOT_REASON_SUSPEND = 3,
    REBOOT_REASON_UPGRADE = 4,
    REBOOT_REASON_FASTBOOT = 5,

    /* Some software exception reason */
    REBOOT_REASON_SW_LOCKUP = 8,
    REBOOT_REASON_HW_LOCKUP = 9,
    REBOOT_REASON_PANIC = 10,
    REBOOT_REASON_RAMDUMP = 11,

    /* Some hardware exception reason */
    REBOOT_REASON_RTC = 17,
    REBOOT_REASON_EXTEND = 18,
    REBOOT_REASON_DM = 19,
    REBOOT_REASON_OTP = 20,
    REBOOT_REASON_UNDER_VOL = 21,
};

针对不同场景,SYS_BAK0 寄存器中的 Reboot reason 和 WRI 中的 RST_FLAG 值对应如下:

场景

触发行为

WRI 状态

SYS_BAK 状态值

正常重启

Reset 按键

EXT_RST

COLD

Shell 中执行 reboot 命令

WDOG_RST

CMD_REBOOT

Shell 执行 aicupg 命令进入烧写

WDOG_RST

UPGRADE

正常关机

长按 PowerOn 按键

SYS_POR

COLD

Shell 中执行 poweroff 命令

SYS_POR

CMD_SHUTDOWN

进入深度休眠状态

SYS_POR

SUSPEND

异常重启

过温保护

OTP

COLD

通过 JTAG 执行 reset 命令

DM_RST

COLD

RTC 模块断电

RTC_POR

COLD

内核中发生 SW Lock

WDOG_RST

SW_LOCKUP

内核中发生 HW Lock

WDOG_RST

HW_LOCKUP

内核中发生 PANIC

WDOG_RST

PANIC

内核中触发进入 RAMDUMP

WDOG_RST

RAMDUMP

电源电压不稳定

CMP_RST

COLD

注:

其中按 Reset 按键的情况,因为软件来不及设置 SYS_BAK,所以为初始值 0 (COLD)。