具有主动和被动传输模式的硬件TCP/IP协议栈装置的制作方法

文档序号:18752446发布日期:2019-09-24 21:20阅读:295来源:国知局
具有主动和被动传输模式的硬件TCP/IP协议栈装置的制作方法

本发明涉及专用集成电路设计和高速网络传输技术领域,具体而言,本发明设计了一种具有主动和被动传输模式的硬件TCP/IP协议栈装置,该协议栈同时具有高速主动传输模式和灵活的被动传输模式,非常适用于嵌入式传感设备。



背景技术:

随着网络技术的普及和信息技术的发展,越来越多的嵌入式传感设备需要将采集的温度、振动、压力等传感数据通过网络接口传输给服务器等后台设备。当数据采集节点增多,采集频率变高,传感设备将需要很高的网络传输速率。例如每个节点的传感信息用2Byte数据表示,布置1000个节点,采集频率为50KHz,则其需要的网络传输速率至少为800Mbps。

目前,绝大部分网络传输功能都是基于软件TCP/IP协议栈,其网络传输速率主要受软件执行速率限制。在嵌入式系统中,由于受到内存大小、CPU处理能力等硬件限制,大部分设备只能运行轻量级TCP/IP协议栈,如LwIP和uIP协议栈,其网络传输速率进一步受到限制。而且,基于软件的网络协议栈存在一个严重的问题,就是当处理器需要同时处理其它任务时,例如采集和标定传感信号,其网络传输速率将显著降低。因此,这些系统都很难实现稳定的高速TCP传输。

近年来,出现了一些采用硬件协议栈的设计方案。中国专利:基于FPGA的UDP/IPv6硬件协议栈及实现方法,申请号:CN201310137881设计了基于FPGA的UDP/IPv6硬件协议栈,可实现百兆传输速率;中国专利:一种UDP高速数据收发系统及方法,申请号:CN201510796364,在FPGA内设计了一种硬件UDP高速数据收发系统,可实现千兆传输速率;《An analysis of FPGA-based UDP/IP stack parallelism for embedded Ethernet connectivity》[C].IEEE 23rd Norchip Conference,2005和《Reduced TCP/IP Protocol Implement in VHDL[C].International Workshop on Intelligent Systems and Applications》ISA,2009,在上述两篇文献中,作者设计了UDP硬件协议栈;在《A Versatile UDP/IP based PC-FPGA Communication Platform》[C].IEEE Reconfigurable Computing and FPGAs(ReConFig),2012International Conference on中,作者提出了一种UDP硬件协议栈的数据收发器结构。但是上述现有技术中均存在UDP协议不面向连接,因此没有数据流量控制和丢包处理功能的问题。

同时,也有研究者提出了全硬件TCP/IP协议栈设计。在《An Embedded TCP/IP Hard Core for Smart Grid Information and Communication Networks》[C].44th IEEE Southeastern Symposium on System Theory,2012中,一种硬件TCP协议栈被用来提高智能传感器的网络传输速率;《Hardware-Based TCP Processor for Gigabit Ethernet》[C].IEEE TRANSACTIONS ON NUCLEAR SCIENCE,VOL.55,NO.3,JUNE 2008中,作者设计了一种硬件TCP/IP协议栈叫做SiTCP;中国专利:一种全硬件TCP协议栈实现方法,申请号:CN201410067748中提出了一种全硬件TCP协议栈。但是,这些设计存在一些不足和缺陷,无法满足嵌入式传感设备的应用需求。首先,以上硬件协议栈只提供了唯一的数据传输接口,如一种全硬件TCP协议栈实现方法中仅设计了主机接口控制模块。然而实际应用中,嵌入式传感设备不仅需要高速传输传感值,也需要传输一些低速的具有自定义帧格式的交互信息,如设备和控制台之间的命令、状态交互,这些通信内容灵活多变,适合用软件而非逻辑硬件来实现。当传感数据流通过主机接口模块高速不间断传输时,该设计就很难进行交互信息的收发。其次,上述现有文件中的网络管理功能设计存在不足,没有给出不同协议应答的优先级设计。



技术实现要素:

本发明的目的是针对上述技术问题,提供一种具有主动和被动传输模式的硬件TCP/IP协议栈装置,使得协议栈既可以通过硬件数据通道以主动模式高速传输传感数据,也可以通过软件数据通道与软件系统对接,在被动模式下灵活的传输交互信息。

为实现上述目的,本发明所设计的具有主动和被动传输模式的硬件TCP/IP协议栈装置,其特殊之处在于,所述硬件TCP/IP协议栈装置包括:

TCP/IP协议栈核心模块:包括帧解析单元、网络管理单元、帧封装单元、高速硬件数据通道和软件数据通道,所述帧解析单元用于接收网络帧数据,对ARP、ICMP、UDP和TCP协议帧数据解析,解析出的网络参数和应用数据,同时分析客户机数据类型产生连接请求;所述网络管理单元用于进行TCP连接状态分析,并将连接请求进行优先级仲裁,发送优先级使能信号,然后对发送数据的TCP帧头进行相应赋值;所述帧封装单元模块根据优先级使能信号,分别进行ARP、ICMP、UDP和TCP帧数据封装;所述高速硬件数据通道用于从基于FPGA的硬件逻辑读取数据存储并自动产生硬件发送请求;所述软件数据通道用于从基于软核的软件系统读取数据并存入缓存,然后直接由基于软核的软件系统产生发送请求;

MAC模块:用于TCP/IP协议栈核心模块与PHY芯片对接;

PHY芯片:用于与客户机对接。

进一步地,所述帧解析单元包括接收帧缓存模块:用于存储来自MAC模块的网络帧数据;

解析帧数据模块:用于将网络帧数据按照帧协议逐层解析,并提取应用层数据发送至应用数据缓存模块、提取网络参数发送至网络参数模块;

分析客户机模块:用于分析客户机的操作类型,并发送TCP帧通知和连接请求,所述TCP帧通知包括TCP应答、TCP重传和定时器触发,所述连接请求包括ARP请求和PING请求;

应用数据缓存模块:用于缓存应用层数据;

网络参数模块:用于缓存网络参数。

更进一步地,所述网络管理单元包括

TCP连接状态分析模块:用于根据TCP帧通知对TCP连接状态进行分析并生成响应信号;

优先级仲裁器模块:用于根据响应信号、连接请求和硬件发送请求进行优先级仲裁并产生优先级使能信号;

TCP发送管理模块:用于对发送数据的TCP帧头进行相应赋值。

更进一步地,所述帧封装单元包括ARP封装模块、ICMP封装模块、UDP封装模块和TCP封装模块,分别用于根据优先级使能信号读取高速硬件数据通道和软件数据通道的数据并分别进行ARP、ICMP、UDP和TCP帧数据封装,所述帧封装单元还包括用于缓存封装后的数据的发送帧缓存模块。

更进一步地,所述高速硬件数据通道包括FIFO模块:用于缓存通过硬件数据接口从基于FPGA的硬件逻辑接收的数据。

更进一步地,所述软件数据通道包括软件数据缓存模块:用于缓存通过软件数据接口从基于软核的软件系统接收的数据和软件发送请求。

更进一步地,所述硬件数据通道还包括存储容量自动检测模块:用于检测所述FIFO模块的存储容量,当接收缓存存储满一半,立即向优先级仲裁器发送硬件发送请求。

更进一步地,所述MAC模块包括

PHY参数配置单元:用于通过MDIO接口对PHY芯片进行参数配置;

MAC接收缓存单元:用于缓存接收数据;

MAC接收单元:用于通过RGMII接口从PHY芯片接收数据;

CRC检查单元用于对接收数据进行CRC值校验;

生成CRC单元:用于产生发送数据的CRC值;

MAC发送单元:用于通过RGMII接口向PHY芯片发送数据;

MAC发送缓存单元:用于缓存待发送数据。

更进一步地,所述MAC模块还包括忙检测单元,所述忙检测单元连接MAC发送缓存单元和TCP/IP协议栈核心模块,用于检测MAC模块是否正在发送数据。忙检测用于检测MAC的工作状态,若MAC模块没有发送数据而处于空闲状态,则允许TCP/IP协议栈模块向发送缓存写入新数据。

更进一步地,所述优先级仲裁器模块进行优先级仲裁的顺序为:TCP应答、TCP重传、定时器触发、ARP请求、PING请求、硬件发送请求。

相对于已有设计,本发明的突出性特点在于:

(1)本发明同时具有硬件传输通道和软件传输通道两种接口,为应用层功能实现提供了极大的便利。其中硬件传输通道是主动传输模式,应用层只需将大容量数据不间断写入接口缓存即可,该通道内部会自动生成发送请求,从而可以实现高速网路传输;软件传输通道是被动传输模式,软件系统写入数据后需要给出发送请求,然后数据才会通过硬件协议栈传输,这种设计可以方便软件系统灵活地发送一些低速的交互信息。

(2)本发明设计了不同协议的响应优先级。本发明设计了ARP、ICMP、TCP应答与收发等响应的优先级,后续设计中如果需要使用UDP协议或者添加其它协议,只需增加相应协议的封装和解析模块,修改本发明给出的优先级,即可实现。

(3)本发明给出了TCP连接管理的结构设计。本发明在网络管理中设计了三层结构:TCP连接状态分析,优先级仲裁和TCP发送管理。通过TCP发送和接收两个状态机实现TCP连接的管理,能保证嵌入式传感设备进行稳定的网络传输。

本发明的有益效果:本发明设计了一种硬件TCP/IP协议栈,该协议栈不仅具有高速硬件数据接口,也提供了软件数据接口,相比于已有的硬件协议栈,本设计灵活性更高,结构更加清晰,可以广泛的用于嵌入式传感设备中。

附图说明

图1为本发明的结构示意图;

图2为图1中TCP/IP协议栈核心模块的结构框图;

图3为TCP接收状态机;

图4为TCP发送状态机;

图5为高速硬件通道写数据时序图;

图6为软件数据通道写数据的程序流程图。

其中:TCP/IP协议栈核心模块1,帧解析单元1-1,接收帧缓存模块1-11,解析帧数据模块1-12,分析客户机模块1-13,应用数据缓存模块1-14,网络参数模块1-15,网络管理单元1-2,TCP连接状态分析模块1-21,优先级仲裁器模块1-22,TCP发送管理模块1-23,帧封装单元1-3,ARP封装模块1-31,ICMP封装模块1-32,UDP封装模块1-33,TCP封装模块1-34,高速硬件数据通道1-4,FIFO模块1-41,存储容量自动检测模块1-42,软件数据通道1-5,软件数据缓存模块1-51,MAC模块2,PHY参数配置单元2-1,MAC接收缓存单元2-2,MAC接收单元2-3,CRC检查单元2-4,生成CRC单元2-5,MAC发送单元2-6,MAC发送缓存单元2-7,忙检测单元2-8,PHY芯片3,客户机4,基于FPGA的硬件逻辑5,基于软核的软件系统6。

具体实施方式

以下结合附图和具体实施例对本发明作进一步的详细描述。

如图1所示,本发明一种具有主动和被动传输模式的硬件TCP/IP协议栈装置,包括TCP/IP协议栈核心模块1、MAC模块2和PHY芯片3。

TCP/IP协议栈核心模块1:包括帧解析单元1-1、网络管理单元1-2、帧封装单元1-3、高速硬件数据通道1-4和软件数据通道1-5。帧解析单元1-1用于接收网络帧数据,对ARP、ICMP、UDP和TCP协议帧数据解析,解析出的网络参数和应用数据,同时分析客户机4数据类型产生相应应答或连接请求;网络管理单元1-2用于进行TCP连接状态分析,并将应答或连接请求进行优先级仲裁,发送优先级使能信号,然后对发送数据的TCP帧头进行相应赋值;帧封装单元1-3模块根据优先级使能信号,分别进行ARP、ICMP、UDP和TCP帧数据封装;高速硬件数据通道1-4用于从基于FPGA的硬件逻辑5读取数据存储并自动产生硬件发送请求;软件数据通道1-5用于从基于软核的软件系统6读取数据并存入缓存,然后直接由基于软核的软件系统6产生发送请求。

帧解析单元1-1包括接收帧缓存模块1-11、解析帧数据模块1-12、分析客户机模块1-13、应用数据缓存模块1-14、网络参数模块1-15。接收帧缓存模块1-11:用于存储来自MAC模块2的网络帧数据;解析帧数据模块1-12:用于将网络帧数据按照帧协议逐层解析,并提取应用层数据发送至应用数据缓存模块1-14、提取网络参数发送至网络参数模块1-15;分析客户机模块1-13:用于分析客户机4的操作类型,并发送TCP帧通知和连接请求,TCP帧通知包括TCP应答、TCP重传和定时器触发,连接请求包括ARP请求和PING请求;应用数据缓存模块1-14:用于缓存应用层数据;网络参数模块1-15:用于缓存网络参数。

网络管理单元1-2包括TCP连接状态分析模块1-21、优先级仲裁器模块1-22、TCP发送管理模块1-23。TCP连接状态分析模块1-21:用于根据TCP帧通知对TCP连接状态进行分析并生成响应信号;优先级仲裁器模块1-22:用于根据响应信号、连接请求和硬件发送请求进行优先级仲裁并产生优先级使能信号;TCP发送管理模块1-23:用于对发送数据的TCP帧头进行相应赋值。

帧封装单元1-3包括ARP封装模块1-31、ICMP封装模块1-32、UDP封装模块1-33和TCP封装模块1-34,分别用于根据优先级使能信号读取高速硬件数据通道1-4和软件数据通道1-5的数据并分别进行ARP、ICMP、UDP和TCP帧数据封装,帧封装单元1-3还包括用于缓存封装后的数据的发送帧缓存1-35。

帧解析单元1-1中接收帧缓存模块1-11存储接收的网络帧数据,然后送入解析帧数据模块1-12,对ARP、ICMP、UDP和TCP协议帧数据解析,将解析出的网络参数和应用数据分别送入网络参数模块1-15和应用数据缓存模块1-14,同时分析客户机数据类型。网络管理单元1-2中进行TCP连接状态分析,生成TCP应答请求、TCP重传请求和定时器触发请求,同时与ARP请求、PING请求以及软硬件发送请求送给优先级仲裁器模块1-22进行仲裁,TCP发送管理模块1-23通过优先级仲裁器模块1-22给出的信号对发送数据的TCP帧头进行相应赋值。帧封装单元1-3,接收优先级仲裁器模块1-22给出的使能信号,分别进行ARP、ICMP、UDP和TCP帧数据封装。整体模块工作时钟为125MHz。

高速硬件数据通道1-4包括FIFO模块1-41和存储容量自动检测模块1-42。FIFO模块1-41:用于缓存通过硬件数据接口从基于FPGA的硬件逻辑5接收的数据。存储容量自动检测模块1-42:用于检测FIFO模块1-41的存储容量,当接收缓存存储满一半,立即向优先级仲裁器模块1-22发送硬件发送请求。

软件数据通道1-5包括软件数据缓存模块1-51:用于缓存通过软件数据接口从基于软核的软件系统6接收的数据和软件发送请求。软件发送通道1-5中,将基于软核的软件系统6产生的数据存入小容量缓存,然后直接由基于软核的软件系统6产生发送请求。

MAC模块2:用于TCP/IP协议栈核心模块1与PHY芯片3对接。MAC模块2包括PHY参数配置单元2-1、MAC接收缓存单元2-2、MAC接收单元2-3、CRC检查单元2-4、生成CRC单元2-5、MAC发送单元2-6、MAC发送缓存单元2-7、忙检测单元2-8。

PHY参数配置单元2-1:用于通过MDIO接口对PHY芯片4进行参数配置;MAC接收缓存单元2-2:用于缓存接收数据;MAC接收单元2-3:用于通过RGMII接口从PHY芯片4接收数据;CRC检查单元2-4用于对接收数据进行CRC值校验;生成CRC单元2-5:用于产生发送数据的CRC值;MAC发送单元2-6:用于通过RGMII接口向PHY芯片4发送数据;MAC发送缓存单元2-7:用于缓存发送数据。忙检测单元2-8连接MAC发送缓存单元2-7和TCP/IP协议栈核心模块1,用于检测MAC是否正在发送数据,若MAC模块2没有发送数据而处于空闲状态,则允许TCP/IP协议栈模块1向发送缓存2-7写入新数据。

PHY芯片3:用于与客户机4对接。PHY芯片3可以采用千兆PHY芯片88E1111。

本发明对标准的TCP/IP协议栈进行了裁剪,只保留了ARP,ICMP,UDP和TCP协议。在这些协议中,ARP协议用来获取MAC地址;ICMP协议用来应答客户机的ping命令;UDP协议用来作为测试协议,辅助测试和开发;TCP协议用来完成嵌入式设备与客户机的数据、命令交互。

本发明工作时:接收帧缓存模块1-11存储来自MAC模块2的网络帧数据,解析帧数据模块1-12对原始数据帧按照帧协议逐层解析,如果收到的数据帧目标IP地址错误则直接丢弃,然后提取网络参数(IP地址、MAC地址、端口号)送入网络参数模块1-15。如果接收帧缓存模块1-11中存有应用层数据,则解析帧数据模块1-12会将数据转存到应用数据缓存模块1-14缓存中,然后等待嵌入式设备中的应用层即基于FPGA的硬件逻辑5读取该数据。分析客户机模块1-13分析客户机4的操作类型,如果接收到的是TCP帧,则通知网络管理单元1-2中的TCP连接状态分析模块1-21进一步分析,如果客户机4发出ARP请求则生成ARP请求信号,如果客户机4发出ping请求则生成ping请求。

TCP连接状态分析模块1-21对客户机4与基于FPGA的硬件逻辑5的TCP连接状态进行详细分析并生成响应信号,如图3所示为TCP连接状态分析的详细状态转移图;TCP发送管理模块1-23通过优先级仲裁器模块1-22给出的请求信号与分析序列号与应答号来控制TCP数据的发送,如图4所示为TCP发送管理的状态转移图。因为TCP协议是面向连接的,嵌入式设备作为主机需要及时调节连接状态。完整的TCP连接管理十分复杂,因此本发明按照图3、图4所示进行了简化,来实现以下目标:

(1)TCP连接的建立、关闭和复位;

(2)丢包检测、重传和快速恢复;

(3)简易的流量控制。

为了及时的分析TCP的连接状态,本发明把整个状态流程分割成了两部分:发送状态机和接收状态机。在整个状态转换中,寄存器TCPState被用来实时标记TCP的连接状态。以下两个状态机的设计是本发明的重点。

上述技术方案中,如图3所示,接收状态转移流程分为如下几步:

(1)首先接收状态机处于接收空闲状态。TCPState被标记为0,所有的网络参数和TCP帧头信息被清空。

(2)当接收到来自客户机的TCP帧,从接收空闲状态跳转为TCP标志位检测状态。它会分析包含在TCP帧头的标志位并做出相应判断。(a)当该帧是请求建立连接(F:SYN),则跳转到半连接状态,然后发送连接请求应答(Send:SYN&ACK),跳转到接收空闲状态;(b)当该帧是请求复位(F:RST),则跳转到关闭连接状态,然后跳转到接收空闲状态;(c)当该帧是关闭连接请求(F=FIN),则跳转到半关闭状态,然后发送应答(Send:ACK),跳转到关闭等待状态,最后发送关闭应答(Send:FIN&ACK),进入接收空闲状态;(d)当该帧是数据帧(F=PUSH),则跳转到接收数据状态,然后发送应答帧(Send:ACK),最后跳转到接收空闲状态;(e)当该帧是TCP应答帧(F:ACK),则跳转到应答分析状态。

(3)当处于应答分析状态时,TCPState的下一个状态将由TCPState的当前值与应答内容共同决定。(a)当TCPState当前值为1(T=1表明已建立半连接),则跳转到建立连接状态,然后返回到接收空闲状态;(b)当TCPState当前值为3(T=3表明连接已经半关闭),则跳转到关闭连接状态,然后返回到接收空闲状态;(c)当TCPState当前值为2并且Disable值为0(T=2&D=0表明已建立连接并且正在发送数据),跳转到丢包检测状态;(d)当TCPState当前值为2并且Disable值为1(T=2&D=1表明已建立连接并且已停止发送数据),跳转到流量控制检测状态;(e)当TCPState当前值为4(T=4表明丢包重传后等待客户机响应),跳转到拥塞检测状态。

(4)当处于丢包检测状态时,将会判断客户机确认号ACK是否出现3次以上的重复,如果没有则说明正常,跳转到接收空闲状态,否则跳转到重传状态。重传状态中系统重新发送已丢包数据,然后跳转到暂停状态,接着跳转到开启定时器状态,最后回到接收空闲状态。上述设计是本发明的重点,其运行机制为:如果TCPState处于暂停状态但没有收到来自客户机的应答帧,则会长期处于等待状态。为了避免这种不合理状态,本发明增加了一个计时器用来作为连接保活机制。当状态机进入暂停状态,这个计时器机会立即启动。如果在定时时间到来前收到了客户机应答帧,这个定时器将会被关掉,状态机恢复成正常状态;否则,定时器将会触发服务器发送试探帧给客户机,直至收到来自客户机的应答帧。

(5)当处于拥塞检测状态时,系统将会检查客户机的TCP窗口。如果窗口太小,则说明客户机存在数据拥塞。此时跳转到复位定时器状态,定时器时间到会发送试探帧,然后等待客户机的回复。如果窗口正常,则跳转到关闭定时器状态,然后跳转到恢复连接状态,最后返回接收空闲状态。

(6)当处于流量控制检测状态时,系统会计算服务器的序列号与当前收到的客户机的应答号的差值,如果差值大于6000,则跳转到复位定时器状态,最后跳转到接收空闲状态;如果差值小于6000,则跳转到关闭定时器状态,然后跳转到使能发送状态,最后跳转到接收空闲状态。

上述技术方案中,如图4所示,发送状态流程分为如下几步:

(1)首先,发送状态机处于发送空闲状态。

(2)当TCP建立连接(T=2)并且发送使能(D=0)时,如果收到发送请求(Send REQ),则跳转到发送数据状态,然后跳转到检测流量状态。

(3)当处于流量检测状态时,如果检测正常,则跳转到发送空闲状态,否则跳转到开启定时器状态,然后跳转到停止发送状态,最后返回到发送空闲状态。以上设计的运行机制是:客户机的应答帧存在滞后现象,通常快速传输时客户机在接收到2帧或更多帧数据后才会发送一次应答帧,所以很有必要在发送状态机中设计流量控制功能。每次发送完数据,在检测流量状态中会计算服务器的序列号与客户机的应答号的差值,如果差值大于6000,则会启动定时器,同时发送状态机进入暂停阶段直至收到来自客户机的应答帧。

(4)当定时器定时时间到,会触发发送状态机从发送空闲状态跳转到发送测试帧状态。

优先级仲裁器模块1-22会对6类请求进行仲裁,本发明设计的优先级如下。因为ARP协议需要交换MAC地址,所以响应级别最高;ping请求作为硬件连接测试,响应级别为2;TCP连接、关闭和应答请求出现频率低但对于TCP连接很重要,响应级别为3;重传和定时器触发请求需要及时响应,所以优先级要高于发送数据,优先级顺序列表如表1所示。

表1优先级顺序列表

上述设计方案中,如图5所示为高速硬件发送通道数据写入时序图。当嵌入式设备采集了大量数据需要通过网口发送时,只需要按照时序将数据高速写入高速硬件数据通道1-4的缓存FIFO模块1-41即可。存储容量自动检测模块1-42会监测FIFO模块1-41存储容量,当接收缓存存储满一半,它会立即产生数据发送请求。帧封装单元1-3部分接着将FIFO模块1-41中的数据封装成标准的协议结构,以最高的效率发送数据给客户机4。本文设置最大段长度(MSS)为1400来保证高的发送效率。使用率计算公式如下:

在各种参数中,HMAC,HIP和HTCP分别代表网络帧、IP帧以及TCP帧的帧头长度,它们的值分别为14,20和20。因此计算可得Umax=96.29%,这表明本设计具有很高的数据传输效率。在高速硬件发送模式下,整个网络传输过程不需要外界干预,硬件接口可以高速写入数据,协议栈自动的以很高的效率传输数据,所以该模式有很高的网络传输速率。

上述设计方案中,如图6所示为软件发送模式下的SendData()函数程序流程图。软件系统通过软件数据接口将数据写入软件数据通道1-5包括软件数据缓存模块1-51中,然后再触发软件发送请求信号,实现数据的网络传输。程序开始后,对发送数据长度进行判断,如果单次发送数据大于1400,则返回值赋值为0,程序终止,发送失败;如果小于1400,则先写入数据,然后通过给软件发送请求置低再置高,产生上升沿触发,硬件协议栈则会响应请求立即发送软件数据缓存模块1-51中所有数据,产生触发信号后程序正常返回。软件发送通道的设计可以支持应用层进行基于软件系统的灵活设计。

本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1