Other Parts Discussed in Post:AM5749, CC1310
作者: Denny Yang, Hu ZongQi
簡介:本文介紹了基于Sitara AM5749平臺的ali-iot邊緣網關的配置方法。TI的新一代處理器平臺AM5749是多核異構結構的SOC,片上有兩個ARM核(ARM CORTEX-A15),兩個DSP(C66x)核,兩個EVE AI加速模塊。AM5749處理器是高度集成的器件,可用于實現高性能和多媒體應用。板載加速器提供加速視覺和深度學習功能,支持多個工業以太網協議和視頻處理。對比AM57XX家族其他產品,AM5749支持完善的memory ECC校驗功能,同時內部直集成EVE深度學習加速模塊配合TIDL軟件開發包,可以快速在嵌入式平臺實現深度學習的功能。阿里云是阿里巴巴集團下的云計算產品,提供卓越的云計算服務與技術。本文間介紹阿里云和TIDL的環境搭建以及如何由阿里云和TIDL構建一個云-邊緣聯合計算系統。本文在AM5749 IDK平臺上成功運行ALI SDK并在ALI SDK和TIDL SDK的基礎上開發了一系列適配軟件。軟件會對本地的存儲的圖片進行AI識別,并且把識別的統計信息發到ALI CLOUD進行統計。為了驗證識別率本文在本地圖片摻入若干不可識別的空白圖片,識別結果見第五小節,可以看出來識別結果穩定可靠。本文僅介紹邊緣網關配置和運行的操作步驟,本地程序原理等深入討論會在其他文章詳細描述。
一、本地操作,環境準備:
注意:在編譯任何部件之前需要先設定EVM板的時間,日期與中國時區一致,小時數減8分鐘數不變。
date -s--
date –s::
說明:考慮到Link IoT Edge軟件包和OSS-C-SDK及其官方文檔處在不斷更新的狀態,此文檔使用Link IoT Edge armv7 1.8.1、OSS- C-SDK 3.7.1供參考,隨文會貼出官方文檔連接。
1.各組件之間的關系如下圖:
說明:藍色為TI提供的操作系統,紫色為samba服務器,綠色為阿里云提供的軟件SDK,橙色為本文開發的程序。
圖1系統框圖
2.在SD卡上安裝TI SDK:實際上是安裝TI定制的linux操作系統(圖1藍色部分)
TI SDKVersion:ti-processor-sdk-linux-am57xx-evm-05.02.00.10
安裝參考鏈接:http://software-dl.ti.com/processor-sdk-linux/esd/docs/05_01_00_11/linux/Overview_Getting_Started_Guide.html
下載連接:http://software-dl.ti.com/processor-sdk-linux/esd/AM57X/latest/index_FDS.html
在AM5749上下載安裝Link IoT Edge標準版軟件包:link-iot-edge-armv7-v1.8.1.tar.gz
此軟件包提供阿里云在AM5749平臺上運行的基本環境,負責網關設備與阿里云的通信、云資源部署等功能。(圖1綠色a)
官方文檔:https://help.aliyun.com/document_detail/102729.html?spm=a2c4g.11186623.6.556.3bc42940lqj1FE
安裝步驟:
a. AM5749開發板超級終端窗口或者SSH終端窗口執行以下命令,下載環境檢查工具并運行:
#wget http://iotedge-web.oss-cn-shanghai.aliyuncs.com/public/testingTool/link-iot-edge_env-check.sh
#sudo chmod +x ./link-iot-edge_env-check.sh
#sudo ./link-iot-edge_env-check.sh
按照運行環境檢查工具的提示在您的機器上安裝所有必需的依賴項,當檢查工具成功運行完成后,返回如下圖信息,表示Link IoT Edge能夠在您的機器上成功運行。
b. 在阿里云->幫助文檔內,物聯網邊緣計算->產品介紹->發布歷史 中尋找合適的軟件包,或使用下載地址:
http://link-iot-edge-packet.oss-cn-shanghai.aliyuncs.com/arm-linux-gnueabi/link-iot-edge-armv7-v1.8.1.tar.gz?spm=a2c4g.11186623.2.15.3bc42940lqj1FE&file=link-iot-edge-armv7-v1.8.1.tar.gz
c. 安裝:解壓即完成安裝,解壓命令如下:
$tar xzvf <網關軟件包壓縮文件>.tar.gz –C /
至此,linkedge網關安裝完成
4. Link IoT Edge C SDK:link-iot-edge-access-sdk-c-master
此軟件包提供阿里云開發的API,利用此API開發者可以便捷的使用上述軟件包提供的服務,是中間層的軟件庫。(圖1綠色c)
a. 在https://github.com/aliyun/link-iot-edge-access-sdk-c 下載SDK源文件,下載及解壓目錄可自定義;
b. 在編譯、生成驅動程序時需要用到zip命令,但TI SDK中有unzip無zip,故需下載zip源碼,進行編譯,下載地址:
https://sourceforge.net/projects/infozip/files/Zip%203.x%20%28latest%29/3.0/
下載完成后,解壓文件夾并放入目標文件系統中,進入目錄運行命令:
#chmod +x ./unix/configure
#./unix/configure
#make -f unix/Makefile generic
#make -f unix/Makefile install
至此zip命令可用
c. 開始編譯安裝sdk和TI-test程序
#cd linkedge-thing-access-sdk-c
#make prepare //預編譯生成外部依賴庫將花費一定時間
至此,SDK驅動程序編譯完成。
5. Samba服務器(此步驟方便調試和文件交互,是可選步驟)。為方便使用EVM板文件系統的文件,故選擇安裝samba服務器。(圖1紫色)
源碼下載地址:https://download.samba.org/pub/samba/
安裝(EVM板上):
a. 進入目錄/samba-3.5.22/source3;
b. 運行./configure
c. #make & make install(make時間比較長)
d. 配置動態鏈接庫路徑:
#vi /etc/ld.so.conf
在添加一行新內容:/usr/local/samba/lib
執行命令: ldconfig
e. Samba配置文件smb.conf
配置文件的默認路徑為 /usr/local/samba/lib/smb.conf
執行命令 #vi /usr/local/samba/lib/smb.conf
添加內容:
[share]
path = /
public = yes
writable = yes
available = yes
browseable = yes
f. 啟動samba服務。
配置smb.conf文件后,在開始運行samba的服務進程之前。我們需要先做一些準備工作。運行smbpasswd命令(在目錄/usr/local/samba/bin下)
# ./smbpasswd –a root
向smb.conf文件中指定的/etc/samba/smbpasswd文件中添加root用戶以及密碼信息。
為使用方便,可以不設置密碼,直接回車即可。
下面是運行samba的服務進程smbd和nmbd
# /usr/local/samba/sbin/smbd –D –s /etc/samba/smb.conf
# /usr/local/samba/sbin/nmbd –D –s /etc/samba/smb.conf
g. 至此,可以根據上述用戶名登陸,無需密碼。
注意:AM574X EVM板掉電重啟后需要手動啟動samba服務,故可創建一個txt文件,將上述命令寫入其中。
參考:https://www.cnblogs.com/lienhua34/archive/2012/03/18/2405081.html
6. 安裝阿里oss服務的 C-SDK(圖1綠色b):
此軟件包是阿里云存儲服務提供的API庫。
a. 安裝第三方依賴庫:
Libcurl(7.64.0):https://curl.haxx.se/download.html?spm=a2c4g.11186623.2.20.364f27b91fJ4hg
apr(1.6.5)& apr-util(1.6.1):https://apr.apache.org/download.cgi?spm=a2c4g.11186623.2.22.364f27b9g4A30m&file=download.cgi
minixml(2.9):https://www.msweet.org/mxml/?spm=a2c4g.11186623.2.26.364f27b9uOegUa
安裝方式如下:
#./configure
#make
#make install
注意:
安裝apr時,需使用./configure CFLAGS='-Os';
安裝apr-util時,需使用 ./configure CFLAGS='-Os' --with-apr=/usr/local/apr ;
minixml盡量安裝阿里OSS推薦的版本(2.9),以免報錯。
b. 安裝C-SDK:
SDK下載地址:
此文檔實用的SDK版本為3.7.1
https://github.com/aliyun/aliyun-oss-c-sdk/tree/master?spm=a2c4g.11186623.2.10.3aa923d0lWS314
1. 安裝SDK需要用到CMAKE(2.6.0版本以上),CMAKE下載地址:
https://cmake.org/download?spm=a2c4g.11186623.2.18.6a7227b9pF3roO
安裝方式:
#./configure
#make
#make install
2. 安裝SDK:
#cmake .
#make
#make install
官方文檔:https://help.aliyun.com/document_detail/32132.html?spm=a2c4g.11186623.6.868.14106ab3Nio9na
二、云端操作:創建網關設備、邊緣實例、云存儲空間
接下來需要在云端上創建相應的網關設備、邊緣實例、camera、led設備;
官方文檔:https://help.aliyun.com/document_detail/103247.html?spm=a2c4g.11186623.6.564.7caa98caBP6fyd
1. 創建網關產品及設備:
a. 進入阿里云控制臺,進入 邊緣計算à邊緣實例 頁面,點擊新建實例:
輸入實例名稱;
點擊新建網關產品;
輸入產品名稱,并在所屬分類中選擇邊緣計算à邊緣網關點擊完成;
點擊新建網關設備,輸入設備名稱即可,結果如下:
單擊確認,邊緣實例已經創建完成:
b. 創建設備:
ⅰ. 進入邊緣實例詳情頁面(點擊上圖中的實例名稱):
ⅱ. 選擇子設備,并單擊分配子設備;
ⅲ. 在分配子設備頁面,單擊左下角的添加子設備;
ⅳ.單擊新產品,在輸入參數后,單擊完成:
ⅴ. 輸入設備名稱后單擊確定;
注意由于在AM574X EVM板上安裝mysql不成功,使用了txt文件作為存儲數據的載體,因此,為避免讀寫數據出錯,請將所有設備名統一長度。
ⅵ. 在分配子設備頁面將上述添加的設備分配到邊緣節點;
ⅶ. 進入 設備管理à產品頁面,單擊傷處創建的產品進入產品詳情頁面,選擇功能定義,在自定義功能一欄單擊添加功能:
按如圖為攝像頭產品添加自定義功能:
接下來將對Sub1GHz產品添加自定義功能(本平臺同時支持Sub1GHz傳感器網絡數據轉發到云端):
ⅷ. 在子設備頁面,分別為子設備分配驅動;
1. 進入 邊緣計算à驅動管理 頁面,單擊新建驅動,語言類型選擇C語言,驅動名稱自定義,上傳文件:為/demo/camera目錄下的zip文件。
2. 回到邊緣實例的子設備界面,為子設備分配驅動:
ⅸ. 至此,云端上所有設備創建完成
2. 對象存儲OSS存儲空間的創建
a. 進入對象存儲服務的控制臺,點擊左側列表的“+”新建存儲空間bucket:
b. Bucket名稱欄中,填入自定義的Bucket名稱,創建后無法修改;
c. 在區域欄中,選擇該存儲空間的數據中心,創建后無法修改;
d. 存儲類型選擇標準存儲
e. 讀寫權限使用私有,且不開通實時日志查詢。
三、本地軟件編譯和配置
本文開發的軟件包中,主要分為3部分:camera、imageRec、gateway_management。其中第一部分依賴阿里云Link IoT Edge C SDK開發的虛擬設備驅動程序,第二部分為基于TIDL的視頻物體識別程序,第三部分為協調前兩者的網關管理程序。為了三者能夠順利運行,需進行下述操作:
1. 將文件夾camera拷貝到
/link-iot-edge-access-sdk-c/demo目錄下,并將camera目錄下的demo.mk替換此目錄的demo.mk。在/link-iot-edge-access-sdk-c/目錄下運行下列命令,生成虛擬設備驅動程序:
#make && make install
2.將文件夾imageRec拷貝到/usr/share/ti/tidl/examples目錄下,并在imageRec和 /imageRec/oss_server下執行make命令進行編譯。
注意:在oss_server下make之前需注意如下兩點:
a. 需要設置環境變量:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LIBRARY_PATH=/usr/local/apr/lib:$LIBRARY_PATH
b. 需要對./oss_server目錄下的upload.c作一定的修改:
設置在文件首定義的全局變量,這些全局變量的值根據上述創建的云存儲空間進行賦值。
參考:https://yq.aliyun.com/articles/60924?spm=a2c4g.11186623.2.14.438551ffqcyND4
3. 文件夾gateway_management可放在任意位置,進入該文件夾之后,通過./make.txt完成編譯即可。
四、系統運行步驟
1.進入 設備管理à設備 頁面,點擊上述創建的網關設備,將設備信息中的ProductKey、DeviceName、DeviceSecret記錄下來,用于后續啟動網關;
2.進入目錄 /linkedge/gateway/build/script;
運行命令,請講{YourProductKey} {YourDeviceName} {YourDeviceSecret}替換為1中記錄下來的三個信息:
#./set_gw_triple.sh {YourProductKey} {YourDeviceName} {YourDeviceSecret}
3.啟動Link IoT Edge核定服務;
#./iot_gateway_start.sh
4.執行如下命令岔開Link IoT Edge核心服務的運行狀態:
#./iot_gateway_status.sh
若系統顯示如下,表示Link IoT Edge核心服務啟動成功
也可以進入邊緣計算à邊緣實例點擊對應的邊緣實例,查看網關狀態,可以看到已經在線:
5.在此頁面點擊右上角的部署,將資源部署到邊緣網關上:
6. 待部署完成后,后臺運行gateway_management程序,在gateway_management目錄下使用命令:
\#./ gateway_management &
7.進入/usr/share/ti/tidl/examples/imageRec/oss_server目錄,后臺運行oss服務程序:
# ./main &
8. 在/usr/share/ti/tidl/examples/imageRec目錄下,運行TIDL的視頻物體識別程序:
# ./imageRec -i <視頻文件或目錄>
五、運行結果
在云端,通過左側目錄,進入設備管理à設備進入前文創建的設備的詳情頁面,再進入到運行狀態的分頁面中,應看到如下結果:
單擊成功率一欄的查看數據,理應看到如下結果:
為了使成功率更有說服了,本文在識別圖片集里添加了部分不可識別的空白圖片,可以看到識別率很穩定在0.679,說明系統運行平穩。
本文驗證了三大技術:1,ALI IOT SDK在AM57XX平臺運行,實現了邊緣計算網關的功能。2,AM57XX TIDL SDK利用AM5749 EVE加速單元實現了AI圖片分析的邊緣計算。3,同時此平臺還連接了運行TI-15.4 Sub1G CC1310模塊,實現了傳感器網絡數據到Ali Cloud的轉發。
審核編輯:何安
-
嵌入式處理
+關注
關注
0文章
341瀏覽量
9997
發布評論請先 登錄
相關推薦
評論