• 物联网工程师开发服务平台

MXKit-5062 使用指南

本文介绍如何将MXKit-5062第一个应用程序跑起来。即:如何借助 mico-cube 工具 和 MiCoder IDE 进行 MiCO 应用程序的获取,编译,下载,运行。

硬件准备

1.硬件清单

list

所需 3 个单品包括:

  1. MXKit-Base
  2. MXKit-Core-5062
  3. sim卡

2.硬件连接

组装整个MXKit:从 MXKit-Core-6052 板上取下 EMG5062 模块,将 sim 卡装在模块背面的卡槽内,然后将 MXKit-Core-5062板插到 MXKit-Base 板上,参见上面的硬件清单图片。

软件准备

如果您的PC中已经成功安装了庆科MiCoder开发软件工具及必需的驱动等,可略过本节“软件准备”,直接进入“开始使用”。

1.安装MiCO Cube

首先,您的 PC 端需要:

1) 安装 Python,要求版本:2.7.13。

安装过程中需要注意:

Python 的可执行文件目录 (Python) 需要添加到系统的 PATH 环境变量中,在 Python 安装时指定,Windows 系统中如下图。

MiCoder_IDE

确认安装好 Python 后,找到 Python 的安装目录,接着找到 pip.exe,一般而言它会在Scripts文件夹下,这里选择的是pip2.7.exe,如图。

MiCoder_IDE

接下来,win+r,输入cmd,回车打开系统命令行工具,将pip2.7.exe拖动至命令提示符窗口,出现如下代码,然后回车。

MiCoder_IDE

至此,Python 2.7.13 安装完毕。可在终端上输入命令:python --version 来验证Python是否正确安装,如下:

python --version
Python 2.7.13 

2) 安装 Git,要求版本:1.9.5及以上;或安装 Mercurial ,要求版本:2.2.2及以上。可在终端上输入命令:git --version ,来验证Git是否正确安装,如下:

git --version
git version 2.11.0 (Apple Git-81)

3)下载 MiCoder Tools要求版本:1.1及以上,并解压。

以上3点准备完毕,您就可以打开终端,输入指令安装 MiCO Cube 啦。

1) 安装MiCO-Cube

打开系统命令行工具,输入指令如下:

$ pip install mico-cube
Collecting mico-cube
  Downloading mico-cube-1.0.6.tar.gz
Installing collected packages: mico-cube
  Running setup.py install for mico-cube ... done
Successfully installed mico-cube-1.0.6

注意:在Linux和macOS上, 需要加上sudo获得安装权限。

2) 升级MiCO-Cube

MiCO Cube 安装完成后,您还可以通过指令升级MiCO Cube的版本。

$ pip install --upgrade mico-cube
Collecting mico-cube
  Downloading mico-cube-1.0.6.tar.gz
Installing collected packages: mico-cube
  Found existing installation: mico-cube 1.0.0
    Uninstalling mico-cube-1.0.0:
      Successfully uninstalled mico-cube-1.0.0
  Running setup.py install for mico-cube ... done
Successfully installed mico-cube-1.0.6

3)为MiCO Cube 配置MiCoder Tools路径

特别注意: 如果您想通过MiCO Cube命令进行编译和下载MiCO项目,必须 为MiCO Cube设置MiCoder Tools的路径。这里的路径是指 MiCoder 文件夹在您 PC 中的位置。

$ mico config --global MICODER ~/MiCO_SDK/MiCO/MiCoder
[mico] /Users/william/MiCO_SDK/MiCO/MiCoder now set as default MICODER in program "helloworld"

配置好后,可查看 MiCO Cube 的有效配置参数:

$ mico config --list
[mico] Global config:
MICODER=/Users/william/Develop/MiCO_SDK/MiCO/MiCoder
[mico] Local config (/Users/william/Develop/mico-program/helloworld):
No local configuration is set

2.安装MiCoder IDE

根据您 PC 端的系统类型,下载: MiCoder IDE,并安装。

3.安装串口驱动及串口调试软件

  • 您需要在 PC 端查看 “调试串口” log内容,需安装驱动: Micro-USB 串口驱动,推荐:FIDI(调试串口即指 MiCOKit 上的 micro-usb 接口)。

  • 您需要在 PC 端连接 “用户串口” 并调试,需安装驱动:USB转串口模块驱动,推荐:CP2102 Driver

  • 同时,还需要在 PC 端安装串口调试软件,推荐:SecureCRT (可用该软件查看 以上串口的 log 打印信息) 。

4.更新jlink驱动

  • 您需要更新 Jlink 驱动才能使用 JLink 下载,在原 JLlink 驱动的基础上,需安装驱动更新,参考:更新jlink驱动

开始使用

1.导入mico-demos项目

首先,您需要从MiCO仓库中导入一个项目。 在终端中输入命令:

mico import https://code.aliyun.com/mico/mico-demos.git

Tips: 若需要看到详细的项目导入过程 log 信息,可以在指令中加入 -v -vv 后缀,形如:

$ mico import https://code.aliyun.com/mico/mico-demos.git -v -vv

也可以缩写为:mico import mico-demos

代码获取到本地后,切换至当前工程目录:

cd mico-demos

2.更新mico-os至最新版本

注意:为了确保获取到的 mico-os 是最新版本,请输入命令:

$ cd mico-os
$ git checkout mico-os-3.6

3.MiCO Cube命令行编译与下载

如已熟悉MiCO Cube中使用,请略过,直接使用。

(1) 编译

命令终端输入 MiCO Cube 编译命令:

mico make net.gprs@MK5062

编译过程需要几秒钟左右,编译结束后,编译成功结束后,log信息如下:

                       MICO MEMORY MAP
|=================================================================|
| MODULE                                   | ROM       | RAM      |
|=================================================================|
| App_GPRS                                 | 1189      | 260      |
| Board_MK5062                             | 418       | 100      |
| FreeRTOS                                 | 5876      | 436      |
| GCC                                      | 212       | 20       |
| libc_nano                                | 13102     | 212      |
| libdriver                                | 38652     | 133      |
| libgcc                                   | 3136      | 0        |
| Lib_MiCO_Kernel                          | 8         | 8        |
| Lib_MiCO_System                          | 4225      | 140      |
| Lib_MiCO_System_QC                       | 696       | 16       |
| Lib_Utilities                            | 314       | 0        |
| LwIP                                     | 22        | 0        |
| lwip.Cortex-M3.GCC.release               | 40566     | 3726     |
| MiCO_FreeRTOS_Interface                  | 1838      | 20       |
| MX1101                                   | 3039      | 121      |
| peripherals                              | 2376      | 60       |
| *fill*                                   | 166       | 38       |
|=================================================================|
| TOTAL (bytes)                            | 115835    | 5290     |
|=================================================================|
Build complete
Making .gdbinit
Making .openocd_cfg

(2) 下载

命令终端输入 mico-cube 下载命令:

mico make net.gprs@MK5062 download

下载过程需要几秒钟左右。

Skipping building bootloader due to "total" is not set


                        MICO MEMORY MAP
|=================================================================|
| MODULE                                   | ROM       | RAM      |
|=================================================================|
| App_GPRS                                 | 1189      | 260      |
| Board_MK5062                             | 418       | 100      |
| FreeRTOS                                 | 5876      | 436      |
| GCC                                      | 212       | 20       |
| libc_nano                                | 13102     | 212      |
| libdriver                                | 38652     | 133      |
| libgcc                                   | 3136      | 0        |
| Lib_MiCO_Kernel                          | 8         | 8        |
| Lib_MiCO_System                          | 4225      | 140      |
| Lib_MiCO_System_QC                       | 696       | 16       |
| Lib_Utilities                            | 314       | 0        |
| LwIP                                     | 22        | 0        |
| lwip.Cortex-M3.GCC.release               | 40566     | 3726     |
| MiCO_FreeRTOS_Interface                  | 1838      | 20       |
| MX1101                                   | 3039      | 121      |
| peripherals                              | 2376      | 60       |
| *fill*                                   | 166       | 38       |
|=================================================================|
| TOTAL (bytes)                            | 115835    | 5290     |
|=================================================================|
Downloading application to partition: 2 size: 116292 bytes...
Download complete

Build complete
Making .gdbinit
Making .openocd_cfg

4.MiCoder IDE中编译下载与调试

(1) 导入项目

打开 MiCoder IDE,选择:File–>Import,选择:General–>Existing Projects into Workspace,然后 Next,点击 Browse ,选择 MiCO SDK 文件路径,点击 Finish ,即可导入成功。

导入后,IDE界面功能区域示意如图:

MiCoder_IDE

导入mico demo sdk,如图:

import_project

(2) 编译与下载

在 IDE 右侧 “make target settings"中添加新 make 命令,详细 make 命令格式及使用,请参考:编译与下载命令行

打开 make 命令创建窗口:

new_target

创建新的target命令如图:

gprs_target

双击该target命令,编译,下载即可。

(3) 运行结果

应用程序功能:(1)调试串口打印字符串:“Helloworld!”;(2)开发底板LED灯间隔1秒闪烁。

串口log:应用程序下载成功后,打开串口工具软件 SecureCRT,参数设置如下:

COM_config

查看串口 log 内容:

[2][Platform: mico_platform_common.c:  98] Platform initialised, build by GNUC
[651][APDS9930: APDS9930.c: 168] APDS9930_ERROR: no i2c device found!
[1080][BME280_USER: bme280_user.c: 480] BME280_ERROR: no i2c device found!
[1107][RTOS: mico_rtos_common.c:  82] Started FreeRTOS v7.1.0
[1703][SYSTEM: system_misc.c: 222] Free memory 75368 bytes
[1709][SYSTEM: system_misc.c: 228] Kernel version: 31621002.050
[1715][SYSTEM: system_misc.c: 231] MiCO version: 3.0.0
[1720][SYSTEM: system_misc.c: 233] Wi-Fi driver version wl0: Nov  7 2014 16:03:45 version 5.90.230.12 FWI, mac C8:93:46:53:B7:61
[1732][SYSTEM: config_server.c: 148] Config Server established at port: 8000, fd: 1
[1932][helloworld: helloworld.c:  43] Hello world!

现象:观察 MiCOKit 开发底板右下角黄绿LED灯间隔1秒交替亮灭。

(4) 在线调试

MiCoder IDE 支持 MiCO 应用程序在线调试功能,这里可以选择调试 MiCO 应用程序 或 MiCO Bootloader 程序,二者参数配置一致,具体参数配置方法:

  • 1)工具栏下拉进入 Debug 界面;

debug

  • 2)Debug 参数配置 Main 界面,确保工程名称正确,其它参数一致。

debug_main

  • 3)Debug 参数配置 Debugger 界面,确保参数一致。

debugger

  • 4)Debug 界面:

helloworld_debug

更详细的 MiCoder IDE 中调试内容请参考:如何在 IDE 中调试 MiCO 应用程序

5.应用程序代码

wifi模块和gprs模块主要的区别在于寻网,wifi模块一般是通过配网或者直连连接到路由器;而gprs模块是通过发送指令跟gprs基站建立连接。连接建立之后,系统会产生mico_notify_GPRS_STATUS_CHANGED回调来告知应用层连接成功,之后就可以通过标准的socket接口进行网络通讯了。

#include "mico.h"

#define gprs_log(format, ...)  custom_log("GPRS", format, ##__VA_ARGS__)

static mico_semaphore_t conn_sem;

void clientNotify_GPRSStatusHandler(notify_gprs_t status, const mico_gprs_net_addr_t *net_addr )
{
  switch (status) 
  {
  case NOTIFY_GPRS_UP:
    gprs_log("GPRS up");
    gprs_log(" IP      : %s\r\n", net_addr->ip);
    gprs_log(" Gateway : %s\r\n", net_addr->gate);
    gprs_log(" Netmask : %s\r\n", net_addr->mask);
    mico_rtos_set_semaphore(&conn_sem);
    break;
  case NOTIFY_GPRS_DOWN:
    break;
  default:
    break;
  }
}

static void daytime_thread(void *arg)
{
    int ret;
    int sockfd, n;
    static char recvline[256];
    struct sockaddr_in servaddr;

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port   = htons(13);    /* daytime server */
    servaddr.sin_addr.s_addr = inet_addr("128.138.141.172");

    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    require(sockfd != -1, exit);

    gprs_log("Connecting to daytime server...");
    ret = connect(sockfd, &servaddr, sizeof(servaddr));
    require(ret != -1, exit);
    gprs_log("Connected");

    while ( (n = read(sockfd, recvline, sizeof(recvline))) > 0) 
    {
        recvline[n] = 0;    /* null terminate */
        gprs_log("%s", recvline);
    }
    require(n != -1, exit);

exit:
    if(socket != -1)
    {
        close(sockfd);
    }
    mico_rtos_delete_thread(NULL);
}

int application_start( void )
{
    mico_rtos_init_semaphore(&conn_sem, 1);
    mico_system_notify_register( mico_notify_GPRS_STATUS_CHANGED, clientNotify_GPRSStatusHandler, NULL );
    cli_init();
    MicoInit();

    gprs_log("Opening GPRS ...");
    mico_gprs_open();
    mico_rtos_get_semaphore(&conn_sem, MICO_WAIT_FOREVER);
    gprs_log("Open GPRS success");

    mico_rtos_create_thread(NULL, MICO_APPLICATION_PRIORITY, "DayTime", daytime_thread, 2 * 1024, NULL);

    return 0;
}

更多 MiCO 开发内容,请参考文档中心其它页面。

文本导读目录