项目概述
本案例使用移远通信pico开发板和UniRTOS,实现了一个获取模组开机原因的简单示例。在程序开发过程中,难免会遇到模组重启的情况,此时可通过获取开机原因来判断异常重启的根源,这对调试程序异常十分有利。
功能特性
基于专用API的精准开机溯源
- 实时开机原因识别:程序启动后立即调用底层功能函数,精准获取并解析本次系统上电的原因。
- 全面原因覆盖:支持识别多种开机触发源,包括但不限于:主电源上电(Power-On)、软件指令重启(Soft Reset)等。
- 单次高效查询:仅需一次函数调用即可完成原因获取,无需持续轮询,资源消耗极低。
开发准备
硬件要求

- USB数据线(USB-A转USB-C),点此购买。

软件要求
-
-
unirtos-toolchain.exe:编译工具链安装程序,
点此获取。
-
QFlash.exe:模块固件烧录程序,用于烧录UniRTOS编译生成的固件,
点此获取。
-
USB驱动:用于PC识别模块的USB枚举口,
点此获取。
-
EPAT工具:芯片厂商提供的日志捕获工具,用于查看模块运行日志以分析应用程序执行情况,
点此获取。
快速上手
下载项目
示例代码位于UniRTOS官方创客仓库,点此访问下载。
添加项目到UniRTOS SDK
SDK新增Demo,固件编译和烧录请参考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中的自动重启函数导致的。请根据测试需求自行选择是否使用,如无需使用,请将其注释掉。