通用调试指令¶
本文档基于AT通用指令手册额外介绍了部分调试指令
AT+SGPIO GPIO设置¶
指令概述¶
AT+SGPIO 是用于设置或读取 GPIO管脚的状态指令,支持设置 GPIO 的输入/输出模式以及读取 GPIO管脚状态。具体模块对应的GPIO编号参考:
语法规则¶
| 命令类型 | 语法 | 返回 |
|---|---|---|
| 设置GPIO输出 | AT+SGPIO=0,<gpionum>,1,<value> |
OK |
| 设置GPIO输入 | AT+SGPIO=0,<gpionum>,0 |
OK |
| 读取GPIO状态 | AT+SGPIO=1,<gpionum> |
+SGPIO: <gpionum>,<value> OK |
| 测试命令 | AT+SGPIO=? |
+SGPIO: (0-1),(0-120),(0-1),(0-1) OK |
参数定义¶
| 参数 | 定义 | 取值 | 取值说明 |
|---|---|---|---|
<gpionum> |
GPIO编号 | 0 ~ 120 | GPIO 引脚索引。 [特殊值:100表示WAKUEP0,101表示WAKEUP1,依此类推。] |
<value> |
输出值 | 0 或 1 | 指定GPIO的输出电平 |
举例说明¶
| 命令(→)/返回(←) | 实例 | 说明 |
|---|---|---|
| → | AT+SGPIO=0,10,1,1 | 设置GPIO10输出高电平 |
| ← | OK | 执行成功 |
| → | AT+SGPIO=0,10,1,0 | 设置GPIO10输出低电平 |
| ← | OK | 执行成功 |
| → | AT+SGPIO=1,10 | 读取GPIO10状态 |
| ← | +SGPIO: 10,1 OK |
返回GPIO10状态为高电平 |
| → | AT+SGPIO=0,10,0 | 设置GPIO10为输入模式 |
| ← | OK | 执行成功 |
| → | AT+SGPIO=1,100 | 读取WAKEUP0管脚状态 |
| ← | +SGPIO: 100,0 OK |
返回WAKEUP0管脚状态为低电平 |
AT+CHEAP 查询heap空间¶
语法规则¶
| 命令类型 | 语法 | 返回 |
|---|---|---|
| 设置命令 | AT+CHEAP | AT+CHEAP total_heap_size: 253896 curr_free_heap: 197796 min_free_heap: 190100 max_free_block: 189292 OK |
| 测试指令 | AT+CHEAP=? | OK |
参数定义¶
| 参数 | 定义 取值说明 | | --------------- | ------------------------------ | ------------ | | total_heap_size | 总的heap空间 | 单位:字节 | | curr_free_heap | 当前可用heap空间 | 单位:字节 | | min_free_heap | 运行过程中,剩余的最小heap空间 | 单位:字节 | | max_free_block | 单次能分配的最大heap空间 | 单位:字节 |
举例说明¶
AT+CHEAP
total_heap_size: 251224
curr_free_heap: 186732
min_free_heap: 185024
max_free_block: 182396
OK
AT*EXASSERT 设置调试模式¶
语法规则¶
| 命令类型 | 语法 | 返回 |
|---|---|---|
| 设置命令 | AT*EXASSERT=<assert_mode>[,<debug_info>[,<info_period>]] |
OK |
参数定义¶
| 参数 | 定义 | 取值 | 取值说明 |
|---|---|---|---|
<assert_mode> |
设置调试模式 | 1 | 开启 debug 模式(软件异常时设备进入 dump 模式等待工具 dump 现场) |
| 0 | 关闭 debug 模式 | ||
<debug_info> |
调试信息 | 1 | 触发主动assert异常 |
| 2 | 显示开机原因、堆内存信息 | ||
| 3 | 在2基础上,增加task信息 | ||
| 4 | 在3基础上,增加休眠信息。休眠信息较为复杂,也可通过AT+CSLEEP指令简单确认 |
||
| info_period | 调试信息显示周期 | 1000-16777215 | 显示调试信息周期(单位ms) |
举例说明¶
################# 查询开机原因,堆内存信息
AT*EXASSERT=1,2
OK
power on reason: POWERKEY
heap:
total free min_free
245KB 184KB 180KB
#######################################
########################### 查询task信息
AT*EXASSERT=1,3
OK
power on reason: POWERKEY
heap:
total free min_free
245KB 184KB 180KB
task list:
task name state prio task no
CmsTask R 26 280 6
Ccio2TxTask R 25 255 95
CcioRxTask R 24 345 85
IDLE R 1 431 16
Tmr Svc B 40 937 17
usbpm S 24 100 104
...
task name run time cpu
CmsTask 72 <1%
Ccio2TxTask 0 <1%
CcioRxTask 2 <1%
...
#######################################
########################### 查询休眠信息
AT*EXASSERT=1,4
OK
task name state prio task no
CmsTask R 26 280 6
Ccio2TxTask R 25 255 95
CcioRxTask R 24 345 85
IDLE R 1 431 16
Tmr Svc B 40 937 17
RIL S 24 1147 255
...
task name run time cpu
CmsTask 110 <1%
Ccio2TxTask 5 <1%
...
Sleep Vote Info:
Deepest Sleep Mode: Idle
(说明: 返回允许进入的最深的睡眠模式。具体可参考头slpman.h 中的接口:
slpManSetPmuSleepMode.)
EC SDK Vote for: Slp2 (说明: SDK 内部投票结果)
Detail: 0x0,0x0,0x4
Application Vote for: Hibn
(说明: 正常情况下, 应用会调用头文件slpman.h中的 API来控制进入睡眠,此部分返回应用投票的结果)
Handle: 0 Name: usbpm Prohibit State: NULL Vote count: 0
Handle: 1 Name: platsock Prohibit State: NULL Vote count: 0
(说明: 应用层的投票信息包含:投票handle, 投票名称, 投票状态 和 投票次数。
其中, Prohibit State 的状态可以设置为: “NULL”,“Slp1”, “Slp2”, “Hibn”
Prohibit State: NULL 不投票,可以进入任意睡眠模式
Prohibit State: Slp2 禁止进入Sleep2, 表明只能进入Sleep1及以上)
User defined Sleep Callback Vote for: Hibn
(说明: 用户自定义的sleep UsrSlpDepth callback投票是由slpManRegisterUsrSlpDepthCb函数注册的。)
Driver Vote bitMap: 0x4, with vote mask: 0x0
(说明:驱动投票的结果和投票掩码信息,bitmap和slpman_ec616.h中的slpDrvVoteModule_t的枚举
类型对应。投票掩码表示忽略投票的结果。例如:
例如:
驱动投票的bitMap: 0x9, 投票掩码: 0x8
Driver Vote bitMap: 0x9, with vote mask: 0x8
此时,UART和I2C都不允许睡眠,投票的bitMap:1001,但是此时投票的掩码:1000,代表着I2C的
投票结果不影响睡眠。)
Doze Vote: 0x0
CP sleeped: 1, Vote to: 1 (slp1/2/hib/none)
(说明: CP 投票的社会面深度和投票状态)
CP sleepEn: 1
AT*I 查询各种信息¶
语法规则¶
| 命令类型 | 语法 | 返回 |
|---|---|---|
| 设置命令 | AT*I | Manufacturer:<manufacturer>Model: <model> Revision: <revision> HWVer: <hwver> Buildtime: <Buildtime> IMEI: <imei>ICCID:<iccid>IMSI:<imsi> OK |
参数定义¶
| 参数 | 定义 | 解释 |
| -------------------- | ------------------------------------------------------------ |
| <manufacturer> | +CGMI 命令的返回 |
| <model> | +CGMM命令的返回 |
| <revision> | +CGMR命令的返回 |
| <hwver> | 硬件版本 |
| <Buildtime> | 版本固件的编译时间 |
| <imei> | 同+CGSN命令的返回值 |
| <iccid> | 同+ICCID命令的返回值 |
| <imsi> | 国际移动台用户识别码(International Mobile Subscriber Identity) |
举例说明¶
AT*I
Manufacturer: Yuga Co.,Ltd.
Model: YM310 X09
Revision: YM310.X09C_AT.S61_R4.2.2.260514
HWver: V1
Buildtime: May 14 2026 18:26:59
IMEI: 860935072458322
ICCID: 898602001225F0467840
IMSI: 460076333922262
OK
AT+ECPCFG 设置平台配置信息¶
语法规则¶
| 命令类型 | 语法 | 返回 |
|---|---|---|
| 设置命令 | AT+ECPCFG=<mode>,<value> |
OK |
| 测试指令 | AT+ECPCFG? |
faultAction:<value>uartDumpPort :<value>startWDT:<value>logCtrl:<value>logLevel:<value>logBaudrate:<value>slpWaitTime:<value>logPortSel:<value>usbCtrl:<value>usbSwTrace:<value>usbSlpMask:<value>usbSlpThd:<value>pwrKeyMode:<value>usbNet:<value>fotaUrcBaudrate:<value>fotaUrcPortSel:<value> |
| 测试命令 | AT+ECPCFG=? |
ECPCFG: <option>,<setting> |
参数定义¶
| 参数 | 取值 |
|---|---|
<mode> |
faultAction 设置产生hardfault后的行为模式, 重启生效 |
| uartDumpPort 是否将Dump输出到AT口, 重启生效 | |
| startWDT 开启WDT, 重启生效 | |
| logCtrl 设置LOG控制模式, 重启生效 | |
| logLevel 设置LOG输出打印级别 | |
| logBaudrate 设置LOG输出波特率, 重启生效 | |
| slpWaitTime 设置睡眠延迟时间, 重启生效 | |
| logPortSel 设置LOG输出选择(串口/USB), 重启生效 | |
| usbCtrl 设置USB控制模式(RNDIS/USB),重启生效 | |
<value> |
对于faultAction, 其取值范围是0~4 : |
| 0: 输出所有的异常信息到Flash和EPAT工具中,然后UE进行无限循环 | |
| 1: 输出必要的异常信息然后重启UE | |
| 2: 输出所有的异常信息到Flash中然后重启UE | |
| 3: 输出所有的异常信息到Flash和EPAT工具中,然后重启UE | |
| 4: 直接重启,建议在量产阶段采用,避免出现因为出现Dump而死机的情况 | |
| 10: 输出所有异常信息到Flash和EPAT中(USB输出失败会使能UART输出),然 后UE进行无限 | |
| 13: 输出所有异常信息到Flash和EPAT中(USB输出失败会使能UART输出),然 后重启UE | |
| 对于uartDumpPort, 取值范围是0~255: | |
| 0-n(取决于串口Port的个数): 串口的Port Index号 | |
| 255: 禁止串口Dump输出 | |
| 对于startWDT, 取值范围是0或者1: | |
| 0: 停止启动WDT | |
| 1: 启动WDT,建议在量产阶段启动 | |
| 对于logCtrl, 取值范围是0~2: | |
| 0: 禁止UNILOG输出 | |
| 1: 只有软件LOG才输出 | |
| 2: 所有LOG都输出 | |
| 对于logLevel, 其取值范围是0~5 : | |
| 0: debug log 级别 | |
| 1: info log 级别 | |
| 2: value log 级别 | |
| 3: signal log 级别 | |
| 4: warning log 级别 | |
| 5: error log 级别 | |
| 对于logOwnerId, 其取值范围是0~7 : | |
| 0: HW log owner | |
| 1: phy_online log owner | |
| 2: phy_offline log owner | |
| 3: plat_ap log owner | |
| 4: plat_cp log owner | |
| 5: ps1 log owner | |
| 6: ps2 log owner | |
| 7: resv for customer | |
| 对于logOwnerLevel, 其取值范围是0~5 : | |
| 0: debug log level | |
| 1: info log level | |
| 2: value log level | |
| 3: signal log level | |
| 4: warning log level | |
| 5: error log level | |
| 例如,配置了AT+ECPCFG=” logOwnerId”,1,” logOwnerLevel”,4 命令后, 就只 打印” phy_online”模块的”warning log”和”error log”,其他log如” signal log”不再 打印 | |
| 对于logOwnerId&logOwnerLevel, 其取值范围是0~0xFFFFFF : | |
| 默认值是0, bit0-2表示” HW log owner”,存储的值表示当前owner的log level, bit3-5表示” phy_online log owner”, 存储的值表示当前owner的log level,其他 以此类推 | |
| 例如,配置了AT+ECPCFG=” logOwnerId”,1,” logOwnerLevel”,1 命令, “logOwnerId&logOwnerLevel” 的值应该是0x000008 | |
| 对于logBaudrate, 其取值范围是921600~6000000(6M) | |
| 对于slpWaitTime, 其取值范围是0~0xffff | |
| 对于logPortSel, 取值范围是:0~3 : | |
| 0: USB输出LOG(默认) | |
| 1: UART0输出LOG | |
| 2: USB和UART0同时输出LOG | |
| 3: Unilog 输出到指定Dump区域,异常时用于Flash Dump | |
| 对于usbCtrl, 取值范围是0~2 : | |
| 0: 使能并初始化USB, 启用RNDIS功能 | |
| 1: 使能并初始化USB, 禁止RNDIS功能 | |
| 2: 禁止USB(不使用USB并且不初始化USB) | |
| 对于usbSwTrace, 取值范围是0或者1: | |
| 0: 禁用USB软件trace | |
| 1: 启用USB软件trace | |
| 对于usbSlpMask, 取值范围是0或者1: | |
| 0: USB会参与投票进入睡眠 | |
| 1: USB不会参与投票进入睡眠 | |
| 对于usbSlpThd, 取值范围是0~65535 | |
| 对于pwrKeyMode,取值范围是:0~2 : | |
| 0: PWRKEY 内部上拉,不防抖 | |
| 1: PWRKEY 内部上拉,防抖 | |
| 2: PWRKEY 内部取消上拉(PWRKEY接GND的时候使用) | |
| 对于usbNet, 取值范围是:0或者1 | |
| 0: 选择RNDIS网络接口 | |
| 1: 选择ECM网络接口 | |
| 对于fotaUrcBaudrate, 此处仅作读命令 | |
| 对于fotaUrcPortSel, 具体分为2部分,高4比特表示端口类型,低4比特表示端 口号 : | |
| 高4比特: 0表示USB端口类型,1表示UART端口类型 | |
| 低4比特: USB端口取值范围0-2,UART端口取值范围0-1 |
举例说明¶
at+ecpcfg?
+ECPCFG: "faultAction":4,"uartDumpPort":1,"startWDT":1,"logCtrl":2,"logLevel":0,"logBaudrate":3000000," slpWaitTime":0,"logPortSel":0,"usbCtrl":0,"usbSwTrace":0,"usbSlpMask":0,"usbSlpThd":0, "pwrKeyMode":0,"usbNet":0
OK