的支持,选择friendlycore-xenial-4.4-arm64作为系统运行平台。
下载厂家提供的系统映像文件,对NanoPC-T3/Plus进行系统烧写,方法详见WIKI教程.
烧写主要步骤:
1、下载厂家提供的映像文件和烧写工具win32diskimager(wiki中提供了下载链接)
2、准备一张tf卡,格式化为一个分区(FAT32)
3、运行win32diskimager软件,选择映像文件,选择tf卡对应的分区,点击写入
4、烧写完成
5、将tf卡插入卡座,按信boot键给控制板上电(需外接显示器和键盘、鼠标)
6、根据屏幕提示,将系统安装至eMMC闪存。
连接嵌入式Linux系统
FriendlyCore系统默认支持多种连接方式,可通过外接输入、输出设备(键盘/鼠标、显示器)进行连接,也可以通过串口终端进行连接,也支持通过网络,使用ssh终端方式进行连接。
FriendlyCore系统默认配置了两个用户帐户
普通用户:
用户名: pi
密码: pi
Root用户:
用户名: root
密码: fa
系统开机默认会以 pi 用户自动登录,你可以使用 sudo npi-config 命令取消自动登录。
物理连接
NanoPC具有HDMI、TFT显示接口和USB接口,可以直接连接显示器、键盘/鼠标进行操作。
串口连接
NanoPC默认支持调试串口做为终端。
通过USB转TTL串口的串口模块进行连接。默认通讯参数:115200,N,8,1
软件可使用任意串口终端工具,如SecureCRT或Windows系统自带超级终端。
网络连接
可以通SSH工具进行网络连接,通过网络终端的方式访问。(Win10系统自带)
FriendlyCore系统网络配置默认为自动获取IP地址。通过网络连接设备,需要确定设备的IP地址。
初始IP地址可以通在串口终端模式下输入ifconfig命令查看,或通过网络扫描确定。
确定设备的IP地址后,可以通ssh命令进行终端连接
本次实验中,我们设备的IP地址为172.16.93.74,通过如下命令进行网络终端接入:
ssh pi@172.16.93.74
根据提示输入密码后,即可成功登入。
.NET Core跨平台验证
由于后期主要需要使用的程序功能为网络通讯和串口通讯,我们主要针对目标嵌入式linux系统下的网络和串口通讯进行验证。
本次实验中,我们先对串口通讯进行验证。
编写一个netcore2.x的控制台程序,程序实现系统信息显示,串口资源列举,串口选择,串口打开/关闭,串口接收显示和串口定时发送测试数据功能。
验证程序设计
采用SerialPort类进行串口测试功能实现(netcore项目需通过Nuget安装SerailPort库)
实现以下功能:
- 显示系统平台信息
- 串口资源列举,
- 串口选择,
- 串口打开
- 串口关闭
- 串口接收/数据显示
- 串口定时发送测试数据
程序较为简单,在此贴出部分功能代码:
显示系统平台信息
串口资源列举
串口测试
编译程序,在window下测试程序通过。
跨平台发布
因目标平台为arm64嵌入式linux系统,采用以下方式进行程序发布:
在命令行窗口,切换到项目文件夹,运行如下命令:
dotnet publish -r linux-arm64 -c Release
通过以上命令,得到生成的目标平台的发布包,程序文件及相关.netcore运行时依赖均被发布到项目release\netcoreapp2.2\linux-arm64\publish文件夹中。
远程部署
采用scp命令,将发布文件复制到目标机器
在windows(win10)系统中,打开控制台窗口,输入scp命令,命令格式如下:
scp –r d:\ubuntu\publish\ pi@172.16.93.74:/home/pi/.
根据提示输入用户密码,完成文件夹的复制。
在ssh终端窗口,切换到程序文件夹
cd /home/pi/publish
设置程序执行权限:
chmod 777 ./HelloArm # HelloArm为测试程序文件名
输入./ HelloArm运行程序
Linux环境运行.Net Core程序
在普通用户pi中运行程序
程序显示了系统环境信息
由于程序启动后调用了SerialPort.GetPortNames方法,程序未能按预期执行,出现如下信息:
提示信息表明SerialPort类库仅支持Windows系统平台,不支持跨平台。
至此,.net core程序跨平台在linux系统运行成功,但串口类库不支持跨平台。
第三方串口类库
为解决串口类支持问题,查找资料,发现github上有一个开源SerialPortStream类库支持netcore,能够支持Linux系统。
https://github.com/jcurl/SerialPortStream
该类库支持windows系统和Linux系统,但在Linux系统下运行,需要额外编译目标平台支持库并进行相关环境配置。
Linux串口类库编译
You first need to compile the support library libnserial.so for your platform. To do that, you'll need a compiler (e.g. GCC 4.8 or later) and cmake.
在目标系统中(FriendlyCore),安装GCC编译器和cmake
首先确定网络正常连接,能够访问互联网(需要良好的网络环境)。
执行如下命令:
sudo apt-get update
安装更新GCC
sudo apt-get install gcc
安装cmake
sudo apt-get install cmake
确保gcc和cmake安装正常。可采用命令查看安装情况
gcc --version
cmake --version
After cloning the repository, execute the following:
$ git clone https://github.com/jcurl/serialportstream.git
$ cd serialportstream/dll/serialunix
$ ./build.sh
根据上面的命令,完成类库的源码克隆和编译。
注:类库linux依赖库仅需在同一目标平台编译一次,其他相同目标平台,复