多通信接口接入互联网的嵌入式网关设计(二)

​Webserver 嵌入式网关搭建(采用 uhttpd、sqlite)——基于 rt-smart 微内核操作系统 Webserver 嵌入式网关,并作为 ART-Pi Smart 的出厂 Demo。移植 GNU 软件代码(uhttpd、sqlite)交叉编译成目标系统平台可以运行的库或二进制文件,作为 rt-smart 的一个用户 APP,并在 ART-Pi Smart 开发板上运行。 阅读详情

Internet客户端可用“GET”或“POST”方式提交数据到WEB服务器上,WEB服务器会将本次所用的提交方式保存到环境变量REQUEST_METHOD中。如果是“GET”方式,则服务器将有效数据保存到环境变量QUERY_STRING中,Internet模块可直接读取这一环境变量来获得有效数据;如果是“POST”方式,则服务器将有效数据的长度保存到环境变量CONTENT_LENGTH中,则Internet模块就可在这一数据长度的控制下从标准输入读入有效数据。在获得了有效数据之后,Internet模块解析它们,生成转发数据包,发往转发模块。到此数据接收完毕,进程挂起自身,等待信号量InternetRec有效。当InternetRec有效时,说明有来自内网的反馈数据包到来,则进程被唤醒,接收反馈数据包,在判断目的地址无误后,根据数据包数据生成动态网页,交予WEB服务器发送到客户端。

3.4 转发数据包的设计

转发模块完成网关内部的数据包转发功能,它维护了一个基于优先级的数据队列(见图2),该队列属于临界资源,由接收子模块和发送子模块互斥使用。转发数据包的结构应有一定的通用性,具有兼容各种通信子网或Internet数据的能力,可用下面的数据结构来定义:struct DataProtocol{
int CommType;
struct Addr_t DstAddr;
struct Addr_t SrcAddr;
int Prio;
struct DataStruct *DataHead;
int DataLengh;
struct DataProtocol *pDProtc; };

(1)int CommType; 定义通信的类型。用来指明当前所传送的数据包的类型,即DATATYPE(有效数据包)和ERRORTYPE(错误信息包)。DATATYPE是指本数据包的数据域中的是有效的数据;而ERRORTYPE是指数据域中携带的是出错信息。网关在处理数据包的时候,就可以先判断数据包的类型,再采用相应的处理流程,这样便提高了处理的效率。

(2)struct Addr_t DstAddr; 通信的目的地址。用以指明数据发往的目的地址,其数据类型定义如下:struct Addr_t{
unsigned char SubNet;  //指明是何种网络(本地子网或Internet)
unsigned char DevAddr; }; //指明子网内的终端设备地址

说明:由于网关所使用的Boa WEB服务器是单任务的,一次仅处理一个Internet连接,故当SubNet为Internet时,DevAddr应为零。

(3)struct Addr_t SrcAddr; 通信的源地址,用以指明数据的源地址。

(4)int Prio; 数据包优先级。对来自不同通信子网以及不同设备的数据包,根据通信的实时性要求不同,定义不同的数据包优先级。在转发模块中,优先级高的数据包被插入到队列的头部,优先被转发到目的网络。在指定具体的数据包优先级时,采用Prio数值越小优先级越高的方式,且规定与Internet相关的数据包较内网间传递的数据包有更高的优先级。
(5)struct DataStruct *DataHead; 存储有效数据的链表队列的头指针。该链表就是数据包的数据域部分,其数据类型定义如下:
struct DataStruct{
char *Name;
char *Value;
struct DataStruct *pDStruct;  };
*Name保存数据或操作的类型,可为 “INFO”(说明信息)、“READ”(读数据)、“WRITE”(写数据)、“CONTROL”(发送控制指令);
*Value的格式为:操作名称或对象 [参数1] [参数2] …… [参数n]
其中,操作名称或对象和参数内都不能有空格,参数之间用空格分开,参数数量可为零。

比如要启动某个设备,只需传送如下数据:Name->CONTROL,Value->START;要读取设备温度值,只需传送:Name->READ,Value->TEMPERATURE。数据包仅是保存了有效数据的ASCII码,嵌入式网关只完成将这些ASCII码从发送端传送到接收端,实现路由功能和中间协议转换功能,这些ASCII码所表示的具体含义由发送端和接收端的应用层来规定,这样便实现了一种与具体数据意义无关的通用数据传送通道。

(6)int DataLengh; 指明有效数据中,“Name”、“Value”对的数目。

(7)struct DataProtocol *pDProtc; 指向下一个数据包的指针。在基于优先级的数据队列中,各数据包利用该指针,采用链表的形式加以组织,这样有利于数据的插入和删除。

3.5 内网通信模块及设备通信模块的设计

内网通信模块由调度子模块和若干子网接口子模块组成,其中前者较为简单,主要是完成转发模块和各子网接口子模块之间的数据包分发及收集功能;而后者就较为复杂了,涉及到各种网络的通信协议和数据格式,它与终端设备的通信模块形成一个基于该子网通信协议的通信系统,限于篇幅,本文不可能尽述,仅以RS232为例作一个简单介绍。

RS232标准仅定义了ISO/OSI基本参考模型中物理层规格和链路层硬件接口规格,要实现集散式的RS232子网的通信,需要一个网络层来进行终端设备的地址路由。此外,还要在链路层的软件层面上,设计一个数据帧格式,用于封装所传输的数据。在具体的实现上,就体现在转发数据包和RS232数据帧格式间的解析和转换封
装上。

终端设备要接入嵌入式网关,在硬件上必须提供一个通信接口,如RS232接口、RS485接口或CAN接口等。在软件上则必须有一个通信模块,主要完成:从网关接收数据,经解析后提交给上层应用程序;从上层应用接收需发送的数据,对其封装,再发送到网关。应用程序按照应用层的协议规则分析接收到的有效数据,做出相应的操作或响应。

4. 结束语

本文在分析典型的嵌入式网关设计方案的基础上,提出了一种具有多通信接口的整合内、外网通信的嵌入式网关,适用于将8/16位嵌入式设备接入互联网的应用场合,该方案可以根据应用需求对各接口应用模块进行扩展和裁剪。在具体应用中,还需要增强和改进网关的安全性,进一步研究将更多的本地通信子网加入到网关中,从而增强网关的适用性。

本文作者创新点:设计了一个整合内外网通信、能为8/16位MCU系统接入互联网提供多个通信接口的嵌入式网关,详细讨论了网关软件模块的实现和转发数据包的格式。

参考文献:
[1] 孟军英,刘教民,王震洲. 基于ARM微处理器的CAN/以太网嵌入式网关[J]. 河北工业大学学报. 2005年8月. 第34卷增刊. 115-117.
[2] 赵国安,高航,张有成. 由W3100A构成嵌入式网关的家庭智能系统[J]. 单片机与嵌入式系统应用. 2003年第4期:51-53.
[3] 王羲,任琦梅.基于44B0平台的uC-Linux Web服务器实现方法研究[J].微计算机信息, 2005, 3-1:76-77
 

MCU通信接口选型与实战:从UART到CAN FD的嵌入式系统设计指南 在嵌入式系统开发中,MCU的通信接口选型直接决定了产品的功能边界与工程复杂度。从基础的UART、SPI、I2C,到面向工业控制的CAN/CAN FD,再到高速USB和以太网,每种接口都有其独特的原理与适用场景。理解这些接口的物理特性、时序要求和协议栈开销,是工程师进行系统设计的前提。例如,SPI适合高速板载外设通信,CAN FD则以可变速率和长数据帧支撑复杂车载与工业网络。同时,接口数量、DMA通道、中断优先级等资源规划,也深刻影响着系统的实时性与稳定性。本文结合一款主流MCU的多通信协议方案,系统拆解了各 阅读详情

相关推荐

嵌入式网络开发实战:Microchip TCP/IP协议栈架构、配置与应用详解

TCP/IP协议栈是实现嵌入式设备联网的核心技术,它定义了数据如何在网络中封装、寻址、传输和路由。其工作原理基于分层模型,从底层的网络接口到顶层的应用协议,逐层处理数据包,确保可靠通信。对于资源受限的嵌入式系统而言,一个经过深度优化和裁剪的协议栈具有极高的技术价值,它能以最小的内存和处理器开销,为单片机赋予HTTP服务器、远程配置、数据上传等关键网络能力。这种能力是智能家居网关、工业数据采集器、联网医疗设备等物联网(IoT)应用场景的基石。Microchip TCP/IP协议栈正是这样一个为PIC、dsPI

weixin_29540599的博客 269

自建API网关-架构设计篇

阅读对象传统企业正在做微服务架构转型的开发人员或者架构师,希望本文对您能起到一定的引导作用。API网关介绍网关一词较早出现在网络设备里面,比如两个相互独立的局域网段之间通过路由器或者桥接设备进行通信,这中间的路由或者桥接设备我们称之为网关。相应的API网关将各系统对外暴露的服务聚合起来,所有要调用这些服务的系统都需要通过API网关进行访问,基于这种方式网关可以对API进行统一管控,例如:认证、鉴权...

wayne_sulong的专栏 9359

STM32无线传输毕设实战:从NRF24L01+驱动到环境监测系统设计

无线通信技术是物联网和嵌入式系统的核心基础,它通过电磁波实现设备间的数据交换,其原理涉及调制解调、信道编码和协议栈等多个层面。这项技术的价值在于打破物理连接限制,实现灵活、可扩展的分布式感知与控制,广泛应用于智能家居、工业自动化和环境监测等领域。在工程实践中,基于STM32微控制器搭配NRF24L01+模块的方案,因其成本低廉、驱动成熟,成为学习无线通信原理和嵌入式开发的经典组合。通过SPI接口驱动NRF24L01+,开发者可以深入理解数据包结构、校验机制和抗干扰处理等底层细节,而合理的电源设计(如AMS1

weixin_28727975的博客 283

数据库SQLite之嵌入式Linux实际网关项目使用初步

1、源码下载:https://sqlite.org/download.html sudo find / -name config.guess sudo find / -name config.sub 2、移植 /usr/share/libtool/build-aux/config.guess /usr/share/libtool/build-aux/config.sub ./configure --host=arm-linux(这里根据需要可以改为gcc,即省去该配置参数(删除--host..

IoT清道夫-No Game No Life 386

LWIP实战指南:高效实现UDP广播与组播通信

本文是一份针对嵌入式开发的LWIP实战指南,详细讲解了如何高效实现UDP广播与组播通信。文章从基础概念入手,通过清晰的代码示例,逐步指导开发者完成LWIP协议栈的关键配置、广播与组播的Socket编程,并利用Wireshark进行抓包分析,帮助读者掌握在物联网设备中实现精准、高效的一对多数据传输的核心技能与避坑要点。

cream的博客 885

3、嵌入式系统接口、通信与开发工作流解析

本文深入解析了嵌入式系统的接口与通信协议,包括SPI、I2C和USB等常见协议的特性与应用场景,并探讨了物联网环境下的TCP/IP通信挑战及分布式系统的开发难点。同时,文章分析了嵌入式开发中的隔离机制、参考平台选择及优化的工作流策略,涵盖了ARM Cortex-M系列微处理器的核心特性与开发支持,旨在帮助开发者提升嵌入式项目的开发效率与质量。

5b6n7m8的博客 79

嵌入式Linux应用项目----智能网关

Linux网关的作用在于,通过蓝牙、LoRa、串口、CAN等接口,与哪些无法连接网络的设备建立联系,将它们的数据转发至服务器。这过程中,网关充当了数据的桥梁,将下级设备所产生的数据发送至服务器。网关跟我们的路由器区别是不一样的,路由器是给我们的设备提供网络服务器的,需要设备自身有网络能力,然后通过路由器WiFi 或者有线连接,路由器帮我们把报文转发到互联网。

buhuidage的博客 1188

3、嵌入式系统接口、协议与开发工作流解析

本文深入解析了嵌入式系统中常用的接口与通信协议,包括SPI、I2C和USB的特点与应用场景,并探讨了物联网环境下的网络通信与分布式系统挑战。文章详细介绍了ARM Cortex-M系列微控制器的架构特性及其在嵌入式开发中的优势,系统阐述了基于GCC工具链的开发工作流,涵盖编译、链接、调试与代码验证等关键环节。同时,对比了文本编辑器与集成开发环境的适用场景,提出了自动化构建、持续集成和代码审查等优化策略,旨在帮助开发者全面提升嵌入式系统的开发效率与软件质量。

grass的博客 56

多通信接口接入互联网的嵌入式网关设计(一)

嵌入式Internet技术的出现,使得嵌入式系统与Internet之间可以实现资源共享、信息通信和状态测控等功能。目前,该技术的主要问题之一就是Internet上面的各种通信协议对于计算机存储器、运算速度等的要求比较高,而测控领域中大量存在的8位和16位MCU系统是无法处理这些的。要解决这个问题,一个可行的方法就是利用在嵌入式领域比较常用的总线,如RS485、RS232、CAN总线等,将这些处理能

宁静致远 1581

3、嵌入式系统通信协议、平台及开发工作流解析

本文深入解析了嵌入式系统中常见的通信协议(如SPI、I2C、USB)、物联网网络通信技术及TCP/IP的应用,探讨了分布式系统的挑战与隔离机制。文章详细介绍了以ARM Cortex-M为代表的RISC架构微处理器特性,包括内存映射、中断机制和特权模式,并系统梳理了嵌入式开发的工作流程,涵盖从C编译器、GCC工具链到集成开发环境的选择。同时,提出了与目标设备交互的调试策略,强调了单元测试、集成测试和系统测试在嵌入式软件验证中的重要性,最后总结了优化开发工作流的关键方法,助力开发者提升效率与软件质量。

zz67890的博客 60

3、嵌入式系统通信协议、架构与开发工作流解析

本文详细解析了嵌入式系统中的通信协议、系统架构、开发工作流以及相关优化策略。从SPI、I2C到USB等常用通信协议的特性与适用场景,到物联网中TCP/IP协议的应用与挑战,同时探讨了ARM Cortex-M微处理器的架构优势及其在嵌入式开发中的重要地位。文章还介绍了嵌入式开发工具链、工作环境选择及优化的开发流程,帮助开发者提高效率并适应不断变化的技术需求。

tree的博客 61

多通道多协议数据网关的设计

记录表和相关方法,实现多通道多协议数据网关的设计,实现多通道多协议数据网关的设计

蓝牙工业网关的特点,为什么选择蓝牙工业网关?

蓝牙工业网关可以对连接的设备进行数据聚合和处理,将来自不同设备的数据汇总,进行数据解析、过滤和转换,生成可用于上层应用程序的数据,方便进行后续的数据分析和决策。在工厂仓库环境中,蓝牙工业网关可连接到各种传感器设备,对资产进行追踪和管理。蓝牙工业网关可以应用于工业生产自动化领域,实现设备的远程监控和控制,避免了人工巡查的繁琐过程,实现生产过程的自动化控制,提高了生产效率。网关可以连接工业设备和传感器,实时监测设备运行状态,通过从终端设备收集数据并分析,从而实现设备的远程监控和分析,及时发现并解决。

hzdusun_com的博客 936

基于嵌入式的无线网关解决方案

基于arm的无线网关,将无线连入的RS232转化称TCP/IP协议

ISP电信、移动、联通的IP地址段

最新的ISP包括电信联通移动的IP地址段整理收集大全。

基于双线路接入的网关冗余和负载均衡设计与实现

双线路接入的网关冗余和负载均衡设计与实现,具体的配置和实现

多ISP出口及以太网网接入技术解决方案

多ISP出口及以太网网接入技术解决方案

从深算一号到三号:海光DCU的技术演进与国产超算突围之路

本文梳理了海光DCU从深算一号到三号的技术演进历程,展现了国产高性能计算芯片从填补空白到追赶并行的突围之路。文章重点分析了深算系列在性能提升、软件生态(DTK)建设及超算平台构建方面的关键进展,并探讨了其在AI大模型训练、科学计算等领域的应用实践与未来挑战。

ipfs8storage的博客 1059
上一篇: 多通信接口接入互联网的嵌入式网关设计(一)
下一篇: 金融风暴不会影响嵌入式设计
Linux先生
博客等级 码龄20年 97粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值