EFR32xG21 網關開發-- 系統SDK框架的一點認識

至此,用SilicionLabs方案搭建的網關基本功能已經完成,就係統SDK實現zigbee網關的框架做一點總結認識,拋轉引玉~

Zigbee網關的開發涉及工程建立、編譯,執行。相關聯需要了解依賴的SDK目錄含義、工程配置原理,以及懂得整個軟件框架運行原理,下面就關鍵項展開介紹。
一、網關SDK目錄詳情
1、存儲空間
源碼包默認有2.5G多
經過一番裁剪之後,SDK用到文件大約有20M。

2、目錄詳情
SDK目錄包含了Silicon Labs開發環境需要的所有代碼,在安裝時同樣可以配置,比如現在我們支持Zigbee,所有相關代碼都會自動下載更新。

SDK目錄如下:
在這裏插入圖片描述

在linux環境下使用tree命令,可以打印目錄詳情。tree -d 只打印目錄項,不展開。
在這裏插入圖片描述
二、網關工程編譯介紹
思想指導:Silicon Labs芯片的開發思想是插件化,可以手動勾選配置支持項。通過簡單的勾選,生成回調函數,在工程項目文件中暴露出來,具體的函數實現在SDK中,plugin目錄。
1、Callbacks使用

在這裏插入圖片描述
Callback中勾選的參數,影響callbacks.h
在這裏插入圖片描述
2、Plugins使用

在這裏插入圖片描述
Plugins中勾選的參數,影響如下

在這裏插入圖片描述

可見最終會被Z3GatewayHost工程外部回調函數調用
3、具體函數介紹
3.1、普通回調示例

simple-main.c ->emberAfMain()
Af-main-host.c ->emAfInit() // 該函數實現在znet-bookkeeping.c中
znet-bookkeeping.c -> 註冊了很多回調函數,暴露在外面
void emAfInit(void)
{
  emberAfMainInitCallback();  // Global
  emberAfInit();  // Global
  emberAfPluginGatewayInitCallback();  // Plugin: gateway
  emberAfPluginNetworkCreatorSecurityInitCallback();  // Plugin: network-creator-security
}

3.2、Plugin支持MQTT示例
emberAfPluginGatewayRelayMqttInitCallback 在Z3GatewayHost_endpoint_config.h中
在這裏插入圖片描述
這個宏定義的實現在util.c的emberAfInit()
在這裏插入圖片描述
emberAfInit()函數如上述在znet-bookkeeping.c定義實現
三、網關設計
1、網關硬件結構圖

在這裏插入圖片描述

Zigbee協調器通過串口與主控連接,支持硬件流控
2、網關設計原理
Zigbee協調器與Host端通過串口連接,Host端可以接入互聯網,通過Socket或者Mqtt等網絡協議與外界通信,達到間接控制Zigbee網絡的目的。
3、軟件設計模型
3.1線程化模型
Socket Server接收命令
輪訓獲取數據狀態

3.2、數據流向
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章