Skip to content

通用调试指令

本文档基于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都不允许睡眠,投票的bitMap1001,但是此时投票的掩码: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