EC954用户手册V2.0

EC954用户手册V2.0


边缘计算机EC950系列

用户手册

(适用于Debian11,IEOS V2.0.0及以上版本)

Version2.0,2024年01月

www.inhand.com.cn

本手册中描述的软件是根据许可协议提供的,只能按照该协议的条款使用。

版权声明 

© 2023 映翰通网络 保留所有权利。

商标 

InHand标志是映翰通网络的注册商标。

本手册中的所有其他商标或注册商标属于其各自的制造商。

免责声明 

本公司保留对此手册更改的权利,产品后续相关变更时,恕不另行通知。对于任何因安装、使用不当而导致的直接、间接、有意或无意的损坏及隐患概不负责。

1 导言

本用户手册适用于基于Arm架构的边缘计算机EC954系列,并涵盖整套适用于所有支持型号的说明。在参考这些章节之前,请确认您计算机型号的硬件规格是否支持所涵盖的功能/设置。

2 硬件安装说明 

在本章中,我们将介绍基于Arm结构的边缘计算机EC954系列的硬件安装说明。

2.1介绍

下面的章节以EC954系列举例,描述了EC954系列的外部连接器和引脚分配的应用。

2.2 EC954面板

前面板


后面板


2.3 EC954外部连接器

2.3.1 以太网

这是用于以太网连接的四个 RJ45 连接器


EC954有个RJ45以太网口,支持10M/100M/1000M自适应速率。

绿灯:LINK指示灯,对端设备是1000M接口时长亮,对端设备是10/100M接口时长灭。

黄灯:ACT灯,当有数据时闪烁

2.3.2 串口

  1. EC954支持8路串口,前4路支持RS-232或RS-485或RS-422通讯,软件可配置,后4路固定为RS-485

2.3.3 CAN

EC954具有2路CAN总线接口,支持CAN 2.0A/B标准。CAN2兼容CAN FD,最高速率可达5Mbps。

2.3.4 开关量输入接口(Digital Input)

2.3.5 开关量输出接口(Digital Output)

2.3.6 USB

EC954提供两个 USB 2.0 Host 接口。


2.3.7 LED


EC954 有12个LED灯,分别对电源及系统运行状态进行指示。


标识

名称

定义

PWR

电源指示灯

上电常亮

STAT

系统运行状态指示灯

当系统正常启动后,STATUS闪烁,如果系统启动阶段发生异常导致系统启动失败;或者恢复出厂操作尚未完成时,STATUS长灭。

WARN

警告指示灯

当系统发生警告异常,系统升级或者恢复出厂尚未完成时,WARN灯闪烁。

ERR

错误指示灯

当系统发生严重错误,系统升级或者恢复出厂尚未完成时,Error灯闪烁。

SIM1

SIM1卡指示灯,

选中SIM1进行拨号时常亮,选择SIM2拨号或者关闭拨号时,长灭。

SIM2

SIM1卡指示灯,选中则常亮

选中SIM2进行拨号时常亮,选择SIM1拨号或者关闭拨号时,长灭。

USER1

用户可编程指示灯1

默认熄灭,可由用户编程控制

USER2

用户可编程指示灯2

默认熄灭,可由用户编程控制

4G/5G

蜂窝网连接状态指示灯

拨号成功后常亮

L1

蜂窝网信号强度

见蜂窝网信号强度指示灯说明

L2

蜂窝网信号强度

L3

蜂窝网信号强度


蜂窝网信号强度指示灯


除了L1,L2,L3信号灯的组合来指示蜂窝信号强度,还有一组LED组合来标识恢复出厂的过程。


执行恢复出厂设置后,系统会进行一次重启,重启完成后,恢复出厂并没有完成,此时WARN灯和ERROR闪烁,STATUS熄灭,在这个状态下不能对设备断电,否则可能会导致一些文件丢失而影响系统功能。这个状态会持续30秒,当恢复出厂完成后,WARN和ERROR熄灭,STATUS闪烁。

2.3.8 用户可编程按键

EC954提供API接口,用户可以调用API接口检测可编程按键的状态,然后实现自己的按键逻辑。


2.3.9 直流输入

EC954支持12~48V直流输入


2.3.10 SIM卡插槽

EC954支持2个SIM卡插槽,SIM卡需要在断电状态下安装,将SIM卡按压插入卡槽即可。


2.3.11 MicroSD卡槽

EC954有一个MircoSD卡的卡槽,SD不支持热插拔,需要在断电情况下插拔。插入SD卡,给设备上电后,系统会自动挂载所有的分区。

2.3.12 恢复出厂按键

有一个复位按钮用于系统恢复出厂。参考《恢复出厂设置》进行操作。


2.3.13 开关机按键

EC954配有一个开关机按键用于开关机。


2.3.14 天线接口

EC954共有7个天线接口,不同型号标配的天线数量不同,将天线拧入相应的天线接口完成天线安装。



2.3.15 mSATA硬盘接口

EC954支持mSata硬盘,出厂默认不配带mSata硬盘,如果用户有大容量的存储需求,需要自购mSata硬盘,也可咨询映翰通进行mSATA的购买。

3 入门

在本章中,我们将介绍基于Arm结构的边缘计算机EC900的基础配置。

3.1连接到EC900

您需要一台计算机,用于连接到EC900并登录到命令行界面。可以通过以太网网线的方式连接。

出厂默认的用户名和密码:

Username: edge

Password: security@edge

EC900设备出厂默认创建了root,但是登录被禁用。如果需要使用root用户,请手动修改系统配置,输入sudo -s 切换至root用户。用户edge在sudo组中,所以您可以在edge用户下使用sudo来执行系统级命令。有关其他细节,请参阅第5章中的sudo机制部分。

提示

当出现command not found时,输入sudo -s切换至root用户或使用sudo命令来操作。

注意

出于安全考虑,我们建议您禁用默认的用户账户,并创建您自己的用户帐户。

3.1.1 通过SSH Console进行连接

EC900支持通过以太网的SSH连接。使用以下默认IP 地址连接到EC900。

端口

默认IP

ETH 1 

192.168.3.100

ETH 2 

192.168.4.100

ETH 3 

192.168.5.100

ETH 4 

192.168.6.100

3.1.1.1 Linux用户

提示

这些步骤适用于您在 Linux PC上连接到EC900。请不要将这些步骤应用于EC900设备本身。在您运行ssh命令之前,请确保将PC的以太网口IP地址配置在特定范围内。ETH1:192.168.3.0/24,ETH2:192.168.4.0/24,ETH3:192.168.5.0/24,ETH4:192.168.6.0/24。

在 Linux PC上使用 ssh 命令访问EC900的ETH1 端口。

输入yes继续完成连接。

当界面出现终端提示符edge@edge-computer:~$,可输入shell命令时,连接成功。

3.1.1.2 Windows用户

提示

这些步骤适用于您在Windows PC上连接EC900。请不要将这些步骤应用于EC900设备本身。

请在您的Windows PC机上做出如下步骤

点击链接http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html,下载PuTTY(免费的软件),在Windows环境下以SSH命令的方式来建立与边缘计算机EC900的连接。下图是使用SSH连接的示例:

3.2用户账户管理

3.2.1 切换到root用户

您可以使用sudo -s的命令来切换到root用户。出于安全考虑,不要在root权限下操作所有的命令。

提示

点击链接获取更多关于sudo命令的信息。

https://wiki.debian.org/sudo

注意

您可能会在非root权限下使用一些管道或者重定向行为的时候得到”permission denied“的提示,此时您必须使用'sudo su -c'来取代'>','<','>>','<<','etc'等命令,需要包含完整命令的单引号。

3.2.2 创建和删除用户账户

您可以使用useradduserdel命令来创建和删除用户的账户。请务必在主界面使用这些命令来设置该账户的相关访问权限。以下是如何在sudo组中创建test1的示例 (test1用户的默认登陆环境是bash,其主目录是/home/test1)

修改test1的密码,用passwd命令,输入新密码然后重复输入新密码以确认更改

如果要删除用户test1,请使用命令userdel

3.2.3 禁用默认的用户账户

注意

在禁用默认帐户之前,应首先创建一个用户帐户

使用passwd命令来锁定默认用户账户,使edge用户无法登录

对edge用户进行解除锁定

3.3 网络管理和系统管理

EC954基于debian 11系统,因此可以使用Linux原生的命令进行网络管理和系统管理;为了便于用户配置,映翰通开发了一套IEOS系统程序,提供web界面,用户可以方便的通过web进行网络管理和系统管理,但需要注意的是,当启用IEOS功能后,IEOS会接管网络管理和系统管理,此时通过Linux原生命令进行网络管理和系统管理可能会失效;设备出厂默认启用IEOS,如果用户需要基于Linux原生的命令行进行网络管理和系统管理,需要先关闭IEOS。

3.3.1 基于IEOS的web管理

IEOS是映翰通自研的一套运行在Linux系统上的网络管理和系统管理程序,IEOS提供web界面,用户可以通过web进行以太网口ip地址,蜂窝拨号,Wi-Fi Station,DHCP Client/Server,静态路由,防火墙等网络配置;也可以对系统时间,时区,固件升级和系统重启等进行操作;另外IEOS还支持对接映翰通的设备管理平台DeviceLive,用户可以通过DeviceLive平台对EC954设备进行远程监控和管理。

IEOS采用状态和配置分离的设计方案,分为网络管理,系统管理和状态三大功能板块。网络管理菜单和系统管理菜单下只能进行网络和系统的相关配置,状态信息需要统一到状态页面查看。

重要说明:使用IEOS程序管理网络配置和系统配置的时候,如果同时使用Linux原生命令,二者可能会相互影响,导致异常的运行状态。建议IEOS支持的配置都通过IEOS web来实现管理,IEOS不支持的配置,比如VPN,可以结合Linux原生命令一起实现配置目标。

3.3.1.1 登录web

考虑到用户的程序可能会需要使用HTTP/HTTPS标准端口号80/443,IEOS使用9100端口号做为HTTPS连接的端口,不支持通过HTTP访问;当用户使用HTTP访问web的时候,会自动跳转到通过HTTPS。本文档以通过eth2的默认地址192.168.4.100为例来进行说明。用户在浏览器中输入192.168.4.100:9100后跳转到登录页面

重要说明:IEOS程序启用时,会预留一些端口号供内部通信使用,预留端口号范围9100 ~ 9200,启用IEOS后,客户的程序应该避开使用这些端口号,否则可能会产生冲突导致功能异常。


3.3.1.2 网络管理

3.3.1.2.1 配置以太网接口

给eth1接口配置静态IP地址


给eth1接口配置DHCP Client


在eth1接口上启动dhcp server功能,给eth1的下挂设备分配地址


DHCP Server配置参数说明:

Enable DHCP Server:DHCP Server功能的开关

Starting Address:DHCP Server地址池起始基址,网段 + 起始地址 = 地址池的起始ip地址。在截图中,eth1的网段是192.168.3.0/24,基址是1,则地址池的起始地址是192.168.3.1/24.

Max Address Number:地址池中的最大地址数量.

Lease period:租期时间

3.3.1.2.2 配置蜂窝拨号


蜂窝网参数说明:

Enabled: 蜂窝功能的开关;默认是开启的状态。

Profiles:拨号参数集,用于专网卡拨号时配置APN,用户名,密码以及认证方式等信息。如果不是专网卡,通常不需要修改这里的配置。拨号参数集最多可以添加10条记录。

Network Mode:蜂窝的网络制式,可以选择3G,4G等相关网络制式,比如LTE,WCDMA等。如果不清楚选哪种网络制式,则选择自动;程序会自动选择一个最合适的网络制式。默认值是自动。

Enable Default Route:启用添加默认路由功能,开启后,当拨号成功后,会添加一条蜂窝口的默认路由。默认是开启的。

Metric:蜂窝口默认路由的度量值,当蜂窝口,Wi-Fi和以太网口都配置了默认路由的时候,度量值最小的生效。


Dual SIM Enabled:启用双卡功能。EC954为了提高网络的可靠性,支持双卡单拨。设备上需要插入2张sim卡,开启该功能后,如果sim1卡因为欠费导致拨号失败,会自动切换到sim2卡进行拨号。默认是关闭的。

Main SIM:主sim卡,拨号时会优先使用选中的sim卡进行拨号,拨号失败达到一定次数时,在切换到另外一张sim卡进行拨号,默认先使用sim1进行拨号。

Max Number of Dials: 开启双卡单拨功能后,当前拨号sim卡拨号达到指定次数,切换到另外一张sim卡进行拨号。

APN Profile: sim卡选用的拨号参数集,默认值是自动。通常专网卡通常需要配置拨号参数集,并在此处选择拨号参数集的Index。

PIN Code:sim卡的PIN码。


无线蜂窝网络比较复杂,有些时候会出现拨号假连接的情况,即拨号状态是成功的,但却ping不通目标地址;发生这些状况的时候,重新拨号一次就可以恢复正常。IEOS蜂窝拨号支持ICMP探测以发现假连接。建议使用蜂窝联网的客户开启ICMP探测,这样出现假连接的时候也可以快速恢复。

ICMP探测参数:

ICMP Detection Server Probes:ICMP探测地址;可以配置2个探测地址,只要有1个地址探测成功,则说明蜂窝没有出现假连接。2个地址都没有配置的时候,ICMP探测功能处于关闭状态。

Detection Interval:间隔多久进行一次ICMP探测。

Detection Timeout:ICMP探测超时时间,等待多久没有收到探测响应报文,则认为此次探测失败

Detection Max Retries:最大探测次数;当探测失败达到这个值的时候,触发重新拨号。取值范围[1,5]

Detection Strict:是否开启严格探测。关闭严格探测时,探测程序在每个探测周期会检测蜂窝接口接收的报文是否发生变化,如果有变化,说明蜂窝网络是通的,则不会发送ICMP报文进行探测,这样可以节省一些流量;如果开启探测,则无论蜂窝接口接收报文的数量是否发生变化,都会周期性的发送ICMP探测报文。默认是关闭的。


高级配置中是一些不常用的设置选项。

Debug Mode enabled:是否启用debug功能,开启后,日志中会增加一些拨号相关的调试信息,默认关闭。

Enable Infinitely Redial:开启无限重拨。某些情况下,拨号会处于异常状态,通过重启系统可以恢复正常;默认无限重拨是关闭的,当拨号失败一定次数后,会重启系统尝试恢复。由于拨号默认是开启的,有些客户在不插sim卡的情况下,拨号失败,系统会重启,针对这种情况,可以开启无限重拨;这样无论拨号失败多少次,系统都不会重启。

Dial Interval:拨号间隔;但某次拨号失败时,进行下一次拨号之前等待的时间。

Signal Query Interval:信号查询间隔。信号不好时,可能会产生假连接的问题;这时重新拨号有一定概率可以解决假连接的问题。拨号程序会定期检测信号强度,这里配置的是信号检测周期。

3.3.1.2.3 配置Wi-Fi Station


Enable Wi-Fi:使能开关;默认关闭

Client SSID:需要连接的ssid,可以手动输入;也可以通过扫描按钮获取附近可连的ssid

Enable Default Route:是否启用添加默认路由功能,开启后,当wifi连接成功后,会添加一条wlan口的默认路由。默认是开启的。

Metric:wifi口默认路由的度量值,当蜂窝口,Wi-Fi和以太网口都配置了默认路由的时候,度量值最小的生效。

Auth Method:认证方式,支持无认证,WPA-PSK,WPA2-PSK,WPA-PSK/WPA2-PSK Mixed

Encrypt Mode:加密方式;支持CCMP,TKIP,TKIP和CCMP

WPA/WPA2 PSK Key:密钥信息

3.3.1.2.4 配置静态路由

这里配置的是以太网的静态路由,当同时配置了以太网,蜂窝,wifi的默认路由时,metric值最小的那一条默认路由生效。需要保证默认路由的Metric值是不同的。


静态路由配置参数:

Interface:静态路由的出接口

Target:目标网络

Netmask:目标网络掩码

Gateway:下一跳地址

Metric:静态路由的度量值

3.3.1.2.5 配置防火墙

目前只支持使用iptables命令进行配置。

3.3.1.2.6 配置DNS


DNS Servers:DNS Server地址,最多支持配置4个

Domain name hijacking:域名劫持功能,可以实现IP地址和域名之间的绑定。


3.3.1.2.7 网络诊断

网络诊断支持ping,traceroute和nslookup功能。


3.3.1.3 系统管理

3.3.1.3.1 基础配置

云管理


Enabled: 对接DeviceLive平台的使能开关; DeviceLive是映翰通设备的远程监控和管理平台;

Cloud Server:DeviceLive平台有2个地址;一个是国内平台的地址,另外一个是海外平台地址;这里选择连接哪个平台。

时区和NTP client


最多可以配置10个NTP Server地址,程序周期性的依次向每个服务器地址发送同步请求,同步成功后,将系统时间写入RTC,并不再继续向后面的NTP服务器发送同步请求。

除了使用NTP同步时间,在Device Info状态页面有一个同步按钮可以手动同步时间,但只有当设备时间和本地时间(访问设备所使用的电脑的时间)相差超过3s时,才会显示这个同步按钮。


这里支持配置的导入,导出以及恢复出厂。

3.3.1.3.2 固件升级

自动重启选项默认是关闭的,升级固件之后,需要手动重启系统才能生效;开启自动重启选项后,升级固件成功后会自动重启系统。

3.3.1.3.3 其他


这个页面有重启系统和重置系统2个功能。重置系统需要慎重使用,重置系统功能会将系统的配置状态和文件系统状态恢复到和出厂时一致,也就是说用户安装的软件也会被清除。

3.3.1.4 状态

3.3.1.4.1 设备信息

设备信息状态页面显示主机名,设备型号,序列号,固件版本,内核版本,文件系统版本以及CPU,内存和磁盘空间的使用概况。


3.3.1.4.2 蜂窝拨号状态信息

蜂窝拨号状态页面显示当前拨号使用的sim卡,IMEI,IMSI,ICCID,信号强度,以及拨号获取的IP地址,DNS等信息。


3.3.1.4.3 Wi-Fi Station状态信息

Wi-Fi状态页面显示Wi-Fi连接成功后获取的IP地址,网关以及DNS等信息。

3.3.1.4.4 DHCP Server状态信息

DHCP Server状态页面显示设备做为DHCP Server,分配出去的IP地址,客户端主机名,客户端主机mac以及过期时间。

3.3.1.4.5 路由状态信息

路由状态页面显示IPv4直连路由,静态路由以及路由邻居等信息。

3.3.1.4.6 防火墙状态信息

防火墙状态信息显示过滤规则,IP地址映射规则等信息。

3.3.1.4.7 日志信息

日志页面可以查看系统日志,用户日志以及设置查看的日志等级,包括Error,Info,Debug等级别。日志也可以下载到本地。

3.3.2 基于Linux的命令行管理

使用Linux命令行进行网络配置和系统配置的时候,首先需要关闭IEOS程序。IEOS是通过systemctl来管理的,

关闭IEOS的方式如下:

systemctl stop ieos_daemon

这种关闭只针对本次启动生效,系统重启后,IEOS程序依然会启动,禁止IEOS程序开机启动的方式如下:

systemctl disable ieos_daemon

重要说明:关闭IEOS之后,拨号,Wi-Fi等无线联网功能需要用户基于Linux原生命令来实现,而且也无法实现对接DeviceLive平台对设备进行远程管理。

3.3.2.1 网络管理

3.3.2.1.1 设置一个静态IP地址

如果要为EC954设置静态IP地址,通过命令 vim /etc/network/interfaces.d/eth1或 vim /etc/network/interfaces.d/eth2修改对应的网络配置文件来对以太网接口的默认网关,地址,网络以及子网掩码进行设置。这里以给eth2口设置静态IP来举例说明:

修改接口IP配置后,执行/etc/init.d/networking restart,重启网络服务,使配置生效。

3.3.2.1.2 设置一个动态IP地址

如果要为EC954设置动态IP地址,通过命令vim /etc/network/interfaces.d/eth1或 vim /etc/network/interfaces.d/eth2修改对应的网络配置文件,在inet后设置为DHCP将自动获取IP地址。

这里以给eth1口设置动态IP来举例说明。

修改接口IP配置后,执行/etc/init.d/networking restart,重启网络服务,使配置生效。

3.3.2.3 系统管理

3.3.2.3.1 查询固件版本

要检查EC954的计算机固件版本,请键入:

加上-a的选项可以看到完整的版本信息:

3.3.2.3.2 查看可用磁盘空间

要确定可用驱动器空间的量,请使用带有-h选项的df命令。系统将返回按文件系统分解的驱动器空间量。EC954产品,用户可用的磁盘分区是/dev/mmcblk0p8。下面是一个示例:

3.3.2.3.3 查询产品型号信息

devinfo工具可以查看产品的型号信息

3.3.2.3.4 调整时间

EC954有两个时间设置。一个是系统时间,另一个是由EC954的硬件所保持的RTC(实时时钟)时间。使用date命令来查询当前的系统时间或设置一个新的系统时间。使用hwclock命令查询当前的RTC时间或设置一个新的RTC时间。

使用命令date MMDDhhmmYYYY来设置系统时间:

MM: 月

DD: 日

hh: 时

mm: 分

YYYY: 年

使用以下命令可以将RTC时间设置为系统时间

点击以下的链接来获取更多有关日期和时间的详细信息:

https://www.debian.org/doc/manuals/system-administrator/ch-sysadmin-time.html

https://wiki.debian.org/DateTime

3.3.2.3.5 设置时区

有两种方法可以配置EC954的时区。一个是使用命令tzselect。另一个是使用/etc/localtime文件。

3.3.2.3.6 使用tzselect命令

当键入tzselect命令后,会进入到选择地区的界面先选择大致的区域(按大洲大洋划分)输入大洲或大洋前面的数字

再选择该大洲或大洋下的国家

按照以上步骤获取到中国时区关键字Asia/Shanghai,执行以下命令设置时区

3.3.2.3.7 使用localtime文件

本地时区存储在/etc/localtime中,如果没有为TZ环境变量设置值,则被GNU库用于C(glibc)。此文件或者是/usr/share/zoneinfo/file的副本,或者是指向它的符号链接。若EC954无法找到/usr/share/zoneinfo/文件,请从该网站上下载您所需要的时区信息文件(https://www.iana.org/time-zones),并在EC900中重新链接到本地时间文件。

注意

成功下载所需要的时区信息文件后,进行解压,之后使用zic命令编译生成对应的二进制文件,生成的时区文件为“/usr/share/zoneinfo/自定义时区文件名”。

4 外设接口的高级配置

在本章中,我们将介绍基于Arm结构的边缘计算机EC900的外设接口的高级配置。

4.1串口

EC954有8个串口,前4个串口支持RS-232、RS-422和RS-485 多种串口模式,默认模式为RS-485,使用ih_uart_ctl命令可以切换串口模式。后4个串口固定为RS-485模式。

P1对应的设备节点是/dev/ttyCOM1

P2对应的设备节点是/dev/ttyCOM2

P3对应的设备节点是/dev/ttyCOM3

P4对应的设备节点是/dev/ttyCOM4

4.1.1 更改串口设置

用stty命令查看和设置串口

通过键入sudo stty --help查看详细命令内容:

4.1.2 查看串口信息

4.1.3 设置COM1串口的波特率

sudo stty -F /dev/ttyCOM1 ispeed 9600 ospeed 9600 cs8

4.1.4 设置COM2串口的波特率

sudo stty -F /dev/ttyCOM1 ispeed 9600 ospeed 9600 cs8

4.1.5 设置COM3串口的波特率

sudo stty -F /dev/ttyCOM3 ispeed 9600 ospeed 9600 cs8

4.1.6 设置COM4串口的波特率

sudo stty -F /dev/ttyCOM4 ispeed 9600 ospeed 9600 cs8

注意

关于stty命令的详细信息可在以下链接中获得

http://www.gnu.org/software/coreutils/manual/coreutils.html

4.2 USB接口

EC954提供两个USB 2.0 Host接口,主要用于扩展存储设备、接鼠标和键盘

4.2.1 USB自动挂载

EC954支持USB存储设备热插拔。它会自动挂载所有的分区。EC954会把所有USB存储设备分区挂载到/mnt/路径下,挂载文件夹的命名格式为usb_<node>_<num>。其中,<node>是分区的设备节点名称,<num>可以是0~9的数字。

注意

在断开USB大容量存储设备之前,请记住输入sync同步命令,以防止数据丢失。当您断开存储设备的连接时,请从/media/* 目录下退出。如果您留在/media/usb*中,则自动卸载过程将会失败。如果发生这种情况,请键入umount /media/usb*以手动卸载设备

4.2.2 micro SD卡自动挂载

EC954支持micro SD存储卡不支持热插拔。它会自动挂载所有的分区。EC954会把所有micro SD存储卡分区挂载到/mnt/路径下,挂载文件夹的命名格式为sd_<node>_<num>。其中,<node>是分区的设备节点名称,<num>是0~9的数字。

4.2.3 mSATA硬盘自动挂载

(1)登录系统,执行sudo fdisk -l,找到自己硬盘分区,如下图是/dev/sda1

(2) 将分区格式化为需要使用的文件系统,比如ext4

(3) 创建挂载点, 比如/mnt/sda1

(4) 编辑vi /etc/fstab文件,

在末尾行加上/dev/sda1 /mnt/sda1 ext4 defaults,nofail,x-systemd.device-timeout=1s 0 0,添加后如下图所示:

/dev/sda1:设备分区,需要用户根据实际情况进行配置

/mnt/sda1: 挂载点,需要用户根据实际情况进行配置

etx4 硬盘分区的文件系统格式,需要用户根据实际情况进行配置

defaults,nofail,x-systemd.device-timeout=1s 0 0固定配置,推荐使用这样的配置,用户也可以根据需要自行修改。

4.3 CAN总线接口

EC954的CAN端口支持两个CAN总线,CAN1对应设备can0,CAN2对应设备can1

4.3.1 配置连接CAN1接口

默认情况下,CAN端口将被初始化。如果需要任何其他配置,请使用ip链接命令检查CAN设备。要检查CAN设备的状态,请使用ip链接命令:

要配置CAN设备,请使用ip link set can0 down来先关闭设备

sudo ip link set can0 down

然后配置比特率(以下是125k比特率示例):

sudo ip link set can0 type can bitrate 125000

最后重新开启设备

sudo ip link set can0 up

4.3.2 配置连接CAN2接口

默认情况下,CAN端口将被初始化。如果需要任何其他配置,请使用ip链接命令检查CAN设备。要检查CAN设备的状态,请使用ip链接命令:

要配置CAN设备,请使用ip link set can1 down来先关闭设备

sudo ip link set can1 down

然后配置比特率(以下是125k比特率示例):

ip link set can1 type can bitrate 125000 dbitrate 1250000 fd on

最后重新开启设备

sudo ip link set can1 up

4.4 IO调试

EC954支持4路DI和4路DO。当您要使用IO口的时候请键入dio_mgmt命令用于控制io的输入输出。dio_mgmt的用法:

当需要设置某位IO口为高或者低时,可以键入命令dio_mgmt set D<I/O><number><HIGH/LOW>

通过键入dio_mgmt show D<I/O><number>打印对应的IO口的电平信息。

4.5 GPS

EC900部分型号内部集成GPS模块,数据串口节点为/dev/ttyS9。

如果要查看GPS的详细信息,有两种方式可以进行查看:

1、使用stty设置串口节点,键入cat直接输出源数据


2、键入gnss命令直接输出解析后的时间、经纬度等信息

4.6 开关机按键

4.6.1 关闭设备

1.通长按开关机按键8秒进行关机

2.您可以使用Linux命令来关闭设备上运行的所有软件并停止系统。但是,在运行此命令后,CPU、RAM和存储设备等主要组件将掉电。


4.6.2 启动设备

短按开关机键,系统就会执行开机操作。

5 安全

在本章中,我们将介绍基于ARM结构的边缘计算机EC900的安全机制。

5.1 sudo机制

在EC900中,为了获得更好的安全性,根用户被禁止使用。Sudo是一个程序,让系统管理员允许被同意的用户作为根用户或其他用户执行一些命令。最基础的准则是给予尽可能少的特权完成工作。使用sudo比使用root身份的会话打开更安全,原因有很多,包括:

• 不用知道root密码(sudo会提示当前用户的密码),可授予普通用户特权

• 通过sudo运行需要特权的命令很容易,其余时间,都作为无特权用户工作,从而降低由于错误操作可能造成的损害。

• 有些系统级命令不能直接对用户使用,如下示例输出所示:

5.2 防火墙

Netfileter/iptables (以下简称iptables)是nuix/linux 系统自带的优秀且完全免费的基于包过滤的防火墙工具、它的功能十分强大、使用非常灵活、可以对流入、流出及流经服务器的数据包进行精细的控制。

5.3 TPM2.0

TPM代表“Trusted Platform Module”(可信平台模块),它是一种硬件安全模块,旨在提供计算机系统的安全和加密功能。它是一个安全微控制器,可以在计算机系统中嵌入或作为独立硬件设备出售。它包含一个加密协处理器,用于存储加密密钥、数字证书和其他安全数据,以及支持多种加密算法和安全协议。在EC954上,已经集成了标准的TPM2.0协议栈和TPM2.0工具供用户使用。

6 系统恢复出厂设置及更新

在本章中,我们将介绍基于Arm结构的边缘计算机EC900如何恢复出厂设置及更新。

6.1 恢复出厂设置

有两种方法可以恢复出厂设置:

1、通过键入命令,系统会自动重启并恢复出厂设置。

2、通过按键恢复出厂设置:
(1)长按恢复出厂设置按键10-20s,看到warn灯长亮。
(2)当warn灯长亮以后,松开恢复出厂设置按键。
(3)松开恢复出厂设置按键后,error灯闪烁几次后系统开始重启并执行恢复出厂设置
(4)系统重启后,warn灯和error灯闪烁,status熄灭;大约30s后,当warn灯和error灯都停止闪烁,同时status开始闪烁,则系统完成恢复出厂设置。

6.2 系统升级

准备一个U盘(micro SD卡)。如果该U盘(SD卡)有多个分区,请使用第一个分区。建议不做多个分区。U盘(SD卡)分区需要格式为FAT32格式。本文档以升级EC954-V2.0.0.img为例进行说明。

(1)在U盘(SD卡)根目录下创建一个空的ec900_img目录,将inhand发布的EC954-V2.0.0.img文件和md5.txt文件放到ec900_img目录下。
(2)确认md5.txt文件中仅有EC954-V2.0.0.img一行的md5哈希值。EC954不支持多个img镜像ota升级。
(3)在电脑上正常退出U盘(SD卡)。注意不要直接拔u盘,要在桌面选择“退出”或“弹出”操作。
(4)将U盘(SD卡)插入目标EC900设备。目标设备会自动校验EC954-V2.0.0.img文件,并进行OTA升级。升级过程中WARN和ERROR灯会有相应的显示。等WARN和ERROR恢复正常后,升级操作即完成。因为img文件较大,升级时间较长,请耐心等候。
(5)升级结束后,EC900会把升级中的关键信息写入ec900_img目录下的日志文件。请查看相关文件。

7 编程指南

EC900提供了一个JSON格式的设备信息描述文件,需要操作IO,LED,串口等外设的客户,可以通过查询设备描述信息文件获取这些外设的设备节点信息。

设备描述信息文件路径:/tmp/ieos/etc/system_info.json, 内容如下:

{
   "device_info":{
       "model_info":{
           "model":"EC954",
           "pn":"IO-FQ58",
           "sn":"EC9540000011111",
           "oem":"inhand",
           "features":";io;cell-FQ58;wlan;ble;gps;"
       },
       "software_info":{
           "boot_loader":"1.0.2",
           "kernel":"5.10.160-00001-g406d1811beab-dirty",
           "version":"V2.0.0-beta.1",
           "OS":"Debian GNU/Linux 11 (bullseye)"
       },
       "hardware_info":{
           "arch":"arm64",
           "soc":"rk3568",
           "interface":{
               "eth":[
                   {
                       "iface_name":"eth1",
                       "iface_mac":"00:33:44:11:00:01"
                   },
                   {
                       "iface_name":"eth2",
                       "iface_mac":"00:33:44:11:00:02"
                   },
                   {
                       "iface_name":"eth3",
                       "iface_mac":"00:33:44:11:00:03"
                   },
                   {
                       "iface_name":"eth4",
                       "iface_mac":"00:33:44:11:00:04"
                   }
               ],
               "wlan":[
                   {
                       "iface_name":"wlan0",
                       "iface_mac":"94:A4:08:8A:30:CD"
                   },
                   {
                       "iface_name":"wlan1",
                       "iface_mac":"96:A4:08:8A:30:CD"
                   }
               ],
               "ble":[
               ]
           },
           "gpio":[
               {
                   "gpio_name":"cellular_power",
                   "dev_node":"/sys/class/gpio/gpio0"
               },
               {
                   "gpio_name":"sim_switch",
                   "dev_node":"/sys/class/gpio/gpio19"
               },
               {
                   "gpio_name":"msata_power",
                   "dev_node":"/sys/class/gpio/gpio20"
               },
               {
                   "gpio_name":"gnss_power",
                   "dev_node":"/sys/class/gpio/gpio110"
               },
               {
                   "gpio_name":"ble_power",
                   "dev_node":"/sys/class/gpio/gpio220"
               }
           ],
           "user_key":[
               {
                   "user_key_name":"USER",
                   "dev_node":"/sys/class/gpio/gpio95"
               }
           ],
           "uart":[
               {
                   "uart_name":"P1",
                   "dev_node":"/dev/ttyO1"
               },
               {
                   "uart_name":"P2",
                   "dev_node":"/dev/ttyO2"
               },
               {
                   "uart_name":"P3",
                   "dev_node":"/dev/ttyO3"
               },
               {
                   "uart_name":"P4",
                   "dev_node":"/dev/ttyO4"
               },
               {
                   "uart_name":"P5",
                   "dev_node":"/dev/ttyO5"
               },
               {
                   "uart_name":"P6",
                   "dev_node":"/dev/ttyO6"
               },
               {
                   "uart_name":"P7",
                   "dev_node":"/dev/ttyO7"
               },
               {
                   "uart_name":"P7",
                   "dev_node":"/dev/ttyO8"
               }
           ],
           "io":{
               "di":[
                   {
                       "di_name":"DI1",
                       "dev_node":"/sys/class/gpio/gpio487"
                   },
                   {
                       "di_name":"DI2",
                       "dev_node":"/sys/class/gpio/gpio488"
                   },
                   {
                       "di_name":"DI3",
                       "dev_node":"/sys/class/gpio/gpio489"
                   },
                   {
                       "di_name":"DI4",
                       "dev_node":"/sys/class/gpio/gpio490"
                   }
               ],
               "do":[
                   {
                       "di_name":"DO1",
                       "dev_node":"/sys/class/gpio/gpio491"
                   },
                   {
                       "di_name":"DO2",
                       "dev_node":"/sys/class/gpio/gpio492"
                   },
                   {
                       "di_name":"DO3",
                       "dev_node":"/sys/class/gpio/gpio493"
                   },
                   {
                       "di_name":"DO4",
                       "dev_node":"/sys/class/gpio/gpio494"
                   }
               ]
           },
           "led":[
               {
                   "led_name":"USER1",
                   "dev_node":"/sys/class/leds/user1"
               },
               {
                   "led_name":"USER2",
                   "dev_node":"/sys/class/leds/user2"
               },
               {
                   "led_name":"4G/5G",
                   "dev_node":"/sys/class/leds/cell"
               },
               {
                   "led_name":"SIM1",
                   "dev_node":"/sys/class/leds/sim1"
               },
               {
                   "led_name":"SIM2",
                   "dev_node":"/sys/class/leds/sim2"
               },
               {
                   "led_name":"WARN",
                   "dev_node":"/sys/class/leds/warn"
               },
               {
                   "led_name":"ERROR",
                   "dev_node":"/sys/class/leds/error"
               },
               {
                   "led_name":"STATUS",
                   "dev_node":"/sys/class/leds/status"
               },
               {
                   "led_name":"L1",
                   "dev_node":"/sys/class/leds/level1"
               },
               {
                   "led_name":"L2",
                   "dev_node":"/sys/class/leds/level2"
               },
               {
                   "led_name":"L3",
                   "dev_node":"/sys/class/leds/level3"
               }
           ]
       }
   }
}

7.1 IO编程指南

目前设备上一共8个IO接口:如设备面板上DI0~DI3为4个输入管脚;DO0~DO3为4个输出管脚。

根据设备描述信息文件/tmp/ieos/etc/system_info.json可以获取到IO设备节点为:

DI0~DI3-----sys/class/gpio/gpio487~sys/class/gpio/gpio490

DO0~DO3------sys/class/gpio/gpio491~sys/class/gpio/gpio494

当您需要对IO接口进行编程时,直接操作后台设备节点下面的value值即可(sys/class/gpio/gpioxxx/value

案例:

当DO0需要输出高电平时,可以直接向sys/class/gpio/gpio491/value写入1 
echo 1 > /sys/class/gpio/gpio491/value

当需要查看DI0的电平是,同样可以直接查看sys/class/gpio/gpio487/value的值

cat /sys/class/gpio/gpio487/value

完整shell脚本:

#!/bin/bash

gpio491="/sys/class/gpio/gpio491/value"
gpio492="/sys/class/gpio/gpio492/value"
gpio493="/sys/class/gpio/gpio493/value"
gpio492="/sys/class/gpio/gpio494/value"
# 当DO0需要输出高电平时,可以直接向sys/class/gpio/gpio491/value写入1
if [ -f "$gpio491" ]; then
   echo 1 > /sys/class/gpio/gpio491/value
else
   echo "no file exit "$gpio491
fi

# 当DO1需要输出低电平时,可以直接向sys/class/gpio/gpio491/value写入1
if [ -f "$gpio492" ]; then
   echo 0 > $gpio492
else
   echo "no file exit "$gpio492
fi

gpio487="/sys/class/gpio/gpio487/value"
gpio488="/sys/class/gpio/gpio488/value"
gpio489="/sys/class/gpio/gpio489/value"
gpio490="/sys/class/gpio/gpio490/value"
# 当需要查看DI0的电平是,同样可以直接查看sys/class/gpio/gpio487/value的值
if [ -f "$gpio487" ]; then
   cat $gpio487
else
   echo "no file exit "$gpio487
fi


7.2 Led编程指南

设备上用户可以使用USER1和USER2两个灯进行状态提示,请查看灯签确认USER1和USER2两个灯的位置。

根据设备描述信息文件/tmp/ieos/etc/system_info.json可以获取到USER1和USER2设备节点为:

user1:/sys/class/leds/user1

user2:/sys/class/leds/user2

/sys/class/leds/user1目录下有一些控制文件用于控制LED的属性和状态:

/sys/class/leds/user1/brightness:该文件用于控制USER1灯的亮或者灭。写入1即是常亮,写入0即是常灭。

/sys/class/leds/user1/trigger:LED灯的触发器,可写入timer表示定时器触发,写入none表示取消触发器。

/sys/class/leds/user1/delay_on:该文件表示led灯亮的时间,以ms为单位。

/sys/class/leds/user1/delay_off:该文件表示led灯灭的时间,以ms为单位。

若配置了trigger为定时触发,则brightness中的值将不再生效,会自动变为0。

将文件路径中user1替换为user2即为控制USER2灯的操作。

案例:

当需要USER1灯常亮时,将1写入brightness文件

echo 1 > /sys/class/leds/user1/brightness

当需要USER1灯闪烁时,将timer写入trigger文件,通过delay_on和delay_off控制亮和灭的时间

# 开始定时器
echo timer > /sys/class/leds/user1/trigger

# 亮1秒钟
echo 1000 > /sys/class/leds/user1/delay_on

# 灭1秒钟
echo 1000 > /sys/class/leds/user1/delay_off

完整shell脚本:

#!/bin/bash

USER1_BRIGTHNESS="/sys/class/leds/user1/brightness"
USER1_TRIGGER="/sys/class/leds/user1/trigger"
USER1_DELAY_ON="/sys/class/leds/user1/delay_on"
USER1_DELAY_OFF="/sys/class/leds/user1/delay_off"

USER2_BRIGTHNESS="/sys/class/leds/user2/brightness"
USER2_TRIGGER="/sys/class/leds/user2/trigger"
USER2_DELAY_ON="/sys/class/leds/user2/delay_on"
USER2_DELAY_OFF="/sys/class/leds/user2/delay_off"


# 点亮USER1灯
if [ -f "$USER1_BRIGTHNESS" ]; then
   echo 1 > $USER1_BRIGTHNESS
else
   echo "no file exit "$USER1_BRIGTHNESS
fi

# 点亮USER2灯
if [ -f "$USER2_BRIGTHNESS" ]; then
   echo 1 > $USER2_BRIGTHNESS
else
   echo "no file exit "$USER2_BRIGTHNESS
fi

# 设置USER1灯闪烁
if [ -f "$USER1_TRIGGER" ]; then
   echo timer > $USER1_TRIGGER
else
   echo "no file exit "$USER1_TRIGGER
fi

# 设置USER2灯闪烁
if [ -f "$USER2_TRIGGER" ]; then
   echo timer > $USER2_TRIGGER
else
   echo "no file exit "$USER2_TRIGGER
fi

# 设置USER1灯亮1000ms
if [ -f "$USER1_DELAY_ON" ]; then
   echo 1000 > $USER1_DELAY_ON
else
   echo "no file exit "$USER1_DELAY_ON
fi

# 设置USER1灯灭1000ms
if [ -f "$USER1_DELAY_OFF" ]; then
   echo 1000 > $USER1_DELAY_OFF
else
   echo "no file exit "$USER1_DELAY_OFF
fi

# 设置USER2灯亮1000ms
if [ -f "$USER2_DELAY_ON" ]; then
   echo 1000 > $USER2_DELAY_ON
else
   echo "no file exit "$USER2_DELAY_ON
fi

# 设置USER2灯灭1000ms
if [ -f "$USER2_DELAY_OFF" ]; then
   echo 1000 > $USER2_DELAY_OFF
else
   echo "no file exit "$USER2_DELAY_OFF
fi

# 关闭USER1闪烁
if [ -f "$USER1_TRIGGER" ]; then
   echo none > $USER1_TRIGGER
else
   echo "no file exit "$USER1_TRIGGER
fi

# 关闭USER2闪烁
if [ -f "$USER2_TRIGGER" ]; then
   echo none > $USER2_TRIGGER
else
   echo "no file exit "$USER2_TRIGGER
fi

7.3 交叉编译

用户自己的c/c++程序可以通过在开发机器上使用交叉编译工具链进行交叉编译,然后将目标文件上传到EC954设备上执行。

交叉编译工具压缩包:gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz

为交叉编译工具链配置环境变量的方法:

1、在开发机上将gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz解压到/opt路径下(也可以解压到其他路径,步骤2中设置PATH环境变量的时候做相应的调整)
2、编辑~/.bashrc文件,在文件最后添加一行PATH=$PATH:/opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin
3、执行source ~/.bashrc使环境变量在当前终端生效;新打开的终端会自动生效。

以经典的hello world程序为示例进行说明,创建如下目录和文件

mkdir ~/example
touch ~/example/hello.c
touch ~/example/Makefile

~/example/hello.c文件的内容如下:

#include <stdio.h>

int main(void) 
{
       printf("hello, world!\n");
       return 0;
}

~/example/Makefile文件的内容如下:

# 定义目标文件名和源文件名
TARGET  := hellworld
DIRS    := $(shell find . -maxdepth 3 -type d) 
SRCS    := $(foreach dir,$(DIRS),$(wildcard $(dir)/*.c))
OBJS    := $(SRCS:.c=.o)


CC=aarch64-linux-gnu-gcc

# 定义编译器和编译选项
CFLAGS  := -Wall -Wextra -g -Wno-unused-parameter

# 定义默认目标
all: $(TARGET)

# 定义目标文件的依赖关系和编译命令
$(TARGET): $(OBJS)
       $(CC) $(CFLAGS) $(LIBS) $^ -o $@ 

# 定义将源文件编译成目标文件的命令
%.o: %.c
       $(CC) $(CFLAGS) $(LIBS) -c $< -o $@

# 定义清除临时文件的命令
clean:
       rm -f $(TARGET) $(OBJS)

# 声明伪目标 ".PHONY"
.PHONY: all clean

在~/example目录下执行make,生成目标文件helloworld


    • Related Articles

    • DeviceSupervisor Agent 用户手册

      DeviceSupervisor Agent 用户手册 (适用于EC & IG) Version4.0,2024年6月 www.inhand.com.cn 本手册中描述的软件是根据许可协议提供的,只能按照该协议的条款使用。 版权声明 © 2024 映翰通网络 保留所有权利。 商标 InHand标志是映翰通网络的注册商标。 本手册中的所有其他商标或注册商标属于其各自的制造商。 免责声明 ...
    • EC942用户手册_V2.0

      边缘计算机EC900系列 用户手册 (适用于Debian10,IEOS V2.0.0及以上版本) Version2.0,2023年10月 www.inhand.com.cn 本手册中描述的软件是根据许可协议提供的,只能按照该协议的条款使用。 版权声明 © 2023 映翰通网络 保留所有权利。 商标 InHand标志是映翰通网络的注册商标。 本手册中的所有其他商标或注册商标属于其各自的制造商。 免责声明 ...
    • EC300用户手册_V1.2

      边缘计算机EC300系列 用户手册 (适用于IEOS V2.0.0及以上版本) Version 1.2,2024年4月 www.inhand.com.cn 本手册中描述的软件是根据许可协议提供的,只能按照该协议的条款使用。 版权声明 © 2023 映翰通网络 保留所有权利。 商标 InHand标志是映翰通网络的注册商标。 本手册中的所有其他商标或注册商标属于其各自的制造商。 免责声明 ...
    • EC312快速安装手册_V1.0

      边缘计算机EC300系列 快速安装手册 Version1.0,2024年5月 www.inhand.com.cn 本手册中描述的软件是根据许可协议提供的,只能按照该协议的条款使用。 版权声明 © 2024 映翰通网络 保留所有权利。 商标 InHand标志是映翰通网络的注册商标。 本手册中的所有其他商标或注册商标属于其各自的制造商。 免责声明 本公司保留对此手册更改的权利,产品后续相关变更时,恕不另行通知。对于任何因安装、使用不当而导致的直接、间接、有意或无意的损坏及隐患概不负责。 1 产品介绍 ...
    • InGateway902用户手册

      1. 设备简介 1.1 概述 InGateway902(以下简称IG902)系列边缘计算网关是映翰通公司面向工业物联网领域推出的新一代 4G 边缘计算网关。该产品凭借全球部署的 3G/4G 无线网络和多种宽带服务,提供随处可得的不间断的互联网接入。以其强大的边缘计算能力、全面的安全性和无线服务等特性,实现多达万级的设备联网,为真正意义上的设备信息化提供数据的高速通路。IG902 ...