找回密码
 注册
关于网站域名变更的通知
查看: 396|回复: 1
打印 上一主题 下一主题

飞凌嵌入式 RK3399-C 开发板试用体验(.NET CORE的跨平台使用)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-10-29 21:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
7 O1 L3 M2 e* D6 W1 w

        飞凌嵌入式RK3399开发板心得分享,接上篇

        在使用QT实现了三个自定义控件后,我又查找了QT环境下实现可视化图表的一些优秀开源方案,发现QCustomPlot是一个不错的开源库,移植后效果也还不错。后面会继续尝试把基本的自定义控件做完,整个界面的组态也会在后面继续做下去。

        这一次本来是想尝试在RK3399-C上移植OpenVINO,刚好手里有一块Neural Compute Stick2可以做加速。奈何在开源版的OpenVINO移植过程中困难重重,各种依赖库缺乏,以及现有的软件版本冲突,反反复复的切换版本,配置环境,虽然最后编译和安装都成功了,但是在运行demo程序时,始终不能完成模型的下载。引用openvino库编写的python程序提示无法加载cv2模块,安装cv2提示找不到满足需求的版本,更难过的是NCS2的SDK在RK3399平台上也不支持,完全不能安装,真的是一次一次的打击信心,最终还是放弃了。

        还是拥抱微软吧,做一个TCP Modbus通讯服务,服务程序通过json配置生成多线程模块,每路通讯的IO层,协议解析层,数据{link56}分离达到去耦合的目的。应用层数据最终发送到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.mi ... load/pr/eb4ffaf1-b0a9-466d-8440-0220dca8f806/48df585d8d978c5418fa514da6a2bd9b/dotnet-sdk-3.0.103-linux-arm64.tar.gz


) P# f2 Q+ h8 c# i+ B1 ^+ K

       

        获取dotnet-runtime-3.0.3-linux-arm64.tar.gzwget https://download.visualstudio.mi ... -linux-arm64.tar.gz

       

/ i# ?" g6 G/ s  `8 w" O

        在/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

       
4 Y0 c$ R  n+ q9 {

        将.NET Core加入环境变量

        export DOTNET_ROOT=$HOME/dotnet-arm64

        export PATH=$PATHHOME/dotnet-arm64

       
" i3 u1 c! \1 T/ j# e8 \2 L9 V

        执行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服务器我是放到了本地计算机,开了四个端口,RK3399端服务的四个IO层创建四个TCPClient连接到远端服务器。实际使用中根据需要可增加数量,增加的越多,cpu的使用率,内存,网络带宽占用也就越高。

       

        RK3399数据到发送到MQ端,任何设备通过MQ声明队列绑定到RK3399的upexchange即可获取到modbus数据。

       

        通过top命令可查看protocol程序运行状态

       

       

       

$ X! N. H9 m- V
9 h' H  X, h4 I9 n' z9 L

该用户从未签到

2#
发表于 2020-10-30 17:51 | 只看该作者
这一次本来是想尝试在RK3399-C上移植OpenVINO,刚好手里有一块Neural Compute Stick2可以做加速。奈何在开源版的OpenVINO移植过程中困难重重,各种依赖库缺乏,以及现有的软件版本冲突,反反复复的切换版本,配置环境,虽然最后编译和安装都成功了,但是在运行demo程序时,始终不能完成模型的下载。引用openvino库编写的python程序提示无法加载cv2模块,安装cv2提示找不到满足需求的版本,更难过的是NCS2的SDK在RK3399平台上也不支持,完全不能安装,真的是一次一次的打击信心,最终还是放弃了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-28 19:27 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表