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

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

作者:fcb5511

在使用QT實(shí)現(xiàn)了三個(gè)自定義控件后,我又查找了QT環(huán)境下實(shí)現(xiàn)可視化圖表的一些優(yōu)秀開(kāi)源方案,發(fā)現(xiàn)QCustomPlot是一個(gè)不錯(cuò)的開(kāi)源庫(kù),移植后效果也還不錯(cuò)。后面會(huì)繼續(xù)嘗試把基本的自定義控件做完,整個(gè)界面的組態(tài)也會(huì)在后面繼續(xù)做下去。

這一次本來(lái)是想嘗試在OK3399-C上移植OpenVINO,剛好手里有一塊Neural Compute Stick2可以做加速。奈何在開(kāi)源版的OpenVINO移植過(guò)程中困難重重,各種依賴庫(kù)缺乏,以及現(xiàn)有的軟件版本沖突,反反復(fù)復(fù)的切換版本,配置環(huán)境,雖然最后編譯和安裝都成功了,但是在運(yùn)行demo程序時(shí),始終不能完成模型的下載。引用openvino庫(kù)編寫(xiě)的python程序提示無(wú)法加載cv2模塊,安裝cv2提示找不到滿足需求的版本,更難過(guò)的是NCS2的SDK在RK3399平臺(tái)上也不支持,完全不能安裝,真的是一次一次的打擊信心,最終還是放棄了。

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

解壓上面的兩個(gè)包至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)以下信息說(shuō)明配置成功。

在windows環(huán)境下搭建好項(xiàng)目工程,并通過(guò)NuGet安裝好程序所需要的package,該項(xiàng)目工程用到的package有RabbitMQ.Client,Newtonsoft.Json。整個(gè)工程項(xiàng)目的windows搭建我是在visual studio code完成。

整個(gè)代碼結(jié)構(gòu)按照IO層,協(xié)議層,應(yīng)用層結(jié)構(gòu)進(jìn)行功能解耦合。各層間數(shù)據(jù)通過(guò)隊(duì)列進(jìn)行數(shù)據(jù)交互,應(yīng)用層數(shù)據(jù)最終進(jìn)到MQ服務(wù)器。所有單元模塊根據(jù)json配置文件生成一個(gè)獨(dú)立線程。

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

其中ApplicationserverConfig用來(lái)定位應(yīng)用層模塊的json配置路徑,IOserverConfig用來(lái)定位IO層模塊json配置路徑,ProtocolserverConfig用來(lái)定位協(xié)議層模塊的json配置路徑。

在保證程序能在windows下正常運(yùn)行的情況下,將工程移入OK3399-C開(kāi)發(fā)板。進(jìn)入到工程目錄,通過(guò).NET CORE命令運(yùn)行程序。

dotnet run

遠(yuǎn)端modbus slave服務(wù)器我是放到了本地計(jì)算機(jī),開(kāi)了四個(gè)端口,OK3399端服務(wù)的四個(gè)IO層創(chuàng)建四個(gè)TCPClient連接到遠(yuǎn)端服務(wù)器。實(shí)際使用中根據(jù)需要可增加數(shù)量,增加的越多,cpu的使用率,內(nèi)存,網(wǎng)絡(luò)帶寬占用也就越高。

RK3399數(shù)據(jù)到發(fā)送到MQ端,任何設(shè)備通過(guò)MQ聲明隊(duì)列綁定到RK3399的upexchange即可獲取到modbus數(shù)據(jù)。

通過(guò)top命令可查看protocol程序運(yùn)行狀態(tài)





相關(guān)產(chǎn)品 >

  • FET3399-C核心板

    飛凌RK3399安卓高性能核心板采用 采用六核Rockchip RK3399芯片,雙Cortex-A72大核+四Cortex-A53小核結(jié)構(gòu),對(duì)整數(shù)、浮點(diǎn)、內(nèi)存等作了大幅優(yōu)化,在整體性能、功耗及核心面積三個(gè)方面提升。以下將對(duì)瑞芯微芯片RK3399參數(shù),RK3399核心板方案及其性能做具體介紹。如您對(duì)飛凌RK3399系列核心板有興趣,歡迎咨詢了解。

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

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

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

推薦閱讀 換一批 換一批