全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
阿里云物联网平台

C-SDK使用(Mico)

更新时间:2017-09-04 19:13:09

准备工具

  • IAR Embedded Workbench for ARM,是一个针对ARM 处理器 的集成开发环境,它包含项目管理器、编辑器、C/C++编译器和ARM 汇编器、连接器XLINK和支持RTOS 的调试工具C-SPY。用户可以到IAR公司的网站IAR下载,建议使用IAR EWARM 7.30.4版本来进行MiCO开发。
  • JLINK工具,和IAR结合用来download和debug使用,具体可以上淘宝购买。
  • SecureCRT,用来抓取开发板的uart log,用户可以从SecureCRT官网下载。
  • Mico-Kit 3165开发板,可以通过mico官网获取。
  • mico开发环境搭建和mico os介绍参考官网:mico

说明

  • IoT SDK基于mico v2.4.1、mico v2.5.0、mico v3.0.0来做的移植。
  • 如果选用mico v3.0.0 sdk,需要在工程里面定义宏MICO_SDK_V3,其它mico版本无需定义该宏。macro

添加SDK MQTT协议源文件到IAR工程

  • 阿里IoT套件SDK包括MQTT和CCP协议,根据场景只会用到其中一种协议,只需要编译一种协议到mico工程即可。
  • 因为mico开发板自带SSL库,这样IoT SDK自带的Mbedtls就无需添加到工程里面编译。
  • 需要添加MQTT协议的源文件路径有
    1. sdk/common/src
    2. sdk/examples/mico/mqtt
    3. sdk/platform/mico/src
    4. sdk/src/mqtt/MQTTClient-C/src
    5. sdk/src/mqtt/MQTTClient-C/nettype/tls
    6. sdk/src/mqtt/MQTTPacket/src
    7. sdk/public_libs/porting/micossl
  • 设定IAR工程的头文件路径include_file

添加SDK CCP协议源文件到IAR工程

  • 阿里IoT套件SDK包括MQTT和CCP协议,根据场景只会用到其中一种协议,只需要编译一种协议到mico工程即可。
  • 目前CCP代码是完全依赖Mbedtls的,这样IoT SDK自带的Mbedtls必须添加进工程里面编译。
  • 需要添加CCP协议的源文件路径有
    1. sdk/common/src
    2. sdk/common/inc
    3. sdk/examples/mico/ccp
    4. sdk/platform/mico/src
    5. sdk/platform/mico/inc
    6. sdk/public_libs/mbedtls/library
    7. sdk/public_libs/mbedtls/include/mbedtls
    8. sdk/src/ccp
    9. sdk/src/ccp/include
  • 设定IAR工程的头文件路径include

设置IAR Debugger

  • debug_jlink

编译和download

  • 确保JLINK工具通过USB连接电脑
  • 点击按钮build和downloadbuild_button

注意事项:

  • 在调用mqtt_client_demo或ccp_client_demo函数之前确保开发板连接上WIFI,否则会出现设备认证初始化失败。
  • 需要创建单独的线程来调用mqtt_client_demo或ccp_client_demo。
  • 运行ccp_client_demo创建thread的stack size最小需设置为16K左右,否则系统会发生crash,运行mqtt_client_demo创建thread的stack size最小需设置为8K,否则系统会发生crash。
  • mico 实例代码文件mico_wifi_code

常见问题:

编译出现Build error: Multiple tools write to the same file.

  • build_error
  • 解决方法:

    把文件MiCO_SDK_2.4.1\libraries\utilities\json_c\debug.c 重命名为mico_debug.c,然后加入到project里面,重新build。

  • link_error
  • 运行CCP协议会出现这样的Link error,运行MQTT协议不会出现这样的错误。
  • 解决方法:修改文件

    MiCO_SDK_2.4.1/Board/MiCOKit-3165/micoLinkerForIAR.icf调整heap为0x12000

  • linker_modify

编译mico v3.0.0版本出现未定义错误

  • build_error
  • 修改文件mico_socket.h,添加下面的内容。
  1. #include <stdint.h>
  2. #ifndef ssize_t
  3. #define ssize_t int
  4. #endif
本文导读目录