AT指令调试指南¶
本文档介绍如何通过USB连接YM310_移芯CAT1模块进行AT指令调试,方便手动查看调试信息或进行GPIO操作。文档中涉及的AT指令说明参考AT软件/AT指令篇/调试指令。
USB AT口连接¶
1. USB驱动安装¶
YM310模块通过USB连接到电脑时,会枚举出一个AT调试口(COM口)。
- Windows系统:
- 插入YM310模块到USB口
-
系统会自动识别并安装驱动
-
Linux系统:
# 通常会自动识别为 /dev/ttyACMx 或 /dev/ttyUSBx ls /dev/ttyACM*
2. AT口识别¶
模块成功枚举后,系统会显示一个虚拟的COM口:
- Windows:在设备管理器中的"端口(COM)"下看到
- Linux:通常为
/dev/ttyACM0或/dev/ttyACM1
指令调试步骤¶
1. 连接建立¶
- 打开串口调试工具
- 选择正确的COM口
- 设置波特率为:115200(默认)
- 数据位:8,停止位:1,无校验
- 流控:None
2. 发送AT指令¶
连接成功后,可以发送AT指令进行调试:
# 测试AT指令是否正常
AT
OK
# 查询模块信息
AT*I
# 查看heap使用情况
AT+CHEAP
# 设置调试模式
AT*EXASSERT=1
3. GPIO调试示例¶
# 设置GPIO10为输出高电平
AT+SGPIO=0,10,1,1
OK
# 设置GPIO10为输出低电平
AT+SGPIO=0,10,1,0
OK
# 读取GPIO10状态
AT+SGPIO=1,10
+SGPIO: 10,1
OK
# 设置GPIO100(WAKEUP0)为输入模式
AT+SGPIO=0,100,0
OK
# 读取WAKEUP0状态
AT+SGPIO=1,100
+SGPIO: 100,0
OK
指令使用场景¶
1. AT*EXASSERT 指令使用场景¶
AT*EXASSERT 是一个功能强大的调试指令,主要用于系统状态监控和调试配置:
- 查看软件task运行状态和各task cpu占用率
- 返回所有任务列表(task name)
- 显示每个任务的运行状态(state):R-运行中, B-阻塞, S-挂起
- 显示任务优先级(prio)
- 显示CPU占用情况(run time/cpu)
- 适用于分析系统负载、查找高CPU占用任务
AT*EXASSERT=1,3
OK
power on reason: POWERKEY
heap:
total free min_free
245KB 183KB 180KB
task list:
task name state prio task no
CmsTask R 26 280 6
...
Tmr Svc B 40 937 17
...
DUMMY_ATCI S 24 1242 255
sock S 24 897 255
dns S 24 968 255
...
task name run time cpu
CmsTask 84 <1%
Ccio2TxTask 1 <1%
CcioRxTask 2 <1%
IDLE 117940 99%
...
-
设置异常调试模式
- 开启debug模式:软件异常时设备进入dump模式,等待工具dump现场 AT*EXASSERT=1 - 触发软件主动assert异常,使设备进入debug模式 AT*EXASSERT=1,1 -
查看休眠投票状态
- 显示所有任务的状态 - 显示休眠投票信息(Sleep Vote Info) - 包含Deep Sleep Mode、各模块投票情况 - 适用于调试功耗和休眠相关的问题,休眠信息较为复杂,可发FAE或研发工程师,进一步确认 AT*EXASSERT=1,4 ... 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 -
查看heap内存占用情况
- 显示heap内存信息(total/free/min_free) - 适用于内存泄漏检测和内存使用分析 AT*EXASSERT=1,2 ... heap: total free min_free 245KB 184KB 180KB -
开机原因查看
AT*EXASSERT=1,2
OK
power on reason: POWERKEY
...
2. AT+SGPIO 指令使用场景¶
AT+SGPIO 指令用于GPIO的实时控制和状态读取:
-
及时设置GPIO状态
# 设置GPIO10为输出高电平 AT+SGPIO=0,10,1,1 OK # 设置GPIO10为输出低电平 AT+SGPIO=0,10,1,0 OK - 适用于需要手动控制外设的场景(如LED灯控制、继电器控制) - 不需要修改代码,直接通过指令控制,响应快速 -
及时读取GPIO状态
# 读取GPIO10状态 AT+SGPIO=1,10 +SGPIO: 10,1 OK - 适用于监测外部信号(如按键状态、传感器信号) - 可以连续读取观察信号变化 -
相比编写代码来设置更加灵活方便
* **无需修改固件**:直接通过AT口操作,无需重新编译烧录固件
* **实时调试**:在系统运行过程中随时调整GPIO配置
* **快速验证**:验证硬件连接和功能,无需编写测试程序
* **多点控制**:可以同时控制多个GPIO,测试组合逻辑
* **特殊GPIO操作**:支持特殊GPIO如WAKEUP0(100)、WAKEUP1(101)等
注意事项¶
- 指令格式:所有AT指令都以回车换行符(\r\n)结尾
- 响应时间:某些指令执行需要时间,请耐心等待响应
- 断开连接:调试完成后,先断开串口连接,再拔出USB线
- 日志输出:开启调试模式后,模块会输出大量日志信息
故障排查¶
1. COM口无法识别¶
- 检查USB线是否连接正常
- 重新安装USB驱动
- 尝试更换USB口
2. AT指令无响应¶
- 确认串口选择是否正确
- 确认模块软件运行是否正常
- 查看是否有其他软件占用该COM口
3. GPIO操作失败¶
- 确认GPIO编号是否正确
- 确认和代码中的GPIO操作是否有冲突,如果AT设置后,代码又设置了该GPIO,会导致操作无效
- 参考具体模块的GPIO表进行操作
相关文档¶
- 通用调试指令.md - 完整的AT指令列表和参数说明
- YM310_W09_GPIO表 - W09模块的GPIO映射表
- YM310_X09_GPIO表 - X09模块的GPIO映射表
- YM310_X19_GPIO表 - X19模块的GPIO映射表
- YM310_X08_GPIO表 - X08模块的GPIO映射表