-
系统硬件结构
1、系统以ip和以太网交换为核心,构建设备内各模块间的基础交换网络,设备之间通过接口板卡接入交换网,该架构将接口类别划分为ip类(含以太网)和非ip类(以串口为主),其它接口则为本地CPU总线接入单元,或接入路由交换主板,或接入扩展单元主板。
2、路由交换单元提供以太网交换功能、ip交换功能、防火墙功能、无线接入认证功能等。
3、核心路由交换单元的协议栈主要包括以太网协议、IPv4和ipv6协议。不同的传输介质和接入方式下,接口协议栈是不同的,由接口板完成接口协议的转换,实现网关的全ip化交换与处理。
4、核心交换单元需要支持独立组网使用也可以支持基于边缘云的架构使用。
5、核心交换网络支持TSN机制,以满足工业控制和时延敏感场景的需要。
-
系统软件分层架构
(1)基础硬件:基础硬件提供系统基础运行运行环境、设备接入接口、内部各功能模块之间的基本交换网络等功能,它分为核心模块、功能扩展模块、电源模块、通信接入模块及传感接入模块,通信接入模块及传感接入模块可根据需要选择安装,原则上系统模块可以在时延许可范围内进行无限扩展与堆叠;
(2)驱动软件(HAL层):驱动软件及HAL与操作系统、核心CPU相关,提供与操作系统和CPU有关的接口驱动软件,但与应用无关的设备物理访问接口,基本访问模型为/dev/设备类型+设备逻辑编号;主要是标准接口驱动:
*UART驱动 /RS485驱动
*SPI驱动
*I2C驱动
*GPIO驱动
*AIO驱动* 接口直接访问:由HAL对硬件寄存器接口的直接访问服务,以保证实时操作的需要。
(3)操作系统:基于linux的嵌入式实时操作系统,提供基本内核及系统基本平台功能;(4)系统支撑软件:图 中黄色部分内容,这部分的软件包是系统运行的基本支撑软件包,一般需要根据系统的硬件资源及应用需要进行定制,并集成到系统软件中,作为系统的基本软件,本系统的支撑软件包有:
*数据库管理系统:在边缘端使用的数据库管理系统主要有mysql、H2DB等,本框架使用H2DB,但在设计时,保持数据访问接口的独立可更换;
*WWW服务器系统,提供本地的UI管理服务功能,系统集成使用uhhtpd服务器;*虚拟化管理系统(容器):本框架集成docker;
*Java 虚拟机,提供java运行环境,本架构使用open JDK 1.8版本;
*消息总线/MQTT系统:Eclipse Mosquitto™是一个开源(EPL/EDL协议)的MQTT 3.1和3.11消息代理服务器。MQTT是一个基于发布/订阅模式的轻量级消息引擎。它非常适用于物联网场景,比如那些低功耗传感器、移动设备例如手机、嵌入式电脑和类似Arduino这样的微处理器等。
(5)边缘系统基础服务:边缘系统基础服务是本框架的核心,是在基础操作系统上,分析物联网边缘计算及边缘设备的开发需求后,提供的基础服务软件,它能有效提高边缘设备的稳定性,加快设备的开发周期,降低设备的软件开发难度。它随系统软件发布,可以独立管理与升级,通过统一的消息服务总线接口给应用APP提供服务,主要有如下几类:
*基础通信传输服务:主要提供标准接口和标准协议服务,如:串口通信服务,RS485协议通信服务、GPIO访问服务、SPI接口访问服务,WebSocket\HTTP\MQTT连接服务等等;
*位置与时钟服务:提供位置信息与对时服务;
*看门狗服务:给应用APP提供软件看门狗服务;
*应用统一配置服务:一般情况下,应用是需要一些基本的配置,如何在系统中提供统一的配置界面,简化系统的使用,系统基于UCI系统,提供统一的配置服务,以服务接口或文件形式提供给应用使用;
*远程管理服务:设备根据要求一般需要有远程管理要求,如物联网管理平台会需要设备提供远程管理功能,包括设备信息查询、设备基础软件升级、应用加载、应用升级等;
*数据服务:提供基于时序和设备模型的基础数据存贮服务,包括数据的增加、删除、查找、修改,并根据应用的访问权限控制数据的访问;
*网络控制与路由管理服务,包括网络路由配置、流量控制、负荷管理、子网划分、网络拓扑管理及网络的防火墙等;
*设备模型管理服务:基于设备模型定义,自动构建设备数据库表和设备访问表,建立,包括设备模型版本升级等;
*网关业务服务(基于设备模型):提供基于设备模型的设备数据访问的和设备控制服务;
*系统管理软件:提供设备的本地管理与维护功能,主要包括:容器管理、网络管理、日志管理、应用管理、配置管理、系统软件管理、用户管理、安全管理、UI界面等;
(6)系统应用开发环境,它不是设备的一部分,但是支持APP开发的基本要求,提供开发库、集成开发环境或模拟调试环境。 -
系统包组成
1、基础软件包
基础系统软件包包括基础操作系统,基础驱动,软件基础运行环境及、应用运行支撑库及基础管理软件等,主要功能包如下:
(1)基础C/C++库
(2)基于事件的应用库
(3)Fastjson应用库
(4)标准GPIO驱动
(5)标准SPI驱动
(6)标准USB驱动
(7)标准串口驱动
(8)标准I2C驱动
(9)基础管理软件包
2、系统支撑软件包系统支撑软件是系统运行的基础,一般需要根据系统的硬件资源及应用需要进行定制,并集成到系统软件中,作为系统的基本软件,本系统的支撑软件包有:
(1)数据库管理系统:H2DB;
(2)WWW服务器系统,提供本地的UI管理服务功能;
(3)虚拟化管理系统(容器):虚拟化系统(容器)有多种实现,使用docker;
(4)Java 虚拟机,提供java运行环境,使用open JDK 1.8版本;
(5)消息总线/MQTT系统:Eclipse Mosqutto.
3、边缘服务软件包(1)基础通信传输服务:主要提供标准接口和标准协议服务,如:串口通信服务,RS485协议通信服务、GPIO访问服务、SPI接口访问服务,WebSocket\HTTP\MQTT连接服务等等;
(2)位置与时钟服务:提供位置信息与对时服务;
(3)看门狗服务:给应用APP提供软件看门狗服务;
(4)应用统一配置服务:一般情况下,应用是需要一些基本的配置,如何在系统中提供统一的配置界面,简化系统的使用,系统基于UCI系统,提供统一的配置服务,以服务接口或文件形式提供给应用使用;
(5)远程管理服务:设备根据要求一般需要有远程管理要求,如物联网管理平台会需要设备提供远程管理功能,包括设备信息查询、设备基础软件升级、应用加载、应用升级等;
(6)数据服务:提供基于时序和设备模型的基础数据存贮服务,包括数据的增加、删除、查找、修改,并根据应用的访问权限控制数据的访问;
(7)网络控制与路由管理服务,包括网络路由配置、流量控制、负荷管理、子网划分、网络拓扑管理及网络的防火墙等;
(8)设备模型管理服务:基于设备模型定义,自动构建设备数据库表和设备访问表,建立,包括设备模型版本升级等;
(9)网关业务服务(基于设备模型):提供基于设备模型的设备数据访问的和设备控制服务;
4、应用软件包与设备应用关联折软件,一般由设备出厂 时定制安装。
5、应用开发工具及支撑包(1)支持C/C++开发SDK库
(2)支持JAVA开发包
(3)支持事件调度及应用开发架构
(4)提供基于Eclipse的Java和C/C++集成交叉开发环境
(5)提供基于MQTT及CoAP消息机制的标准接口访问库
(6)提供LED控制库
(7)支持标准接口的访问开发
(8)支持基于设备模型的应用SDK
(9)支持统一配置接口 -
系统基础软件包功能说明
1、基础软件管理功能
基础系统软件支持:
1)查询设备软件版本、硬件版本信息、设备运行日志;
2)基础软件应支持设置/查询本地时间和时区;
3)基础软件应支持业务数据流和管理数据流分离,通过管理数据流升级设备软件、容器、应用软件,升级支持断点续传;
4)基础软件应支持终端网络配置的修改和查询;
5)基础软件应支持监测通信网络状态,状态异常时主动尝试恢复;
6)基础软件应支持设置和查询包括但不限于CPU占用率、内存占用率、内部存储占用率等告警门限;
7)基础软件应支持系统异常信息上报,异常信息包括但不限于终端CPU占用率越限、内存占用率越限、内部存储空间不足、系统复位等;
8)基础软件应支持系统复位时主动上报告警,并记录复位原因,复位原因包括但不限于软件看门狗复位、硬件看门狗复位、掉电复位等;
9)支持本地数据库服务。
2、容器功能
1)基础软件应支持6个及以上容器数量,单个容器应支持部署多个应用软件;
2)基础软件应支持配置和修改容器资源,包括CPU核数量、内存、存储资源、接口资源;
3)基础软件应支持查询容器信息,包括容器列表,容器版本信息、容器运行状态;
4)基础软件应支持容器的启动、停止、安装、卸载;
5)基础软件应支持容器监控功能,包括容器重启、存储资源越限、CPU占用率、内存占用率等情况。容器重启、存储资源越限应上报告警,CPU占用率、内存占用率越限应上报告警并重启容器;
6)基础软件应支持容器补丁升级,升级过程中自动停止容器中应用软件的运行,容器升级完成后应用软件自动恢复正常运行;
3、支持基于Java的应用运行
4、应用软件管理
1)应用软件/服务的注册、注销及基本服务与接口(主题)的发布与管理;
2)基础软件应支持应用软件的启动、停止、安装、卸载等功能;
3)基础软件应支持配置应用软件的内存及CPU占用情况;
4)基础软件应支持查询应用软件信息,包括应用软件列表,应用软件版本信息、应用软件运行状态、CPU占用率、内存占用情况;
5)基础软件应支持监测应用软件异常的功能,包括应用软件重启、CPU占用率超限、内存占用率超限。CPU占用率和内存占用率超限时,应上报告警并重启应用软件。
5、系统运维功能
1)支持支持远程查看系统信息:
(1)设备类型
(2)设备名称
(3)电子标签
(4)厂商信息
(5)设备状态
(6)设备MAC地址
(7)设备当前时间
(8)设备启动时间
(9)设备运行时长
(10)设备内存
(11)设备内部存储
(12)平台软件及其补丁版本信息
(13)容器及其补丁版本信息
(14)APP版本信息
(15)硬件版本信息
(16)通信接口信息包含以太接口和3G/4G接口
2)支持远程配置
。设备名称
。设备当前时间
。系统启动与升级
。设备温度阈值
3)支持检测的系统故障
(1)RTC故障检测:RTC芯片读取失败
(2)温感故障检测:温度超出设定阈值或者芯片温度读取失败,温感故障检测败
4)支持的软件运维机制
(1)软件看门狗机制:监控系统软件进程,系统软件进程异常时触发软件进程复位:如该软件进程反复重启失败,则重启整个系统软件。
(2)硬件看门狗机制,在硬件设定时间内,看门狗未收到相应处理信号,即重启终端硬件。
(3)应用软件状态监控:监控应用软件的CPU使用率、内存使用率,如超过用户设置的门限,则上报告警;应用软件进程异常退出时,系统守护进程可以重新启动该进程,同时上报告警。
(4)容器状态监控:当容器的CPU使用率、内存使用率连续2分钟超过90%,终端会上送告警,并且重启容器,重启超过3次则上报故障。当容器的Flash使用率连续2分钟超过80%会上送告警,但不会重启容器。
5)系统日志
(1)日志查询
(2)日志过滤搜索
(3)日志压缩功能,同时日志缓存到内存中,内存中的日志定时保存到存储介质,以提高存储介质的寿命。
(4)应用软件日志记录接口:平台软件为应用软件提供日志记录功能接口,提供日志基本功能;
(5)异常复位日志记录:平台软件支持异常复位日志记录功能、记录内容包括复位类型,复位时间等内容;
(6)软件平台支持内核黑匣子日志,记录内核崩溃时的错误信息。
(7)用户操作日志记录:平台软件应记录重要操作、将日期时间修改,用户/组修改,配置系统网络环境,用户登入和登出,未经授权访问文件,删除文件等重要操作都应自动记录存储到日志中。
(8)日志远程上载:日志可通过主站远程召测。
6、网络路由功能
1)支持通过以太网接口接入WAN通信模块;
2)支持通过以太网接口接入云端;
3)支持内部模块单元之间的以太网数据和ip交换交换;
4)支持WIFI的接入;
5)支持 NAT功能
6)支持内部地址自动分配
7)支持内部路由自动配置
8)支持内部网络拓扑生成
9)网络层协议要求
10)终端以太网中的网络层IP协议应同时支持IPv4和IPv6相关要求;
11)终端远程通信应使用一个无线通信通道,业务和管理数据流使用不同端口号。管理数据流可通过NETCONF RPC协议,传输设备管理、容器管理和应用软件管理等管理相关数据。
7、系统安全功能
1)支持防火墙功能,包括基于规则的地址、接口、传输端口过滤功能;
2)支持设备的接入认证功能
3)支持通过无线接入设备的数据传输加密(AES128/256)功能
4)支持网间隔离功能
5)支持设备的黑白名单功能
6)支持管理数据流程与业务数据流的分离
8、本地Web人机界面功能
支持本地UI维护功能,包括设备状态、服务状态、应用配置、网络配置等。 -
系统总线结构
系统采用双总线架构设计,MQTT消息服务总线主要用于非紧耦合应用之间的信息交互,微服务总线主要用于JAVA应用或Python应用之间的微服务集成,系统效率较高。
系统内部的统一服务接口(D)包含基于MQTT的消息通信服务接口(Dm)和基于微服务架构的服务接口(Ds),两种接口在功能上等价,在性能上和使用难度上有差异性。
系统内部接口Dm采用标准的TCP/MQTT交互协议,支持MQTT3.1版本及5.0版本。在信息交互过程中,MQTT协议将参与方划分为三种身份,分别是:发布者、代理和订阅者。其中,消息的发布者和订阅者都是客户端,消息的代理是服务器端。系统的消息发布者与订阅者之间以主题进行通信,消息统一为json格式,所有主题全系统有效,任何应用APP及服务均可以根据需要进行访问。
系统内部接口Ds以分布式的消息总线为基础,构建微服务总线,接口内容以服务提供者为基础,服务的访问权限由服务提供者控制。接口形式为/服务名/方法名/方法参数及服务结果。所有服务方法参数及服务结果有三种形式:json格式、JAVA实体对象及C结构形式,建议C/C++应用与java应用之间统一为json格式。C/C++应用之间采用C结构,JAVA应用之间采用JAVA实体对象,它们分别由不同的SDK封装。
-
一、开发支持库
系统的应用开发支撑功能主要为网关应用的开发提供支撑,系统提供java SDK、Python及C/C++的SDK及系统服务形式提供应用开发支撑。基础功能如下:
- 支持C/C++开发SDK库
- 支持JAVA开发包
- Python开发支持库
- 支持事件调度及应用开发架构
- 提供基于Eclipse的Java、C/C++、Python及Web UI的开发定制集成交叉开发环境
- 提供基于MQTT及CoAP消息机制的标准接口访问库
- 提供LED控制库
- 支持标准接口的访问开发
- 支持基于设备模型的应用SDK
- 支持统一配置接口等
二、开发技术支持
应用开发与支持网站为:深至信技术支持服务网站(www.szxinfo.net)。
技术服务途径有:
(1)WIKI知识库,提供与边缘路由、边缘计算及边缘网关相关的技术、知识及开发文档;
(2)GIT代码,相关开源代码库
(3)Docker镜像库
(4)技术聊天室