【飛凌嵌入式 OK3399-C 開發(fā)板試用體驗】(.NET CORE的跨平臺使用)
作者:fcb5511
在使用QT實現(xiàn)了三個自定義控件后,我又查找了QT環(huán)境下實現(xiàn)可視化圖表的一些優(yōu)秀開源方案,發(fā)現(xiàn)QCustomPlot是一個不錯的開源庫,移植后效果也還不錯。后面會繼續(xù)嘗試把基本的自定義控件做完,整個界面的組態(tài)也會在后面繼續(xù)做下去。
這一次本來是想嘗試在OK3399-C上移植OpenVINO,剛好手里有一塊Neural Compute Stick2可以做加速。奈何在開源版的OpenVINO移植過程中困難重重,各種依賴庫缺乏,以及現(xiàn)有的軟件版本沖突,反反復復的切換版本,配置環(huán)境,雖然最后編譯和安裝都成功了,但是在運行demo程序時,始終不能完成模型的下載。引用openvino庫編寫的python程序提示無法加載cv2模塊,安裝cv2提示找不到滿足需求的版本,更難過的是NCS2的SDK在RK3399平臺上也不支持,完全不能安裝,真的是一次一次的打擊信心,最終還是放棄了。
還是擁抱微軟吧,做一個TCP Modbus通訊服務(wù),服務(wù)程序通過json配置生成多線程模塊,每路通訊的IO層,協(xié)議解析層,數(shù)據(jù)應用層分離達到去耦合的目的。應用層數(shù)據(jù)最終發(fā)送到RabbitMQ消息隊列服務(wù)器,局域網(wǎng)內(nèi)以及路由的下一層網(wǎng)絡(luò)中的設(shè)備可通過連接MQ獲取所有通訊數(shù)據(jù)。源代碼是基于windows下的.NET CORE開發(fā)的??梢暂p松移植到linux系統(tǒng)下。
安裝.NET CORE3.0,從微軟官方https://dotnet.microsoft.com/download/dotnet-core/3.0獲取SDK和runtime。這里以sdk-3.0.103和runtime3.0.3為例
獲取dotnet-sdk-3.0.103-linux-arm64.tar.gzwget https://download.visualstudio.microsoft.com/download/pr/eb4ffaf1-b0a9-466d-8440-0220dca8f806/48df585d8d978c5418fa514da6a2bd9b/dotnet-sdk-3.0.103-linux-arm64.tar.gz
獲取dotnet-runtime-3.0.3-linux-arm64.tar.gzwget https://download.visualstudio.microsoft.com/download/pr/24687337-74b3-4897-89e4-eec2a743fb70/e12c8e9decba2cadc31e6358c2dad9da/dotnet-runtime-3.0.3-linux-arm64.tar.gz
在/root目錄下創(chuàng)建dotnet-arm64目錄
mkdir /root/dotnet-arm64
解壓上面的兩個包至dotnet-arm64目錄
tar zxf dotnet-runtime-3.0.3-linux-arm64.tar.gz -C $HOME/dotnet-arm64
tar zxf dotnet-sdk-3.0.103-linux-arm64.tar.gz -C $HOME/dotnet-arm64
將.NET Core加入環(huán)境變量
export DOTNET_ROOT=$HOME/dotnet-arm64
export PATH=$PATH:$HOME/dotnet-arm64
執(zhí)行dotnet --info命令查看環(huán)境變量添加情況,出現(xiàn)以下信息說明配置成功。
在windows環(huán)境下搭建好項目工程,并通過NuGet安裝好程序所需要的package,該項目工程用到的package有RabbitMQ.Client,Newtonsoft.Json。整個工程項目的windows搭建我是在visual studio code完成。
整個代碼結(jié)構(gòu)按照IO層,協(xié)議層,應用層結(jié)構(gòu)進行功能解耦合。各層間數(shù)據(jù)通過隊列進行數(shù)據(jù)交互,應用層數(shù)據(jù)最終進到MQ服務(wù)器。所有單元模塊根據(jù)json配置文件生成一個獨立線程。
Json配置文件目錄結(jié)構(gòu)
其中ApplicationserverConfig用來定位應用層模塊的json配置路徑,IOserverConfig用來定位IO層模塊json配置路徑,ProtocolserverConfig用來定位協(xié)議層模塊的json配置路徑。
在保證程序能在windows下正常運行的情況下,將工程移入OK3399-C開發(fā)板。進入到工程目錄,通過.NET CORE命令運行程序。
dotnet run
遠端modbus slave服務(wù)器我是放到了本地計算機,開了四個端口,OK3399端服務(wù)的四個IO層創(chuàng)建四個TCPClient連接到遠端服務(wù)器。實際使用中根據(jù)需要可增加數(shù)量,增加的越多,cpu的使用率,內(nèi)存,網(wǎng)絡(luò)帶寬占用也就越高。
RK3399數(shù)據(jù)到發(fā)送到MQ端,任何設(shè)備通過MQ聲明隊列綁定到RK3399的upexchange即可獲取到modbus數(shù)據(jù)。
通過top命令可查看protocol程序運行狀態(tài)
相關(guān)產(chǎn)品 >
-
FET3399-C核心板
飛凌RK3399安卓高性能核心板采用 采用六核Rockchip RK3399芯片,雙Cortex-A72大核+四Cortex-A53小核結(jié)構(gòu),對整數(shù)、浮點、內(nèi)存等作了大幅優(yōu)化,在整體性能、功耗及核心面積三個方面提升。以下將對瑞芯微芯片RK3399參數(shù),RK3399核心板方案及其性能做具體介紹。如您對飛凌RK3399系列核心板有興趣,歡迎咨詢了解。
了解詳情 -
OK3399-C開發(fā)板
飛凌嵌入式RK3399安卓開發(fā)板主芯片采用高性能六核CPU Rockchip RK3399,GPU采用Mail-T860四核 GPU,RK3399作為目RK產(chǎn)品線中低功耗、高性能的代表,可滿足人臉識別設(shè)備、機器人、無人機、IoT物聯(lián)網(wǎng)領(lǐng)域應用。飛凌RK3399開發(fā)板在整體性能、功耗及核心面積做了大幅度優(yōu)化,更加滿足工業(yè)設(shè)計需求。飛凌RK3399開發(fā)板為進一步減少用戶二次開發(fā)難度,開放了底板原理圖,并提供了RK3399用戶手冊、芯片手冊,加上優(yōu)質(zhì)的技術(shù)服務(wù),讓您的方案從構(gòu)思到上市時間縮短。