閱讀556 返回首頁    go 外匯


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

SDK代碼結構

iot_sdk

  • common目錄主要是常用的utility庫。
  • example目錄是針對os平台的demo。
  • include目錄包含ccp和mqtt對外的頭文件。
  • platform目錄包含os平台需要實現的接口文件,包括socket、mutex、semphore、timer、thread、memory等。
  • public_libs目錄包含mbedtls庫和其它tls庫的api接口實現。
  • src目錄包含ccp和mqtt協議代碼實現。
  • 紅色框是移植其它os平台需要實現的接口文件。

說明

mcu-uart

  • 目前SDK是依賴RTOS OS和TCP/TP協議棧,硬件開發環境必須要有OS和協議棧。如圖的開發方式,MCU通過uart接GPRS/LTE芯片,SDK目前暫時還不支持,內部正在開發中。

移植

對於其它平台,SDK暫未支持,後麵會陸續支持更多的平台。現在如果想在其它平台上運行SDK,可以按照下麵的方法進行移植:

  • 在platform目錄下新建一個本平台的目錄
  • 目錄下包含src和inc兩個目錄,是平台相關接口的代碼實現和頭文件定義,src目錄包含以下文件:
  1. aliyun_iot_platform_memory.c // 內存分配和釋放
  2. aliyun_iot_platform_network.c // 網絡操作
  3. aliyun_iot_platform_persistence.c // 文件操作,可不實現,參考freertos平台
  4. aliyun_iot_platform_pthread.c // 線程和互斥鎖
  5. aliyun_iot_platform_random.c // 隨機數生成,複用freertos平台下的實現即可
  6. aliyun_iot_platform_signal.c // 信號,可不實現,參考freertos平台
  7. aliyun_iot_platform_timer.c // 定時器
  8. aliyun_iot_platform_threadsync.c // 信號量同步
  • IoT SDK默認使用Mbedtls,如果嵌入式開發板SDK有SSL庫,沒有必要把IoT SDK帶的Mbedtls添加到開發板上麵,可以修改文件aliyun_iot_network_ssl.c,用開發板SDK帶的SSL庫替換掉Mbedtls,這樣節省RAM/ROM資源。
  • 兼容SSL庫的代碼放在下麵的目錄:
  1. sdkpublic_libsportingmbedtls //Mbedtls api接口
  2. sdkpublic_libsportingmicossl //mico ssl api接口
  3. sdkpublic_libsportingqcassl //高通threadx平台ssl api接口
  4. sdkpublic_libsportingopenssl //openssl api接口
  1. IoT SDK 支持MQTT+TCP或MQTT+TLS方式來傳輸MQTT數據。
  2. 如果開發板RAM/ROM資源受限,可以采用MQTT+TCP方式來傳輸MQTT數據,這樣public_libsmbedtls目錄就無需編譯到開發板SDK裏麵,同時需要把sdksrcmqttMQTTClient-Cnettypetcp添加到編譯係統裏麵。
  3. RAM/ROM資源充足建議采用TLS方式,需要把sdksrcmqttMQTTClient-Cnettypetls添加到編譯係統裏麵。
  • 以重寫文件sdkpublic_libsportingmicosslaliyun_iot_network_ssl.c為例。
  1. typedef struct _TLSDataParams {
  2. mico_ssl_t ssl; //根據具體的SSL庫添加ssl data
  3. int socketId;
  4. }TLSDataParams;
  5. /*
  6. * SSL接收,一定要實現為阻塞式的讀
  7. * buffer: 存放接收數據的buffer
  8. * len: 要讀的數據的長度
  9. * timeout_ms: 沒有數據可讀的時候,需要阻塞的最大時間,單位是毫秒
  10. * 函數返回值: 返回實際讀取到的數據長度
  11. */
  12. int aliyun_iot_network_ssl_read(TLSDataParams *pTlsData, unsigned char *buffer, int len, int timeout_ms);
  13. /*
  14. * SSL發送
  15. * buffer: 存放要發送的數據。
  16. * len: 要發送的數據長度
  17. * timeout_ms: 發送的超時時間,可以忽略。
  18. * 函數返回值: 返回實際發送的數據長度
  19. */
  20. int aliyun_iot_network_ssl_write(TLSDataParams *pTlsData, unsigned char *buffer, int len, int timeout_ms);
  21. //關閉SSL連接,釋放資源
  22. void aliyun_iot_network_ssl_disconnect(TLSDataParams *pTlsData);
  23. /*
  24. * SSL連接
  25. * addr: server IP地址
  26. * port: server端口號
  27. * ca_crt: 服務端證書內容
  28. * ca_crt_len: 服務端證書長度
  29. */
  30. int aliyun_iot_network_ssl_connect(TLSDataParams *pTlsData, const char *addr, const char *port, const char *ca_crt, size_t ca_crt_len);

編譯

  • 如果使用Makefile編譯,需要把make.settings中的PLATFORM、PLATFORM_CC、PLATFORM_AR改成本平台相關的,並且在PORTING_INCLUDE中添加本平台編譯需要依賴的頭文件路徑
  • 如果使用IAR工具編譯,可以參考Mico平台下的編譯方法C-SDK使用(Mico)

最後更新:2016-12-16 14:20:27

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