Skip to content

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. 连接建立

  1. 打开串口调试工具
  2. 选择正确的COM口
  3. 设置波特率为:115200(默认)
  4. 数据位:8,停止位:1,无校验
  5. 流控: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

# 设置GPIO100WAKEUP0)为输入模式
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都不允许睡眠,投票的bitMap1001,但是此时投票的掩码: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表进行操作

相关文档