CN113468081B - 基于ebi总线的串口转udp的装置及方法 - Google Patents
基于ebi总线的串口转udp的装置及方法 Download PDFInfo
- Publication number
- CN113468081B CN113468081B CN202110745933.3A CN202110745933A CN113468081B CN 113468081 B CN113468081 B CN 113468081B CN 202110745933 A CN202110745933 A CN 202110745933A CN 113468081 B CN113468081 B CN 113468081B
- Authority
- CN
- China
- Prior art keywords
- serial port
- data
- ebi
- serial
- bus
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000013507 mapping Methods 0.000 claims abstract description 22
- 230000005540 biological transmission Effects 0.000 claims abstract description 9
- 238000004891 communication Methods 0.000 claims abstract description 6
- 238000012544 monitoring process Methods 0.000 claims description 13
- 230000003993 interaction Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus 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的装置及方法。
背景技术
现有技术中的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的发送缓冲区为空,则继续发送数据,一直循环以上过程,直到数据发送完毕。
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 CN113468081A (zh) | 2021-10-01 |
CN113468081B true 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 (9)
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 |
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 | 山东浪潮云信息技术有限公司 | 高并发的数据传送方法及用于交换机的数据传送方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103312625B (zh) * | 2012-03-09 | 2016-02-03 | 深圳市腾讯计算机系统有限公司 | 一种网络通信的方法和系统 |
-
2021
- 2021-07-01 CN CN202110745933.3A patent/CN113468081B/zh active Active
Patent Citations (9)
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 |
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 |
---|---|
CN113468081A (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107992436B (zh) | 一种NVMe数据读写方法及NVMe设备 | |
US6073205A (en) | System and method of write posting in a universal serial bus system | |
US10860511B1 (en) | Integrated network-attachable controller that interconnects a solid-state drive with a remote server computer | |
US6131131A (en) | Computer system including an enhanced communication interface for an ACPI-compliant controller | |
EP1896965B1 (en) | Dma descriptor queue read and cache write pointer arrangement | |
CN111656336B (zh) | 一种pcie发送、接收方法及装置、设备和系统 | |
US5878248A (en) | Device access controller for virtual video/keyboard/mouse input/output for remote system management and maintenance | |
CN101937406B (zh) | 一种VxWorks操作系统中实现驱动1394设备的方法和系统 | |
CN106257434B (zh) | 一种基于增强型外设互连协议总线的数据传输方法及装置 | |
CN116069711B (zh) | 直接内存访问控制器、异构设备、内存访问方法及介质 | |
CN115396527B (zh) | 一种基于fpga的pcie和srio协议转换系统及方法 | |
US7191262B2 (en) | High-throughput UART interfaces | |
CN112395230A (zh) | 一种基于可编程逻辑器件的uart接口扩展电路 | |
CN113852656A (zh) | 一种数据传输方法、处理器系统及内存访问系统 | |
WO2024113704A1 (zh) | 一种pcie数据传输方法及相关装置 | |
WO2001067713A1 (en) | A packet format independent computer network controller | |
CN1976310B (zh) | 在网络中通过总线接口进行通信的方法 | |
GB2423165A (en) | Host controller interface for packet-based timeshared bus | |
CN116431558B (zh) | 一种基于axi协议的请求响应方法、装置、系统及介质 | |
CN113468081B (zh) | 基于ebi总线的串口转udp的装置及方法 | |
CN114185830A (zh) | 基于mailbox的多处理器通信方法、设备、系统和存储介质 | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 | |
WO2022141250A1 (zh) | 数据传输方法和相关装置 | |
CN114281499A (zh) | 一种总线互连时的中断传递处理方法及系统 | |
CN116136790A (zh) | 任务处理方法和装置 |
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 | ||
GR01 | Patent grant |