Link SDK運行相關(guān)問題
本文介紹使用Link SDK過程中可能遇到的常見問題和解決方法。
Link SDK支持什么環(huán)境?
Link SDK是跨平臺的,用戶可以自行移植到目標平臺上運行,開發(fā)環(huán)境推薦Ubuntu16.04。
Link SDK占用多少RAM?
MQTT協(xié)議數(shù)據(jù)傳輸通過mbedTLS,Link SDK消耗35 K(RAM)=8 K(Stack)+27 K(heap)。
CCP協(xié)議下,Link SDK消耗45 K(RAM)=32 K(stack)+13 K(heap)。可以通過修改下面的兩個宏減小Stack的占用:
#define TOPIC_MAX_NUM 64
:Topic數(shù)量最大限制。如果設(shè)備訂閱的Topic數(shù)量較小,可以修改為更小的值,如16。#define TOPIC_MAX_LEN 128
:Topic長度最大限制。如果設(shè)備訂閱的Topic名稱長度較小,可以修改為更小的值,如32。
Link SDK的運行需要哪些條件?
運行Link SDK的主要條件是:支持TCP/IP協(xié)議棧。
是否支持FreeRTOS 操作系統(tǒng)移植?
支持FreeRTOS 操作系統(tǒng)連接阿里云物聯(lián)網(wǎng)平臺,例如樂鑫的Wi-Fi模組使用的就是FreeRTOS。請參見樂鑫提供的開源代碼:FreeRTOS的移植參考代碼 。
如何ECS上使用FreeRTOS 系統(tǒng)?
可以通過導入鏡像實現(xiàn)。
導入鏡像的方法,請參見導入自定義鏡像實踐。
導入鏡像注意事項,請參見導入鏡像必讀。
是否支持KEIL?
目前Link SDK不支持直接在Keil環(huán)境下開發(fā),但是可以在SDK功能配置后,將抽取的代碼添加到已有的Keil工程或者通過交叉編譯生成目標庫供Keil下的工程調(diào)用。
如何打開 SDK 日志?
在需要打開日志的地方,調(diào)用函數(shù)查看日志。具體函數(shù)說明如下。
IOT_OpenLog:開始打印日志信息。可使用一個
const char *
作為入?yún)ⅲ硎灸K名稱。IOT_SetLogLeve:設(shè)置打印的日志等級。入?yún)?到5。數(shù)字越大,日志越詳細。
IOT_CloseLog:停止打印日志信息。入?yún)榭铡?/p>
IOT_DumpMemoryStats:打印內(nèi)存的使用統(tǒng)計情況。入?yún)?到5。數(shù)字越大,日志越詳細。
是否支持多線程?
目前IOT_*()
的API都是進程級別,僅支持單進程單線程使用,不支持在同一進程的不同線程并發(fā)重入。
數(shù)據(jù)傳輸?shù)陌踩栽趺幢WC?
設(shè)備和服務(wù)端之間的鏈路可以通過TLS加密,并且使用設(shè)備身份證書信息(productKey、deviceName、deviceSecret)進行認證,任何一個錯誤都會導致認證失敗。
一個設(shè)備證書可用于多個設(shè)備接入嗎?
不可以,一個設(shè)備證書只能用于一個設(shè)備連接。
報錯“err log:[error]rate limiter”,請問是什么原因?
設(shè)備被限流,單個設(shè)備數(shù)據(jù)上報上限:QoS0為30條/秒,QoS1為10條/秒。限流后,設(shè)備上報的數(shù)據(jù)就會被丟掉。
如果訂閱同一個廣播Topic的設(shè)備數(shù)量超過1,000,怎么辦?
廣播Topic最多支持1,000個訂閱者。如果設(shè)備數(shù)量超過1,000,可以對設(shè)備進行分組,每組設(shè)備數(shù)量等于或小于1,000。例如,有5000個設(shè)備,需分為5組,調(diào)用5次廣播接口廣播消息。
能不能訂閱其他設(shè)備Topic?
設(shè)備只能訂閱和發(fā)布自己的Topic。如果兩個設(shè)備之間需要通信,有兩種方式:
廣播消息Topic如何填寫?
廣播Topic格式:/broadcast/productKey/xxxx
。
廣播是否只能針對在線的設(shè)備?
廣播Topic 默認是QoS=0,且不允許用戶設(shè)置,因此廣播消息只有當前在線設(shè)備才能接收到。
配置C Link SDK Extended的CMakeLists.txt并執(zhí)行make -j編譯后,為什么不能在Linux開發(fā)板上運行?
交叉編譯器配置錯了,不是對應(yīng)Linux開發(fā)板匹配的交叉編譯器。
您需將
CMakeLists.txt
文件中以下代碼的arm-linux-gnueabihf-gcc
替換為對應(yīng)Linux開發(fā)板匹配的交叉編譯器。set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
沒有把對應(yīng)的庫文件拷貝到Linux開發(fā)板的系統(tǒng)中。
您需將編譯輸出的庫文件
./output/lib/
拷貝到對應(yīng)Linux開發(fā)板系統(tǒng)中。
詳細說明,請參見環(huán)境要求與配置。