【飛凌嵌入式 OK3399-C 開發(fā)板試用體驗】(.NET CORE的跨平臺使用)

原創(chuàng) 2020-09-30 14:11:00 RK3399 RK3399開發(fā)板 3399開發(fā)板

作者: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)有的軟件版本沖突,反反復(fù)復(fù)的切換版本,配置環(huán)境,雖然最后編譯和安裝都成功了,但是在運行demo程序時,始終不能完成模型的下載。引用openvino庫編寫的python程序提示無法加載cv2模塊,安裝cv2提示找不到滿足需求的版本,更難過的是NCS2的SDK在RK3399平臺上也不支持,完全不能安裝,真的是一次一次的打擊信心,最終還是放棄了。

還是擁抱微軟吧,做一個TCP Modbus通訊服務(wù),服務(wù)程序通過json配置生成多線程模塊,每路通訊的IO層,協(xié)議解析層,數(shù)據(jù)應(yīng)用層分離達到去耦合的目的。應(yīng)用層數(shù)據(jù)最終發(fā)送到RabbitMQ消息隊列服務(wù)器,局域網(wǎng)內(nèi)以及路由的下一層網(wǎng)絡(luò)中的設(shè)備可通過連接MQ獲取所有通訊數(shù)據(jù)。源代碼是基于windows下的.NET CORE開發(fā)的。可以輕松移植到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é)議層,應(yīng)用層結(jié)構(gòu)進行功能解耦合。各層間數(shù)據(jù)通過隊列進行數(shù)據(jù)交互,應(yīng)用層數(shù)據(jù)最終進到MQ服務(wù)器。所有單元模塊根據(jù)json配置文件生成一個獨立線程。

Json配置文件目錄結(jié)構(gòu)

其中ApplicationserverConfig用來定位應(yīng)用層模塊的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系列核心板有興趣,歡迎咨詢了解。

    了解詳情
    FET3399-C核心板
  • OK3399-C開發(fā)板

    飛凌嵌入式RK3399安卓開發(fā)板主芯片采用高性能六核CPU Rockchip RK3399,GPU采用Mail-T860四核 GPU,RK3399作為目RK產(chǎn)品線中低功耗、高性能的代表,可滿足人臉識別設(shè)備、機器人、無人機、IoT物聯(lián)網(wǎng)領(lǐng)域應(yīng)用。飛凌RK3399開發(fā)板在整體性能、功耗及核心面積做了大幅度優(yōu)化,更加滿足工業(yè)設(shè)計需求。飛凌RK3399開發(fā)板為進一步減少用戶二次開發(fā)難度,開放了底板原理圖,并提供了RK3399用戶手冊、芯片手冊,加上優(yōu)質(zhì)的技術(shù)服務(wù),讓您的方案從構(gòu)思到上市時間縮短。

    了解詳情
    OK3399-C開發(fā)板

推薦閱讀 換一批 換一批