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

原創 2020-09-30 14:11:00 RK3399 RK3399開發板 3399開發板

作者:fcb5511

在使用QT實現了三個自定義控件后,我又查找了QT環境下實現可視化圖表的一些優秀開源方案,發現QCustomPlot是一個不錯的開源庫,移植后效果也還不錯。后面會繼續嘗試把基本的自定義控件做完,整個界面的組態也會在后面繼續做下去。

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

還是擁抱微軟吧,做一個TCP Modbus通訊服務,服務程序通過json配置生成多線程模塊,每路通訊的IO層,協議解析層,數據應用層分離達到去耦合的目的。應用層數據最終發送到RabbitMQ消息隊列服務器,局域網內以及路由的下一層網絡中的設備可通過連接MQ獲取所有通訊數據。源代碼是基于windows下的.NET CORE開發的。可以輕松移植到linux系統下。

安裝.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目錄下創建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加入環境變量

export DOTNET_ROOT=$HOME/dotnet-arm64

export PATH=$PATH:$HOME/dotnet-arm64


執行dotnet --info命令查看環境變量添加情況,出現以下信息說明配置成功。

在windows環境下搭建好項目工程,并通過NuGet安裝好程序所需要的package,該項目工程用到的package有RabbitMQ.Client,Newtonsoft.Json。整個工程項目的windows搭建我是在visual studio code完成。

整個代碼結構按照IO層,協議層,應用層結構進行功能解耦合。各層間數據通過隊列進行數據交互,應用層數據最終進到MQ服務器。所有單元模塊根據json配置文件生成一個獨立線程。

Json配置文件目錄結構

其中ApplicationserverConfig用來定位應用層模塊的json配置路徑,IOserverConfig用來定位IO層模塊json配置路徑,ProtocolserverConfig用來定位協議層模塊的json配置路徑。

在保證程序能在windows下正常運行的情況下,將工程移入OK3399-C開發板。進入到工程目錄,通過.NET CORE命令運行程序。

dotnet run

遠端modbus slave服務器我是放到了本地計算機,開了四個端口,OK3399端服務的四個IO層創建四個TCPClient連接到遠端服務器。實際使用中根據需要可增加數量,增加的越多,cpu的使用率,內存,網絡帶寬占用也就越高。

RK3399數據到發送到MQ端,任何設備通過MQ聲明隊列綁定到RK3399的upexchange即可獲取到modbus數據。

通過top命令可查看protocol程序運行狀態





相關產品 >

  • FET3399-C核心板

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

    了解詳情
    FET3399-C核心板
  • OK3399-C開發板

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

    了解詳情
    OK3399-C開發板

推薦閱讀 換一批 換一批