MiCO 为用户提供串口 CLI 命令行调试功能,用来查看当前设备状态,以协助调试分析。
MiCO 的 CLI 命令是通过系统调试串口进行输入输出的。如:调试串口(波特率通常为:115200bps)输入:help,可以看到帮助命令列表:
MiCO 若需打开CLI功能,根据MiCO SDK
版本不同,修改如下:
1)在工程中(基于MiCO_SDK_v2.2.0
版本),只需要修改两处代码即可:
#include “MICOCli.h“
application_start()
中加一行代码:MicoCliInit()
,启用MiCO的CLI功能。
该API用于启动一个CLI的Thread, 用于接收命令并执行命令。打开串口用于CLI命令的收发。由于命令处理函数会占用较多的栈,所以该Thread分配了4K字节的栈。在Platform_common_config.h
中定义CLI_UART
使用MICO的哪个串口。这个串口一定不要同透传使用的串口相同,不然会导致串口数据可能被当作透传数据而无法作为CLI的命令。 要使用串口作为CLI的输入,由于UART在MCU低功耗下容易丢包,所以最好不开打MCU低功耗功能,否则命令输入容易失败。
2)在工程(MiCO_SDK_v2.3.0
及以上版本)中,已在函数: mico_system_init( mico_context )
中默认开启串口命令行调试功能, 用户不需再修改代码增加功能。
CLI 每条命令定义在mico_cli.h文件中,定义如下:
struct cli_command {
/** The name of the CLI command */
const char *name;
/** The help text associated with the command */
const char *help;
/** The function that should be invoked for this command. */
void (*function) (char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv);
};
int cli_register_command(const struct cli_command *command)
功能:添加一条命令 参数: command是一个命令的指针,该内存地址必不能free,CLI只是记录该内存的指针,不会做copy。 返回:成功返回0,失败返回1.
int cli_register_commands(const struct cli_command *commands, int num_commands)
功能:添加一组命令 参数:commands指向一个命令数组,该数组不能free,CLI只是记录改组数组的各个命令的指针;num_commands是这个数组的命令数。 返回:成功返回0,失败返回1.
int cli_unregister_command(const struct cli_command *command)
功能:删除一条命令 参数:command指针必须同register的command是相同地址成功成功; 返回:成功返回0,失败返回1.
int cli_register_commands(const struct cli_command *commands, int num_commands)
功能:从commands数组中删除num_commands条命令。 返回:成功返回0,失败返回1.
int cli_printf(const char *msg, ...)
类似于printf功能的输出函数,实现CLI结果的输出。
int cli_putstr(const char *msg)
CLI不带格式的输出,msg指向一个字符串。
int cli_getchar(char *inbuf)
CLI的输入,每次获取一个字节的数据,成功返回1,失败返回0.
为了便于调试,MiCO2.0库提供了一组调试用的API。每个API原型为:void (*function) (char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv);
其中:
在MiCO SDK中,调试串口和调试命令串口通常共用一个UART口,具体的需根据Wi-Fi模块型号在SDK Board/platform.c中确认。以MiCOKit-3165为例,CLI串口定义如下:
开发板电源线,即调试串口线连接至PC端后,需安装USB转UART驱动程序,下载地址:http://www.ftdichip.com/Drivers/VCP.htm,
安装成功后,打开PC设备管理器,查看串口信息,如下图所示:
发现端口号COM11,表示驱动成功安装,打开SecureCRT(或其他串口调试软件),连接COM11串口,设置如下:
连接成功后,即可向串口输入命令行进行调试。
在调试串口输入以下“串口命令”,即可获取想要的信息。 命令行种类及对应的功能,如下表:
CLI命令使用示例下面就对列表中的CLI命令进行一一介绍。
在Command Window命令窗口中输入命令“help”,回车,串口返回内容,如下图:
在Command Window命令窗口中输入命令“version”,回车,串口返回内容,如下图:
(1)在Command Window命令窗口中输入命令“echo”,回车,串口返回内容,如下图:
命令回传功能关闭。输入命令“version”回车,看到返回中无“# version”
(2)在Command Window命令窗口中输入命令“echo off”,回车,串口返回内容,如下图:
命令回传功能开启。输入命令“version”回车,看到返回中出现“# version”。 通常建议开启echo功能,便于同步观察命令功能
在Command Window命令窗口中输入命令“exit”,回车,串口返回内容,如下图:
此后输入命令无效,必须上电重启设备后才能生效。
void wifiscan_Command(CLI_ARGS);
在Command Window命令窗口中输入命令“scan”,回车,串口返回内容,如下图:
获取到MiCO设备附近的AP热点名称,通道,加密方式,及信号强度。
void wifistate_Command(CLI_ARGS)
在Command Window命令窗口中输入命令“wifistate”,回车,串口返回内容,如下图:
首先输出需要连接的AP的信息,包括SSID,密码,BSSID和重试间隔(单位ms)。 然后输出连接的状态,如果已经连接成功,会输出连接AP的详细信息,包括SSID,通道,信号强度和BSSID。
void wifidebug_Command(CLI_ARGS);
其中:argc必须是2,argv[1]可以是”on”和”off”,分别用于打开和关闭wifi debug输出。 (1)当设备进入配网状态,等待配网时,在Command Window命令窗口中输入命令“wifidebug on”,回车,然后再进行配网,串口返回内容,如下图:
注意:该命令为动态指令,一次带电过程中有效,重新上电即关闭,需再次开启才生效。
(2)在Command Window命令窗口中输入命令“wifidebug off”,回车,串口返回内容,如下图:
!
此时,WiFi库中的调试信息log将停止输出。
void ifconfig_Command(CLI_ARGS)
在Command Window命令窗口中输入命令“ifconfig”,回车,串口返回内容,如下图:
void arp_Command(CLI_ARGS)
arp命令支持一个参数,分别是show和clean。 Clean用于清除ARP缓存。show用于输出arp缓存,使用如下:
(1)在Command Window命令窗口中输入命令“arp”,回车,串口返回内容,如下图: 返回arp命令格式分别为show和clean。
(2)在Command Window命令窗口中输入命令“arp show”,回车, 然后,通过ping命令与局域网内其他IP地址进行通信尝试, 再次通过“arp show”返回结果如下图
(3)在Command Window命令窗口中输入命令“arp clean”,清楚arp缓存,回车, 然后,通过指令“arp show”查看,串口返回内容如下图:
void ping_Command(CLI_ARGS);
ping命令用于ping某个IP地址,仅支持IP地址,不支持域名。 会连续ping 5次,每次延时1秒钟,ping完成以后输出结果 在Command Window命令窗口中输入命令“ping 192.168.1.1”,回车,串口返回内容,如下图:
说明设备与该IP地址连通。
void dns_Command(CLI_ARGS)
(1)在Command Window命令窗口中输入命令“dns”,回车,串口返回内容如下图:
可显示dns的命令格式。(此时设备运行demo: wifi_uart透传工程,已配网)
(2)在Command Window命令窗口中输入命令“dns show”,回车,串口返回内容如下图:
此时,Command Window命令窗口中输入命令“dns www.baidu.com”等,返回内容如下:
此时,在Command Window命令窗口中输入命令“dns show”,回车,返回如下图:
(3)在Command Window命令窗口中输入命令“dns clean”,回车,串口返回内容如下图:
void socket_show_Command(CLI_ARGS);
显示当前系统socket的状态,分别显示BSD socket的状态,TCP的状态和UDP的状态。 在Command Window命令窗口中输入命令“sockshow”,回车,串口返回内容,如下图:显示设备当前的所有socket连接状态信息。
void task_Command(CLI_ARGS);
用于显示当前系统的Thread线程的状态。 在Command Window命令窗口中输入命令“tasklist”,回车,串口返回内容,如下图:显示设备当前的所有线程状态信息。
其中:
void memory_show_Command(CLI_ARGS);
显示当前系统的内存情况 在Command Window命令窗口中输入命令“memshow”,回车,串口返回内容,如下图:显示设备当前的内存使用信息。
void memory_dump_Command(CLI_ARGS);
以HEX格式DUMP出一段内存地址的内容。 在Command Window命令窗口中输入命令“memdump 0x0001000 100”,回车,串口返回内容,如下图:读取到 设备指定内存地址的数据。
其中0x200003c0是需要dump的内存地址的起始地址,10是需要dump的长度。
void memory_set_Command(CLI_ARGS);
设置某段内存地址的数据内容。 (1)在Command Window命令窗口中输入命令“memset 0x0001000 100”,回车,串口返回内容,如下图:写入到 设备指定内存地址数据,并通过 memdump 命令读出,验证写入的数据内容。
其中,0x200003c0是起始地址,后面可跟多个参数,每个参数对应一个地址的内容。 但是注意:有时 有些内存地址是不允许写入的。
void memp_dump_Command(CLI_ARGS);
显示当前协议栈各个缓存地址池的使用情况。 在Command Window命令窗口中输入命令“memp”,回车,串口返回内容,如下图:显示设备当前的内存分配情况。
void driver_state_Command(CLI_ARGS);
用于打印出当前系统中wifi驱动的运行状态, 在Command Window命令窗口中输入命令“wifidriver”,回车,串口返回内容,如下图。
上一篇:3.4 设置Wi-Fi网络参数
下一篇:3.2 RTOS内核
版权所有 © 2017 - 2018 MXCHIP授权代理商 - 深圳市博易特智能科技有限公司 粤ICP备17063559号
服务热线:0755-23733662 Email:info@mxchip.cc