.Net Core跨平台应用开发串口篇HelloArm

2022-04-16 16:55:57
目录
引言硬件环境硬件资源特性支持的系统平台系统平台.NET Core支持的linux版本系统平台选择连接嵌入式Linux系统物理连接串口连接网络连接.NET Core跨平台验证验证程序设计显示系统平台信息串口资源列举串口测试跨平台发布远程部署Linux环境运行.Net Core程序第三方串口类库Linux串口类库编译环境变量配置Linux串口测试配置程序开机运行结束语

引言

为了验证采用dotnet cwww.easck.comore技术开发的物联网设备数据采集接入服务应用是否能在高性价比的linux嵌入式平台运行,针对dotnet core应用程序进行嵌入式linux环境的发布部署运行验证研究。

硬件环境

硬件系统经过对比筛选,选用了友善之臂出品的NanoPC-T3 Plus。该控制板为掌上型嵌入式Linux系统迷你PC,采用64位三星arm CPU,具有完善的硬件接口和驱动支持,大于1G的内存和8G以上的eMMC闪存,具有较高的性能价格比。

.NetCore跨平台应用开发串口篇HelloArm

NanoPC-T3 Plus是友善之臂专门针对企业用户而设计,它采用三星八核Cortex -A53架构的S5P6818处理器,动态运行主频400M-1.4GHz。NanoPC-T3 Plus配备了16GB的eMMC、音频接口、视频输入/输出接口等;并且集成了WiFi和蓝牙,增加千兆以太网和电源管理功能,板载陶瓷天线,带串口调试功能。为适应工业客户需要,NanoPC-T3 Plus加装了标配的散热片,以解决芯片发热问题。NanoPC-T3 Plus带两路视频输入,支持DVP 摄像头及MIPI-CSI摄像头,并且带四路视频输出,分别为HDMI 1.4A接口、LVDS接口、并行RGB-LCD接口、MIPI-DSI接口。并且支持RTC,板载备份电池接口,引出四个USB接口(其中三个是标准A型接口, 另外一个是2.54mm排母)等。 NanoPC-T3 Plus)流畅运行android5.1、Debian、UbuntuCore+Qt等系统,内核驱动源码完全开源,接口丰富。

硬件资源特性

CPU: S5P6818, 运行主频1.4GHz电源管理: 采用一颗ARM® Cortex®-M0单片机做电源管理, 支持动态调压, 软件关机和定时开机等功能内存: 2GB 32bit DDR3 RAM存储: 1 x microSD 卡槽网络: Gbit Ethernet(RTL8211E)Wireless:802.11 b/g/nBluetooth: 4.0 dual mode天线: Wi-Fi和蓝牙共用, 板载陶瓷天线, 同时提供IPX接口eMMC: 16GB视频输入:DVP Camera/MIPI-CSI(双摄像头口)视频输出:HDMI/LVDS/并行RGB-LCD/MIPI-DSI(四个视频输出接口)音频:3.5mm耳机座/Via HDMI麦克风: 板载麦克风USB Host: 4 x USB 2.0 Host , 其中三个是标准A型接口, 另外一个是2.54mm排母Micro USB: 1 x USB 2.0 ClientLCD接口: 45pin, 0.5mm间距FPC贴片座,支持全彩TFT LCD (RGB:8-8-8)HDMI: HDMI 1.4a, Type A型口,1080P高清显示DVP Camera接口: 24pin, 0.5mm间距,FPC贴片竖座GPIO扩展接口: 30 Pin2.54mm排母, 包含4个UART, 1路I2C, 1路SPI, 3路PWM,9个GPIOI2S/USB: 2.54mm间距排母调试串口: 2.54mm间距排针按键: 电源按键, 复位按键, 启动选择按键各一个LED: 1 x power LED and 1 x system LEDCPU温度检测: CPU内部集成温度传感器RTC: 支持RTC, 板上有备份电池接口散热片螺丝孔:能加螺丝固定的散热片供电: DC 5V/3APCB Size:100 x 64mm,八层,沉金工艺温度工作范围: -40℃ to 80℃

为避免广告嫌宜,不过多对设备进行说明(好象难以避免呵,如有此方面问题,请管理员协助进行和谐呵)

在此给出设备的wiki地址:http://wiki.friendlyarm.com/wiki/index.php/NanoPC-T3_Plus/zh

支持的系统平台

厂家提供的系统映像文件支持以下版本系统

lubuntu-desktop-xenial-4.4-armhf(基于ubuntu16.04的LUbuntu桌面版,32位arm系统)friendlycore-xenial-4.4-armhf(基于ubuntu16.04的FriendlyCore系统,32位arm系统)friendlycore-xenial-4.4-arm64(基于ubuntu16.04的FriendlyCore系统,64位arm系统)Android5.1系统

FriendlyCore,是一个没有X-windows环境,基于Ubuntu core构建的系统,使用Qt-Embedded作为图形界面的轻量级系统,兼容Ubuntu系统软件源,非常适合于企业用户用作产品的基础OS。

系统除了保留Ubuntu Core的特性以外,还包括以下特性:

支持电容和电阻触摸屏支持WiFi连接支持以太网连接支持蓝牙,已预装bluez等相关软件包支持音频播放支持Qt 5.10.0 EGLES和OpenGL ES1.1/2.0

系统平台

.NET Core支持的Linux版本

https://docs.microsoft.com/zh-cn/dotnet/core/linux-prerequisites?tabs=netcore2x

.NET Core 2.x 将 Linux 视为一个操作系统。 支持的 Linux 分发都对应有一个 Linux 内部版本(根据芯片体系结构)。

以下 Linux 发行版本/版本支持 NET Core 2.x:

Red Hat Enterprise Linux 7,6 - 64 位(x86_64 或 amd64)CentOS 7 - 64 位(x86_64 或 amd64)Oracle Linux 7 - 64 位(x86_64 或 amd64)Fedora 28、27 - 64 位(x86_64 或 amd64)Debian 9(64 位,arm32)、8.7 或更高版本 - 64 位(x86_64 或 amd64)Ubuntu 18.04(64 位,arm32)、16.04、14.04 - 64 位(x86_64 或 amd64)Linux Mint 18、17 - 64 位(x86_64 或 amd64)openSUSE 42.3 或更高版本 - 64 位(x86_64 或 amd64)SUSE Enterprise Linux (SLES) 12 Service Pack 2 或更高版本 - 64 位(x86_64 或 amd64)Alpine Linux 3.7 或更高版本 - 64 位(x86_64 或 amd64)

系统平台选择

根据.NET Core 2.x对Linux系统的支持,选择friendlycore-xenial-4.4-arm64作为系统运行平台。

下载厂家提供的系统映像文件,对NanoPC-T3/Plus进行系统烧写,方法详见WIKIhttp://www.easck.com教程.

烧写主要步骤:

1、下载厂家提供的映像文件和烧写工具win32diskimager(wiki中提供了下载链接)2、准备一张tf卡,格式化为一个分区(FAT32)3、运行win32diskimager软件,选择映像文件,选择tf卡对应的分区,点击写入4、烧写完成5、将tf卡插入卡座,按信boot键给控制板上电(需外接显示器和键盘、鼠标)6、根据屏幕提示,将系统安装至eMMC闪存。

连接嵌入式Linux系统

FriendlyCore系统默认支持多种连接方式,可通过外接输入、输出设备(键盘/鼠标、显示器)进行连接,也可以通过串口终端进行连接,也支持通过网络,使用ssh终端方式进行连接。

FriendlyCore系统默认配置了两个用户帐户

普通用户:

cript. You can add a reference to LD_LIBRARY_PATH to the library:

$ export LD_LIBRARY_PATH=`pwd`/bin/usr/local/lib:$LD_LIBRARY_PATH

执行上述命令,配置类库目标到环境变量(上述命令为临时环境变量配置,仅当前shell有效)

配置全局环境变量的方法:

vi /etc/profile

在文件的最后一行,增加环境变量LD_LIBRARY_PATH的配置

保存退出后,执行source /etc/profile 刷新环境变量

注:vi相关操作,请自行百度或必应。

Linux串口测试

将测试验证程序中的SerialPort类更换为SerialPortStream类库(方法、属性基本兼容),进行适当的调整,在windows系统上编译运行,通过。

重新发布Linux系统运行版本,进行linux系统部署。

采用普通用户pi登录

如环境变量未有效配置,串口类无法正常执行,程序执行到串口方法调用处停止。

.NetCore跨平台应用开发串口篇HelloArm

按Ctrl+C终止程序。

配置好串口类库所需环境变量,重新运行程序,程序正常运行。

如下图,程序启动,列举出系统有效串口,如下图所示:

.NetCore跨平台应用开发串口篇HelloArm

由于pi用户帐户权限原因,程序只显示了/dev/ttySAC0一个串口,此串口为系统调试终端输出串口。

切换到系统超级用户

su root

根据提示输入密码:fa

切换到程序目录,执行测试程序 ./publish/HelloArm,出现如下界面:

.NetCore跨平台应用开发串口篇HelloArm

在超级用户下,程序列举出了5个串口。

通过操作命令,打开指定的串口,开启接收事件及定时周期发送数据,连接电脑串口(目前大部分电脑已不再提供串口,本实验通过USB转串口模块进行连接),通过PC端的串口工具软件同Linux迷你PC主机进行通讯,收发通讯正常。

配置程序开机运行

在root用户下,配置/etc/rc.local文件,将程序添加到系统开机运行

vi /etc/rc.local

在exit 0之前增加一行

/home/pi/publish/HelloArm

保存退出,重启系统

reboot

重启系统后,调试串口终端界面中,可以看到程序运行的输出信息,至此,程序配置完成,开机自动运行成功。

结束语

.net core为微软推出的跨平台托管程序框架,具备在非windows系统部署运行的能力,但在实际应用中,不能过于想当然,以为支持跨平台就万事大吉,以为凡是.net程序就可以顺利移植为.net core跨平台程序,在实际应用中,需要小心求证,以避免掉进计划时间过于理想的大坑(本实验耗费的时间,远超出计划时间呵。串口类库问题耗费了不少时间,对Linux系统相关操作的熟悉,也耗费了较多时间)。

本文中,验证程序是以指定目标平台,无环境依赖方式进行的发布部署,.net core程序也支持以跨平台方式发布部署,但相关目标平台需安装.net core运行时以及相关依赖,微软官方已有详细的说明文档,本文不再赘述。

注:本实验中,使用了两种硬件设备,故截图有所不同,但系统相同,不影响实验效果和结论。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。