如何快速获取开机原因?

这是一个获取模组开机原因的简单示例,在程序开发工程中难免会遇到模组重启,这时候通过获取开机原因,以便判断异常重启的原因,这对调试程序异常十分有利。本案例使用移远通信EG800Z-CN开发板和UniRTOS,通过EPAT日志查看开机原因。

功能特性

基于专用API的精准开机溯源

  • 实时开机原因识别:程序启动后立即调用底层功能函数,精准获取并解析本次系统上电的原因。

  • 全面原因覆盖:支持识别多种开机触发源,包括但不限于:主电源上电(Power-On)、软件指令重启(Soft Reset)等。

  • 单次高效查询:仅需一次函数调用即可完成原因获取,无需持续轮询,资源消耗极低。

开发准备

硬件要求

软件要求

快速上手

下载项目

示例代码位于UniRTOS 官方创客仓库,点此访问下载

添加项目到UniRTOS SDK

CSDK新增Demo,固件编译和烧录请参考UniRTOS板块的快速启动栏或UniRTOS文档中心的快速入门部分

硬件连接

使用USB数据线连接开发板和电脑即可。

日志展示

代码概览

主要功能接口

unir_test_demo_init - 入口与初始化函数
  • 功能: 这是整个 UART 演示功能的入口点。它的主要职责是创建并启动一个独立的任务(线程),让具体逻辑在后台运行,而不阻塞主程序。

  • 关键操作:

    • 任务创建: 调用qosa_task_create来创建一个名为 uart_demo 的新任务。这个新任务将执行unir_pwrkey_demo_boot_cause函数。
  • 重要性: 这是用户需要在自己的应用初始化流程中调用的函数,以启动 UART 功能。

unir_pwrkey_demo_boot_cause -获取开机原因并输出日志
  • 功能:获取开机原因,根据结果打印信息

  • 关键操作:

    • 获取原因:调用qosa_power_get_boot_cause,得到开机原因返回值

    • 日志打印:根据返回值,选择对应的结果,输出日志

常见问题

程序一直在自己重启?

编写的unir_pwrkey_demo_process函数中调用重启函数导致的,请自行根据测试需求选择,无需使用时进行注释。