閱讀250 返回首頁    go 阿裏雲


C-SDK使用(µC/OS)__SDK使用參考_設備端接入手冊_阿裏雲物聯網套件-阿裏雲

準備工具

  • KEIL工具 版本是Keil V4.10
  • SecureCRT,用來抓取開發板的uart log,用戶可以從SecureCRT官網下載。
  • NL6621 WIFI開發板,可以通過在淘寶購買。
  • USB轉RS232串口線,可以通過淘寶購買。

移植說明

  • MQTT數據傳輸支持通過TCP(明文傳輸)或TLS(密文傳輸),如果開發板上麵可用的RAM資源不足,可以不添加Mbedtls編譯到開發板SDK中。如果開發板自帶TLS庫,這樣也可以不用IoT SDK自帶的Mbedtls庫,用開發板自帶的SSL庫實現aliyun_iot_network_ssl.c裏麵的函數即可。
  • 本文檔介紹的是MQTT+TCP的方式和阿裏雲交互。
  • 本文檔隻是以NL6621開發板為例,客戶可以選擇其它支持µC/OS的開發板。
  • 驗證通過的OS版本是µC/OS-II

添加SDK MQTT協議源文件到Keil工程

  • 需要添加MQTT協議的源文件路徑有
    1. sdk/common/src
    2. sdk/examples/ucos/mqtt
    3. sdk/platform/ucos/src
    4. sdk/src/mqtt/MQTTClient-C/src
    5. sdk/src/mqtt/MQTTClient-C/nettype/tcp
    6. sdk/src/mqtt/MQTTPacket/src
  • 設定Keil工程頭文件路徑include—file

編譯和download

  • 右鍵工程,選擇 build target。
  • 生成的bin文件,用開發板自帶的下載工具NuDevTool ver1.11通過uart download。
  • 燒錄步驟流程,具體參考開發板文檔說明。

注意事項

  • MQTT+TCP這種方式需要的RAM大小為 16K= 4K stack + 12K heap。
  • 因為μC/OS-II每個task的優先級都不能相同,所以需要根據平台來修改下麵的兩個宏,賦予一個唯一的優先級。
  1. #define IOT_MQTT_TASK_PRIO (OS_TASK_TMR_PRIO + 22)
  2. #define IOT_MQTT_MUTEX_PRIO (OS_TASK_TMR_PRIO + 15)

常見問題

下麵出現的問題都是和開發板相關,如果不是用NL6621開發板可以忽略以下錯誤。

運行出現 SIGRTMEM: Out of heap memory錯誤。

  • 解決方法:修改文件CortexM3_startup.s,調整下麵的兩個參數的值。
  1. Stack_Size EQU 0x2000 // stack大小
  2. Heap_Size EQU 0x4000 // heap大小

鏈接出現錯誤:

  • ld_error_info
  • 解決方法是: 編譯該文件syscall到工程裏麵

運行遇到下麵錯誤

  • aliyun_iot_platform_network.c:163 aliyun_iot_network_settimeout()| setsockopt error, errno = 109 ret = -1 fd = 1
  • 解決方法是:修改lwipopts.h, 添加下麵的兩個宏。
  1. #define LWIP_SO_SNDTIMEO 1
  2. #define LWIP_SO_RCVTIMEO 1

最後更新:2016-12-01 13:11:01

  上一篇:go C-SDK使用(Mico)__SDK使用參考_設備端接入手冊_阿裏雲物聯網套件-阿裏雲
  下一篇:go C-SDK使用(threadx)__SDK使用參考_設備端接入手冊_阿裏雲物聯網套件-阿裏雲