CN113468081A - 基于ebi总线的串口转udp的装置及方法 - Google Patents

基于ebi总线的串口转udp的装置及方法 Download PDF

Info

Publication number
CN113468081A
CN113468081A CN202110745933.3A CN202110745933A CN113468081A CN 113468081 A CN113468081 A CN 113468081A CN 202110745933 A CN202110745933 A CN 202110745933A CN 113468081 A CN113468081 A CN 113468081A
Authority
CN
China
Prior art keywords
serial port
data
ebi
bus
chip
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110745933.3A
Other languages
English (en)
Other versions
CN113468081B (zh
Inventor
郑俊强
胡锦丽
王伟生
陈懋
周素青
王洪
张晓敏
陈岩峰
黄政钦
陈友武
李自强
翁晰
汤捷
郭建
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Polytechnic of Information Technology
Original Assignee
Fujian Polytechnic of Information Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujian Polytechnic of Information Technology filed Critical Fujian Polytechnic of Information Technology
Priority to CN202110745933.3A priority Critical patent/CN113468081B/zh
Publication of CN113468081A publication Critical patent/CN113468081A/zh
Application granted granted Critical
Publication of CN113468081B publication Critical patent/CN113468081B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Abstract

本发明提出一种基于ebi总线的串口转udp的装置及方法,其采用epoll模型,监听所有文件描述符以及socket描述符。Epoll是基于事件驱动的模型,因此在进程中,不需要阻塞进程来接受和发送数据,因此可以同时监听多个udp端口。采用基于ebi的总线来驱动串口数据,从而不需要模拟出ttyUSB端口,当需要对具体的串口进行数据收发时,只需配置寄存器,即可对应适配到具体的串口。采用Ebi总线驱动和串口之间的通信,不使用read和write操作,使用内存映射,当需要发送数据的对应的串口的时,只需通过对映射之后的内存进行赋值即可,当需要从串口读取数据时,也只需要读取映射之后的内存。避免频繁的read/write操作,导致系统性能急剧下降,导致数据丢包。

Description

基于ebi总线的串口转udp的装置及方法
技术领域
本发明涉及数据传输和数据转换技术领域,尤其涉及一种基于ebi总线的串口转udp的装置及方法。
背景技术
现有技术中的USB转串口方案的硬件设计如说明书附图1所示,其硬件串口使用USB转串口芯片,软件设计如说明书附图2所示,并具有以下特点:
1.每个串口和udp的数据转发需要一个进程;
2.每个串口在设备文件上对应 一个 ttyUSB;
3.每次数据交互需要一次read和write操作。
以上现有技术的缺点包括:
1.每个串口和udp的数据转发需要一个进程:
a.扩展性能不足,当需要20个以上的串口时,系统需要20以上的进程,会使得系统资源紧张
b.每个进程都会使用系统的一系列资源,因此,这种方式极大浪费系统资源
2.每个串口在设备文件上对应 一个 ttyUSB:
ttyUSB口和串口的对应关系无法确定下来,当系统存在多个串口的情况下,ttyUSB会有混乱的情况,因为系统在枚举ttyUSB设备的时候,不能保证按照一定的顺序枚举到ttyUSB设备,因此会导致ttyUSB和串口无法一一对应,数据转发混乱。
3.每次数据交互需要一次read和write操作:
当系统需要读取串口数据时,会进行一次read操作,read操作本身会嵌入到系统内核执行,当系统嵌入到内核执行的时候,会保存堆栈信息,导致时间浪费,性能下降。
发明内容
为了解决现有技术存在的缺陷和不足的问题,本发明提出一种基于ebi总线的串口转udp的装置及方法。针对上述现有技术存在的每个主要问题,本发明分别采用如下的解决方案:
1.每个串口和udp的数据转发需要一个进程:
采用epoll模型,监听所有文件描述符以及socket描述符。Epoll是基于事件驱动的模型,因此在进程中,不需要阻塞进程来接受和发送数据,因此可以同时监听多个udp端口。
2.每个串口在设备文件上对应 一个 ttyUSB:
采用基于ebi的总线来驱动串口数据,从而不需要模拟出ttyUSB端口,当需要对具体的串口进行数据收发时,只需配置寄存器,即可对应适配到具体的串口。
3.每次数据交互需要一次read和write操作:
Ebi总线驱动和串口之间的通信,不使用read和write操作,使用内存映射,当需要发送数据的对应的串口的时,只需通过对映射之后的内存进行赋值即可,当需要从串口读取数据时,也只需要读取映射之后的内存。内存映射技术解决了linux应用层和驱动层数据交互的性能问题,避免频繁的read/write操作,导致系统性能急剧下降,导致数据丢包。
本发明具体包括以下内容:
一种基于ebi总线的串口转udp的装置,其特征在于:采用epoll模型,监听所有文件描述符以及socket描述符;采用基于ebi的总线驱动串口数据;Ebi总线驱动和串口之间的通信使用内存映射。
进一步地,使用3片EBI转RS232,通过芯片的片选信号,选择使用哪个芯片;每个EBI转RS232芯片支持8个通道的串口,数据发送和接收通过寄存器设置和查询。
进一步地,当串口有数据要发送到CPU时,产生一个GPIO中断,CPU接收到中断之后,通过查询寄存器,得知是哪个串口的数据,然后通过内存映射读取数据;每个EBI转串口芯片都会发出所述GPIO中断信息。
以及基于ebi总线的串口转udp的装置的工作方法,其特征在于,其初始化过程包括以下步骤:
步骤S1:创建24个udp服务端socket,使用epoll监听客户端连接信息,当接收到连接请求信息之后,创建第二点的socket;第一点的socket用于监听连接信息,不接受数据;第二点的socket为专门用于接收数据的socket,并且使用epoll模型;
步骤S2:客户端连接成功之后,再次创建一个socket,该socket用于监听数据流;
步骤S3:初始化ebi的驱动,创建ebi内存映射空间;并初始化ebi转RS232芯片,配置串口属性信息,并配置该芯片的fifo,当fifo超过某个字节数的时候,触发GPIO中断,通知cpu取串口的数据。
进一步地,在步骤S2中,可以创建多个这种socket,并且能实现单线程、单进程创建多个socket。
进一步地,在步骤S3中,所述串口属性信息包括:串口的波特率。
进一步地,其接收串口数据的过程为:当fifo满足条件,触发中断之后,cpu通过内存映射控制直接读取某个内存区域的值,直到数据为空;并在接收串口事件时,产生中断通告;
进一步地,其发送数据到串口的过程为:当有数据需要发送到串口时,一次最多发送128个字节,然后等待芯片转发到对应的串口,之后通过中断告知CPU,当ebi转RS232的发送缓冲区为空,则可以继续发送数据,一直循环以上过程,直到数据发送完毕。
相比于现有技术,本发明及其优选方案通过内存映射实现数据的高速转发,提高了系统性能、降低了硬件成本;通过epoll通信,实现单进程、单线程监听所有数据转发端口,实现单进程、单线程监听所有端口,提高了系统的扩展性。
附图说明
下面结合附图和具体实施方式对本发明进一步详细的说明:
图1为现有技术中的USB转串口方案的硬件设计示意图;
图2为现有技术中的USB转串口方案的软件设计示例图;
图3为本发明实施例基于ebi总线的串口转udp的装置硬件结构示意图;
图4为本发明实施例基于ebi总线的串口转udp的装置软件流程示例图。
具体实施方式
为让本专利的特征和优点能更明显易懂,下文特举实施例,并配合附图,作详细说明如下:
现有技术中的USB转串口方案的硬件设计如图1所示,其硬件串口使用USB转串口芯片,软件设计如图2所示,并具有以下特点:
1.每个串口和udp的数据转发需要一个进程;
2.每个串口在设备文件上对应 一个 ttyUSB;
3.每次数据交互需要一次read和write操作。
以上现有技术的缺点包括:
1、每个串口和udp的数据转发需要一个进程:
a、扩展性能不足,当需要20个以上的串口时,系统需要20以上的进程,会使得系统资源紧张
b、每个进程都会使用系统的一系列资源,因此,这种方式极大浪费系统资源
2、每个串口在设备文件上对应 一个 ttyUSB:
ttyUSB口和串口的对应关系无法确定下来,当系统存在多个串口的情况下,ttyUSB会有混乱的情况,因为系统在枚举ttyUSB设备的时候,不能保证按照一定的顺序枚举到ttyUSB设备,因此会导致ttyUSB和串口无法一一对应,数据转发混乱。
3、每次数据交互需要一次read和write操作:
当系统需要读取串口数据时,会进行一次read操作,read操作本身会嵌入到系统内核执行,当系统嵌入到内核执行的时候,会保存堆栈信息,导致时间浪费,性能下降。
为了解决以上缺陷和不足的问题,本实施例提出一种基于ebi总线的串口转udp的装置及方法。针对上述现有技术存在的每个主要问题,本实施例分别采用如下的解决方案:
1、每个串口和udp的数据转发需要一个进程:
采用epoll模型,监听所有文件描述符以及socket描述符。Epoll是基于事件驱动的模型,因此在进程中,不需要阻塞进程来接受和发送数据,因此可以同时监听多个udp端口。
2、每个串口在设备文件上对应 一个 ttyUSB:
采用基于ebi的总线来驱动串口数据,从而不需要模拟出ttyUSB端口,当需要对具体的串口进行数据收发时,只需配置寄存器,即可对应适配到具体的串口。
3、每次数据交互需要一次read和write操作:
Ebi总线驱动和串口之间的通信,不使用read和write操作,使用内存映射,当需要发送数据的对应的串口的时,只需通过对映射之后的内存进行赋值即可,当需要从串口读取数据时,也只需要读取映射之后的内存。内存映射技术解决了linux应用层和驱动层数据交互的性能问题,避免频繁的read/write操作,导致系统性能急剧下降,导致数据丢包。
具体地,如图3所示,本实施例硬件设计如下:
1、总共使用3片EBI转RS232,通过芯片的片选信号,选择使用哪个芯片
2、每个EBI转RS232芯片支持8个通道的串口,数据发送和接收通过寄存器设置和查询
3、当串口有数据要发送到CPU时,会有一个GPIO中断,CPU接收到中断之后,通过查询寄存器,得知是哪个串口的数据,然后通过内存映射去读取数据。每个EBI转串口芯片都会发出一个GPIO中断通告。
其软件设计方案为如图4所示的流程框架:
1.创建24个udp服务端socket,使用epoll监听客户端连接信息,当接收到连接请求信息之后,创建第二点的socket。
2.客户端连接成功之后,再次创建一个socket,该socket用来监听数据流,第一点的socket只是用来监听连接信息,并不会接受数据,第二点的socket是专门用来接收数据的socket,并且使用epoll模型,不会导致进程阻塞。可以创建多个这种socket,并且能实现单线程、单进程创建多个socket。
3.初始化ebi的驱动,创建ebi内存映射空间。并初始化ebi转RS232芯片,配置串口的波特率等等串口属性信息,并配置该芯片的fifo,当fifo超过某个字节数的时候,触发GPIO中断,通知cpu去取串口的数据。
4.接收串口数据:当fifo满足条件,触发中断之后,cpu通过内存映射控制直接读取某个内存区域的值,直到数据为空。接收串口为异步事件,因此需要一个中断通告。
5.发送数据到串口:当有数据需要发送到串口时,考虑到ebi总线的速率远远超过串口的波特率,因此一次最多只能发送128个字节,然后等待芯片转发到对应的串口,之后通过中断告知CPU,ebi转RS232的发送缓冲区为空,可以继续发送数据,一直循环这个过程,直到数据发送完毕。
本专利不局限于上述最佳实施方式,任何人在本专利的启示下都可以得出其它各种形式的基于ebi总线的串口转udp的装置及方法,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本专利的涵盖范围。

Claims (8)

1.一种基于ebi总线的串口转udp的装置,其特征在于:采用epoll模型,监听所有文件描述符以及socket描述符;采用基于ebi的总线驱动串口数据;Ebi总线驱动和串口之间的通信使用内存映射。
2.根据权利要求1所述基于ebi总线的串口转udp的装置,其特征在于:使用3片EBI转RS232,通过芯片的片选信号,选择使用哪个芯片;每个EBI转RS232芯片支持8个通道的串口,数据发送和接收通过寄存器设置和查询。
3.根据权利要求2所述基于ebi总线的串口转udp的装置,其特征在于:当串口有数据要发送到CPU时,产生一个GPIO中断,CPU接收到中断之后,通过查询寄存器,得知是哪个串口的数据,然后通过内存映射读取数据;每个EBI转串口芯片都会发出所述GPIO中断信息。
4.根据权利要求3所述基于ebi总线的串口转udp的装置的工作方法,其特征在于,其初始化过程包括以下步骤:
步骤S1:创建24个udp服务端socket,使用epoll监听客户端连接信息,当接收到连接请求信息之后,创建第二点的socket;第一点的socket用于监听连接信息,不接受数据;第二点的socket为专门用于接收数据的socket,并且使用epoll模型;
步骤S2:客户端连接成功之后,再次创建一个socket,该socket用于监听数据流;
步骤S3:初始化ebi的驱动,创建ebi内存映射空间;并初始化ebi转RS232芯片,配置串口属性信息,并配置该芯片的fifo,当fifo超过某个字节数的时候,触发GPIO中断,通知cpu取串口的数据。
5.根据权利要求4所述基于ebi总线的串口转udp的装置的工作方法,其特征在于:在步骤S2中,可以创建多个这种socket,并且能实现单线程、单进程创建多个socket。
6.根据权利要求4所述基于ebi总线的串口转udp的装置的工作方法,其特征在于:在步骤S3中,所述串口属性信息包括:串口的波特率。
7.根据权利要求4所述基于ebi总线的串口转udp的装置的工作方法,其特征在于:其接收串口数据的过程为:当fifo满足条件,触发中断之后,cpu通过内存映射控制直接读取某个内存区域的值,直到数据为空;并在接收串口事件时,产生中断通告。
8.根据权利要求4所述基于ebi总线的串口转udp的装置的工作方法,其特征在于:其发送数据到串口的过程为:当有数据需要发送到串口时,一次最多发送128个字节,然后等待芯片转发到对应的串口,之后通过中断告知CPU,当ebi转RS232的发送缓冲区为空,则可以继续发送数据,一直循环以上过程,直到数据发送完毕。
CN202110745933.3A 2021-07-01 2021-07-01 基于ebi总线的串口转udp的装置及方法 Active CN113468081B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110745933.3A CN113468081B (zh) 2021-07-01 2021-07-01 基于ebi总线的串口转udp的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110745933.3A CN113468081B (zh) 2021-07-01 2021-07-01 基于ebi总线的串口转udp的装置及方法

Publications (2)

Publication Number Publication Date
CN113468081A true CN113468081A (zh) 2021-10-01
CN113468081B CN113468081B (zh) 2024-05-28

Family

ID=77877440

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110745933.3A Active CN113468081B (zh) 2021-07-01 2021-07-01 基于ebi总线的串口转udp的装置及方法

Country Status (1)

Country Link
CN (1) CN113468081B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1139238A (zh) * 1994-08-31 1997-01-01 摩托罗拉公司 可编程存储器存取接口类型的集成电路微处理器及方法
WO2012051115A1 (en) * 2010-10-10 2012-04-19 Cotendo, Inc. Proxy server configured for hierarchical caching and dynamic site acceleration and custom object and associated method
US20140351431A1 (en) * 2012-03-09 2014-11-27 Tencent Technology (Shenzhen) Company Limited Network communication method and system
CN104243481A (zh) * 2014-09-24 2014-12-24 国家电网公司 一种用电信息采集前置数据处理的方法及系统
CN106126467A (zh) * 2016-07-12 2016-11-16 湖南翰博薇微电子科技有限公司 基于Local Bus总线的多路RS422串口通信方法
CN106302554A (zh) * 2016-11-08 2017-01-04 郑州云海信息技术有限公司 一种socket通信方法、装置和存储设备
CN108470008A (zh) * 2018-01-23 2018-08-31 广州市中海达测绘仪器有限公司 串口数据读写方法、装置、计算机设备和存储介质
CN109298943A (zh) * 2018-10-11 2019-02-01 四川长虹电器股份有限公司 用于udp服务器的并发处理方法
WO2019062479A1 (zh) * 2017-09-29 2019-04-04 中兴通讯股份有限公司 报文处理方法、装置、存储介质及终端
CN109947581A (zh) * 2019-03-29 2019-06-28 山东浪潮云信息技术有限公司 高并发的数据传送方法及用于交换机的数据传送方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1139238A (zh) * 1994-08-31 1997-01-01 摩托罗拉公司 可编程存储器存取接口类型的集成电路微处理器及方法
WO2012051115A1 (en) * 2010-10-10 2012-04-19 Cotendo, Inc. Proxy server configured for hierarchical caching and dynamic site acceleration and custom object and associated method
US20140351431A1 (en) * 2012-03-09 2014-11-27 Tencent Technology (Shenzhen) Company Limited Network communication method and system
CN104243481A (zh) * 2014-09-24 2014-12-24 国家电网公司 一种用电信息采集前置数据处理的方法及系统
CN106126467A (zh) * 2016-07-12 2016-11-16 湖南翰博薇微电子科技有限公司 基于Local Bus总线的多路RS422串口通信方法
CN106302554A (zh) * 2016-11-08 2017-01-04 郑州云海信息技术有限公司 一种socket通信方法、装置和存储设备
WO2019062479A1 (zh) * 2017-09-29 2019-04-04 中兴通讯股份有限公司 报文处理方法、装置、存储介质及终端
CN108470008A (zh) * 2018-01-23 2018-08-31 广州市中海达测绘仪器有限公司 串口数据读写方法、装置、计算机设备和存储介质
CN109298943A (zh) * 2018-10-11 2019-02-01 四川长虹电器股份有限公司 用于udp服务器的并发处理方法
CN109947581A (zh) * 2019-03-29 2019-06-28 山东浪潮云信息技术有限公司 高并发的数据传送方法及用于交换机的数据传送方法

Also Published As

Publication number Publication date
CN113468081B (zh) 2024-05-28

Similar Documents

Publication Publication Date Title
AU2007278728B2 (en) Method and apparatus for distributing usb hub functions across a network
CN102866971B (zh) 传输数据的装置、系统及方法
CN101957808B (zh) 多cpu间的通信方法、系统及cpu
CN108345555B (zh) 基于高速串行通信的接口桥接电路及其方法
CN106155960A (zh) 基于gpio握手和edma的uart串口通信方法
CN112395230A (zh) 一种基于可编程逻辑器件的uart接口扩展电路
CN110688333A (zh) 一种基于pcie的dma数据传输系统及方法
CN115396527B (zh) 一种基于fpga的pcie和srio协议转换系统及方法
CN109062834B (zh) 基于dma的spi通讯方法、电子设备、存储介质、装置
US6856619B1 (en) Computer network controller
US20070293984A1 (en) Method for command transmission between systems
CN101937413A (zh) 一种i2c总线的通信方法
CN1976310B (zh) 在网络中通过总线接口进行通信的方法
US20060184708A1 (en) Host controller device and method
US5761422A (en) Transferring address of data in buffer memory between processors using read-only register with respect to second processor
CN115543877B (zh) 一种pcie数据传输方法及相关装置
CN113468081A (zh) 基于ebi总线的串口转udp的装置及方法
JP2008502977A (ja) バス・コントローラのための割り込み方式
CN113794713B (zh) Fc-ae-1553协议桥接mil-std-1553和uart的通讯处理方法
CN116136790A (zh) 任务处理方法和装置
KR20040043198A (ko) 버스 시스템 및 버스 인터페이스
CN111858459A (zh) 处理器及计算机
CN111427823A (zh) 支持pc与fpga通过pcie通信的驱动设计方法
CN110765044A (zh) 数据包传输装置及系统
JPH1196106A (ja) デバイスドライバ装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant