CN109508310B - 虚拟uart - Google Patents
虚拟uart Download PDFInfo
- Publication number
- CN109508310B CN109508310B CN201710826989.5A CN201710826989A CN109508310B CN 109508310 B CN109508310 B CN 109508310B CN 201710826989 A CN201710826989 A CN 201710826989A CN 109508310 B CN109508310 B CN 109508310B
- Authority
- CN
- China
- Prior art keywords
- electronic device
- uart module
- module
- uart
- port
- 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
- 230000004044 response Effects 0.000 claims abstract description 49
- 230000006870 function Effects 0.000 claims description 18
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000000034 method Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- 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/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
- G06F13/4072—Drivers or receivers
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
提供了电子设备中的虚拟UART设备。所公开的电子设备,具有通过第一链路提供的第一功能,所述电子设备还包括第一UART模块与第二UART模块,第一UAR T模块的发送端口耦合到第二UART模块的接收端口,第一UART模块的接收端口耦合到第二UART模块的发送端口;第一UART模块耦合到第一链路以提供电子设备的第二功能,其中,通过第一链路,第一UART模块的发送端口与接收端口第一链路被访问;电子设备从第二UART模块的接收端口获取请求,向第二UART模块的发送端口提供应答,以实现电子设备的第二功能。
Description
技术领域
本申请涉及集成电路技术,尤其涉及在集成电路中提供虚拟UART,以及通过虚拟UART进行通信。
背景技术
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)通常被称作U ART,是电子设备中常用的通信部件。
JTAG是“联合测试行为组(Joint Test Action Group)”的词头字母的简写,JTA G也是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。
PCIe协议定义了设备间通信机制。NVMe协议(也参见“NVM Express Revision1.2”(下称NVMe协议)第3章,2014年11月3日)定义了访问非易失存储设备的机制。PCIe设备提供存储器空间(Memory Space)。耦合PCIe设备的主机可访问PCIe设备的存储器空间。
图1示出了背景技术的电子设备的框图。主机(host)通过PCIe PHY模块110耦合到电子设备。电子设备包括PCIe PHY模块110、数据链路层模块120、传输层模块130、存储器140以及CPU子系统160。PCIe PHY模块110用于处理PCIe底层协议(如物理层)。传输层模块130与CPU子系统160子系统均可访问存储器140。数据链路层模块120用于处理PCIe数据链路层协议,传输层模块130用于处理PCIe传输层协议。传输层模块130还依据存储器空间的TLP(传输层数据包,Transaction Layer Packet)访问存储器140。以及可选地,传输层模块130将TLP写入存储器140,并由CPU子系统160从存储器140提取TLP并处理,以及传输层模块130从存储器140中获取TLP,并通过链路层模块120发送给主机。依然可选地,传输层模块130将TLP发送给CPU子系统160,由CPU子系统160对TLP进行处理。
电子设备还包括UART 170,耦合到主机的UART 180。UART 170与UART 180之间根据指定协议进行通信。UART为主机与设备提供了PCIe链路之外的通信链路,用于例如对设备的PCIe系统、CPU中运行程序等进行调试。主机中运行调试软件与UAR T驱动程序。UART驱动程序管理主机中的UART 180。调试软件通过UART驱动程序访问UART 180,以通过UART170同设备进行通信。
UART 170与UART 180通过物理引线相耦合,要占用设备同主机的接口管脚,以及也占用设备中的芯片的管脚,增加了成本。以及,设备被大规模部署的现场可能位于远离人员工作场所的地区,从而由于空间/物理上难以接触,导致无法通过UART 170访问设备。
发明内容
本申请的目的包括减少UART占用的设备接口管脚,并向用户提供通过UART访问设备的便捷机制。
根据本申请的第一方面,提供了根据本申请第一方面的第一电子设备,具有通过第一链路提供的第一功能,所述电子设备还包括第一UART模块与第二UART模块,第一UART模块的发送端口耦合到第二UART模块的接收端口,第一UART模块的接收端口耦合到第二UART模块的发送端口;第一UART模块耦合到第一链路以提供电子设备的第二功能,其中,通过第一链路,第一UART模块的发送端口与接收端口第一链路被访问;电子设备从第二UART模块的接收端口获取请求,向第二UART模块的发送端口提供应答,以实现电子设备的第二功能。
根据本申请第一方面的第一电子设备,提供了根据本申请第一方面的第二电子设备,其中第一链路是PCIe总线提供的链路。
根据本申请第一方面的第一或第二电子设备,提供了根据本申请第一方面的第三电子设备,其中第一UART模块响应于其发送端口被写入数据,将被写入的数据提供给第二UART模块的接收端口。
根据本申请第一方面的第一至第三电子设备之一,提供了根据本申请第一方面的第四电子设备,其中电子设备的CPU响应于第二UART模块的接收端口出现数据,从第二UART模块的接收端口读取数据,从读取的数据中获取请求,根据请求的指示收集数据,生成对请求的应答,并将应答写入第二UART模块的发送端口。
根据本申请第一方面的第四电子设备,提供了根据本申请第一方面的第五电子设备,其中所述请求是对电子设备的CPU的调试命令,以及所述应答是对所述调试命令的响应。
根据本申请第一方面的第四或第五电子设备,提供了根据本申请第一方面的第六电子设备,其中所述电子设备的CPU响应于所述请求,还暂停CPU的运行。
根据本申请第一方面的第一至第六电子设备之一,提供了根据本申请第一方面的第七电子设备,其中第二UART模块响应于其发送端口被写入数据,将被写入的数据提供给第一UART的接收端口。
根据本申请第一方面的第七电子设备,提供了根据本申请第一方面的第八电子设备,其中第一UART模块的发送端口与接收端口被映射到第一链路的地址空间,耦合到所述第一链路的另一电子设备的CPU可访问第一链路的地址空间。
根据本申请第一方面的第七电子设备,提供了根据本申请第一方面的第九电子设备,其中第一UART模块的发送端口被映射到第一链路的地址空间,耦合到所述第一链路的另一电子设备的CPU可访问第一链路的地址空间;第一UART模块响应于其接收端口被写入数据,将被写入的数据提供给所述另一电子设备的存储器。
根据本申请第一方面的第九电子设备,提供了根据本申请第一方面的第十电子设备,其中所述另一电子设备的CPU从其存储器中获取被写入第一UART模块的接收端口的数据。
根据本申请第一方面的第一至第十电子设备之一,提供了根据本申请第一方面的第十一电子设备,其中第一UART模块响应于其接收端口被写入数据,向耦合到所述第一链路的另一电子设备指示第一UART的接收端口被写入数据。
根据本申请第一方面的第十一电子设备,提供了根据本申请第一方面的第十二电子设备,其中所述另一电子设备获取被写入第一UART模块的接收端口的数据,以获取电子设备的CPU提供的应答。
根据本申请第一方面的第一至第十二电子设备之一,提供了根据本申请第一方面的第十三电子设备,其中响应于第一UART模块的发送端口被写入数据,所述电子设备的CPU将第一UART模块的发送端口被写入的数据提供给第二UART模块的接收端口。
根据本申请第一方面的第一至第十三电子设备之一,提供了根据本申请第一方面的第十四电子设备,其中,所述第一功能是存储功能,所述第二功能是调试功能。
根据本申请第一方面的第十四电子设备,提供了根据本申请第一方面的第十五电子设备,其中所述电子设备通过所述第一链路耦合到另一电子设备,所述电子设备的逻辑地址空间被所述另一电子设备的第一应用程序通过第一链路访问以提供第一功能;所述电子设备的第一UART模块被所述另一电子设备的第二应用程序通过第一链路访问以提供第二功能。
根据本申请第一方面的第十四或第十五电子设备,提供了根据本申请第一方面的第十六电子设备,其中所述电子设备的CPU运行调试服务器,响应于从第二UART模块的接收端口获取的调试命令收集调试信息,并将对调试命令的响应提供给第二UART模块的发送端口。
根据本申请第一方面的第十四至第十六电子设备之一,提供了根据本申请第一方面的第十七电子设备,其中所述电子设备的CPU运行存储服务软件,响应于所述另一电子设备使用所述电子设备的存储功能的命令而收集数据并向所述另一电子设备提供应答。
根据本申请第一方面的第一至第十七电子设备之一,提供了根据本申请第一方面的第十八电子设备,其中所述第一链路是无线网络或有线网络的链路。
根据本申请第一方面的第一至第十八电子设备之一,提供了根据本申请第一方面的第十九电子设备,其中第一UART与第二UART各自还包括指示状态的端口,各自用于指示第一UART与第二UART各自的发送端口是否可被写入数据,以及第一UART与第二UART各自的接收端口是否有待获取的数据。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了背景技术的电子设备的框图;
图2A是根据本申请实施例的电子设备的框图;
图2B是根据本申请实施例的主机的框图;
图3A是根据本申请实施例主机通过虚拟UART向电子设备发送数据的流程图;
图3B是根据本申请的实施例主机从虚拟UART接收电子设备提供的数据的流程图;
图4展示了根据本申请实施例对电子设备的控制部件进行调试的流程图;
图5是根据本申请又一实施例的电子设备的框图;以及
图6是根据本申请另一实施例的电子设备的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2A是根据本申请实施例的电子设备的框图。主机(host)通过PCIe PHY模块110耦合到电子设备。电子设备包括PCIe PHY模块110、数据链路层模块120、传输层模块230、存储器140以及CPU子系统260。PCIe PHY模块110用于处理PCIe底层协议(如物理层)。传输层模块230与CPU子系统260子系统均可访问存储器140。数据链路层模块120用于处理PCIe数据链路层协议,传输层模块230用于处理PCIe传输层协议。传输层模块230还依据TLP(传输层数据包,Transaction Layer Packet)访问的存储器空间而访问存储器140。以及可选地,传输层模块130将TLP写入存储器140,并由CPU子系统260从存储器140提取TLP并处理,以及传输层模块230从存储器140中获取TLP,并通过链路层模块120发送给主机。依然可选地,传输层模块130将TLP发送给CPU子系统160,由CPU子系统160对TLP进行处理。
虚拟UART模块210耦合到传输层模块230,用于供主机访问的UART。虚拟UAR T模块210与虚拟UART模块220提供标准UART设备的功能。虚拟UART模块210耦合到虚拟UART模块220。虚拟UART模块210与虚拟UART模块220各自包括发送端口、接收端口、指示状态的端口。可选地,虚拟UART模块210与虚拟UART模块220各自还包括中断生成部件,以向主机/CPU子系统260指示中断。虚拟UART模块210的发送端口耦合到虚拟UART模块220的接收端口。虚拟UART模块220的发送端口耦合到虚拟UART模块210的接收端口。虚拟UART模块210的发送端口与接收端口可被主机访问。虚拟UART模块220的发送端口与接收端口可被CPU子系统260访问。主机向虚拟UART模块210的发送端口提供数据,虚拟UART模块210将主机提供给其发送端口的数据传输给虚拟UART模块220的接收端口,CPU子系统260从虚拟UART模块220的接收端口获取数据。CPU子系统260向虚拟UART模块220的发送端口提供数据,虚拟UART模块220将主机提供给其发送端口的数据传输给虚拟UART模块210的接收端口,主机从虚拟UART模块210的接收端口获取数据。虚拟UART模块210与虚拟UART模块220各自的指示状态的端口,指示虚拟UART模块210/虚拟UART模块220的发送端口/接收端口是否可被访问(例如,发送接口可被写入数据,和/或接收接口有数据待读取)。在指示状态的端口指示对应的端口不可被访问时,即使向虚拟UART模块的发送端口写入数据,被写入的数据也不被处理或丢弃。
作为举例,虚拟UART模块210的发送端口、接收端口以及指示状态的端口被映射到PCIe设备的存储器空间,或扩展配置空间(Extended Configuration Space),主机通过访问PCIe设备的存储器空间/扩展配置空间,以实现对虚拟UART模块210的发送端口、接收端口以及指示状态的端口访问。可选地,虚拟UART模块210在发送端口/接收端口可被访问时,向主机提供例如MSI-X中断。作为又一个例子,虚拟UART模块210作为PCIe设备或PCIe虚拟功能(VF,Virtual)呈现给主机。
依然作为举例,虚拟UART模块220的发送端口、接收端口以及指示状态的端口被映射到CPU子系统260可访问的空间。CPU子系统260访问虚拟UART模块220的发送端口、接收端口以及指示状态来操作UART模块220提供的UART设备。可选地,虚拟UART模块220在发送端口/接收端口可被访问时,向CPU子系统260提供中断。
根据本申请的实施例,传输层模块230还依据TLP访问的存储器空间被映射给虚拟UART模块210,将写存储器空间的TLP所携带的数据提供给UART模块210的发送端口;或对于读存储器空间的TLP,从UART模块210的接收端口获取数据作为对TLP的响应。以类似的方式,主机通过TLP访问虚拟UART模块210的指示状态的端口,传输层模块230依据TLP访问虚拟UART模块210的指示状态的端口。
可选地,电子设备包括多个成对的虚拟UART模块,主机可访问一对虚拟UART模块之一,而电子设备的CPU子系统260访问该对虚拟UART模块的另一个,从而在主机与电子设备之间通过UART机制进行通信。
图2B是根据本申请实施例的主机的框图。主机包括PCIe控制器,作为符合PCIe协议的主设备,耦合到电子设备的PCIe PHY模块,用于同电子设备通信。主机还运行例如调试软件、UART驱动程序和/或PCIe驱动程序。PCIe驱动程序用于管理PCIe控制器,UART驱动程序用于管理在PCIe设备上提供的虚拟UART模块210(也参看图2A)。UART驱动程序是例如标准UART驱动程序,其访问的标准UART设备的发送端口、接收端口以及指示状态的端口被映射到PCIe驱动程序提供的、在PCIe设备的存储器空间,或扩展配置空间(ExtendedConfiguration Space)中的虚拟UART模块210的发送端口、接收端口以及指示状态的端口。调试软件是例如通过UART驱动软件管理的UART对电子设备进行调试的普通调试软件。可选地,现有技术中,访问UART的多种软件都可以通过标准UART驱动软件访问虚拟UART模块210。在访问UART的软件看来,虚拟UART模块210是主机的UART,或位于主机的PCIe主设备的UART,并耦合到作为PCIe从设备的电子设备上的UART(由虚拟UART模块220提供)。
图3A是根据本申请实施例的通过虚拟UART通信的流程图。图3A中,展示了主机通过虚拟UART向电子设备发送消息的过程。主机中的应用程序(例如,图2B的调试软件)使用UART驱动程序(也参看图2B),通过PCIe驱动程序,通过PCIe总线访问作为PCIe设备的电子设备中的虚拟UART模块210(参看图2A),向虚拟UART模块210的发送端口写入数据(310)。例如,虚拟UART模块210的发送端口被映射到PCIe设备的存储器空间的指定地址,应用程序通过UART驱动程序与PCIe驱动程序,向PCIe设备的存储器空间的指定地址写入数据来向虚拟UART模块210的发送端口写入数据。虚拟UART模块210将其发送端口收到的被写入数据,提供给PCIe设备上的虚拟UART模块220的接收端口(320)。PCIe设备的CPU(例如,图2A的CPU子系统260)响应于虚拟UART模块220的接收端口出现数据,从虚拟UART模块220的接收端口获取数据(330)。可选地,响应于虚拟UART模块220的接收端口出现数据,虚拟UART模块220设置其指示状态的端口,以指示接收端口出现数据。PCIe设备的CPU从虚拟UART模块220的指示状态的端口,获知虚拟UART模块220的接收端口出现数据,并从虚拟UART模块220的接收端口获取数据。依然可选地,响应于虚拟UART模块220的接收端口出现数据,虚拟UART模块220向CPU发出中断请求,以指示CPU虚拟UART模块220的接收端口出现数据。
图3B是根据本申请又一实施例的通过虚拟UART通信的流程图。图3B中,展示了主机通过虚拟UART从电子设备获取消息的过程。PCIe设备的CPU(例如,图2A的CPU子系统260)向PCIe设备的虚拟UART模块220的发送端口写入数据(340)。虚拟UART模块220将其发送端口收到的被写入数据,提供给PCIe设备上的虚拟UART模块210的接收端口(350)。虚拟UART模块210还响应于接收端口收到数据,而更新其指示状态的端口以指示出现其接收端口上有数据待读取。主机中的UART驱动软件通过PCIe总线识别PCIe设备上的虚拟UART模块210的接收端口出现待读取数据(360)。例如,虚拟UART模块210响应于其接收端口被写入数据,向主机生成中断。主机中的UART驱动软件响应于PCIe设备的中断,从虚拟UART模块210的接收端口获取数据(370),并提供给主机中的应用程序。作为又一个例子,主机中的应用程序或UART驱动程序轮询位于PCIe存储器空间上的虚拟UART模块210的指示状态的端口,并在指示状态的端口指示接收端口有数据待读取时,从接收端口获取数据。
图4展示了根据本申请实施例对电子设备的控制部件进行调试的流程图。响应于用户的调试操作,运行在主机上的调试软件接收来自用户的调试命令(410)。调试命令是例如暂停CPU运行、设置程序断点、获取内存变量值、获取软件栈信息、恢复CPU运行等。调试软件对调试命令编码,将编码的调试命令通过UART驱动程序发送给PCIe设备上的虚拟UART模块210(参看图2A)的发送端口(420)。根据本申请的实施例,耦合到主机的PCIe总线的电子设备提供两个PCIe设备,其一是虚拟UART设备,另一个是提供电子设备的目标功能的设备,例如,NVMe存储设备。虚拟UART模块210将其发送端口收到的调试命令,提供给PCIe总线上的虚拟UART模块220的接收端口(430)。PCIe设备的CPU(例如,图2A的CPU子系统260)响应于虚拟UART模块220的接收端口出现调试命令,从虚拟UART模块220的接收端口获取调试命令(440)。可选地,调试命令由多个UART数据帧组成,PCIe设备的CPU多次从虚拟UART模块220的接收端口获取数据,并将多次获取的数据组成调试命令。依然可选地,响应于虚拟UART模块220的接收端口收到调试命令,虚拟UART模块220向CPU生成中断,CPU作为对中断的响应,保存当前程序的运行现场,并从虚拟UART模块220的接收端口获取数据,可选地,CPU多次从虚拟UART模块220的接收端口获取数据,并将多次获取的数据组成调试命令。
PCIe设备的CPU根据调试命令收集要提供给主机运行的调试软件的数据(450)。例如,调试命令是用于暂停CPU运行的命令,作为响应,CPU获取当前运行的程序地址,中止当前程序的运行,生成指示CPU已停止运行的信息,将指示CPU已停止运行的信息写入虚拟UART模块220的发送端口(460)。以及可选地,CPU还监视虚拟UART模块220的接收端口以等待进一步的调试命令。作为又一个例子,调试命令用于获取内存变量值,作为响应,CPU依据调试命令指定的内存地址或变量名获取对应的值,生成指示内存变量及其值的信息,并将信息写入虚拟UART模块的220的发送端口(460)。
虚拟UART模块220将其发送端口收到的被写入数据,提供给PCIe设备上的虚拟UART模块210的接收端口(470)。虚拟UART模块210还响应于接收端口收到数据,而更新其指示状态的端口以指示出现其接收端口上有数据待读取。主机中的UART驱动程序通过PCIe总线识别PCIe设备上的虚拟UART模块210的接收端口出现待读取数据(480)。调试软件从PCIe设备上的虚拟UART模块210的接收端口获取数据,并显示给用户(490)。
在可选的实施方式中,UART驱动程序所管理的虚拟UART模块210的发送端口被映射到PCIe设备的存储器空间,而虚拟模块210的接收端口被映射到主机的指定存储器空间。虚拟UART模块210响应于其接收端口被写入数据,向传输层模块230或PCIe设备的CPU产生中断。作为对中断的响应,传输层模块230或PCIe设备的CPU将虚拟UART模块210的接收端口的数据发送到主机的指定存储器空间,以及向主机发送中断请求。在主机端,作为对中断的响应,调试软件从主机的指定存储器空间获取来自虚拟UART模块210的接收端口的数据,并展示给用户。依然可选地,调试软件多次访问虚拟UART模块210的接收端口,将获得的数据组合,并展示给用户。
图5是根据本申请又一实施例的电子设备的框图。主机(host)通过PCIe PHY模块110耦合到电子设备。电子设备包括PCIe PHY模块110、数据链路层模块120、传输层模块530、存储器540以及CPU子系统560。传输层模块530与CPU子系统560子系统均可访问存储器540。传输层模块250用于处理PCIe传输层协议。传输层模块530还依据TLP(传输层数据包,Transaction Layer Packet)访问的存储器空间而访问存储器540。以及可选地,传输层模块530将TLP写入存储器540,并由CPU子系统560从存储器540提取TLP并处理,以及传输层模块530从存储器540中获取TLP,并通过链路层模块120发送给主机。
根据图5的实施例中,虚拟UART模块510的发送端口、接收端口与指示状态的端口被映射到PCIe设备的指定存储器空间。传输层模块530识别TLP访问的存储器空间。对于写入对应于虚拟UART模块510的发送端口的指定存储器空间的TLP,将要写入的数据存储在存储器540,并向CPU子系统560发送中断。作为响应,CPU子系统560从存储器540获得写入虚拟UART模块510的发送端口的数据,并将数据写入存储器540中的虚拟UART模块520的接收端口。以及向CPU子系统560(或其他CPU)发送另一中断。作为响应,CPU子系统560从存储器540获得写入虚拟UART模块520的接收端口的数据,并从数据中识别调试命令。
CPU子系统560根据调试命令收集要提供给主机的数据,并写入存储器540中的虚拟UART模块520的发送端口。以及向CPU子系统560发送中断。作为响应,CPU子系统560从存储器540获得写入虚拟UART模块520的发送端口的数据,将数据写入虚拟UART模块510的接收端口。以及向CPU子系统560(或其他CPU)发送另一中断。再次作为响应,CPU子系统560(或其他CPU)向主机发送中断,以指示虚拟UART模块510的接收端口出现数据。
可选地,CPU子系统轮询存储器540中的虚拟UART模块510和/或虚拟UART模块520的指示状态的端口,以获取其各自的端口中出现数据。
图6是根据本申请另一实施例的电子设备的框图。主机(host)通过以太网耦合到电子设备。电子设备包括以太网PHY模块610、TCP/IP模块620、以及CPU子系统660。CPU子系统660模拟虚拟UART模块630与虚拟UART模块640。以太网PHY模块610用于处理以太网底层协议(如物理层)。TCP/IP模块620处理TCP/IP协议。可选地,TCP/IP模块620也处理诸如UDP等其他网络协议。作为举例,CPU子系统660从TCP连接中获取数据。主机的调试软件与电子设备CPU子系统660以应用层协议通信,通过应用层协议,主机的调试软件指定要访问的虚拟UART模块630及其指定端口。例如,主机的调试软件向虚拟UART模块630的发送端口写入数据,以指示调试命令。CPU子系统660通过应用层协议,识别出虚拟UART模块630的发送端口被写入数据,将写入虚拟UART模块630的发送端口的数据写入虚拟UART模块640的接收端口。CPU子系统660(例如,另一程序)从虚拟UART模块640的接收端口获取数据,将数据识别为调试命令,并根据调试命令收集调试信息,以及将调试协议写入虚拟UART模块640的发送端口。CPU子系统660响应于虚拟UART模块640的发送端口被写入数据,将数据写入虚拟UART模块630的接收端口。以及CPU子系统660还将虚拟UART模块630的接收端口的数据通过TCP/IP模块620发送给主机的调试软件,由主机运行的调试软件展示调试信息。
提供虚拟UART模块630和/或虚拟UART模块640,有利于重用已有的调试工具。例如,由CPU子系统660运行GDB服务器(GDB Server),GDB服务器通过电子设备中的UART设备同主机中的UART设备通信。由于提供虚拟UART模块640,GDB服务器以已有方式访问由虚拟UART模块640模拟的UART设备,而无须相应修改。类似地,主机中运行的调试工具也以已有方式访问由虚拟UART模块630模拟的UART设备,也无须做相应修改。从而,可使用已有的多种调试工具,调试根据本申请实施例的电子设备。以及已有的多种使用UART设备通信的工具,也可连同根据本申请实施例的电子设备而使用。
作为又一个实施方式,电子设备中提供虚拟UART模块630而不提供虚拟UART模块640。例如,主机的调试软件向虚拟UART模块630的发送端口写入数据,以指示调试命令。CPU子系统660通过应用层协议,识别出虚拟UART模块630的发送端口被写入数据,将从虚拟UART模块630获取的数据识别为调试命令,并根据调试命令收集调试信息,以及将调试协议写入虚拟UART模块630的接收端口。以及CPU子系统660还将虚拟UART模块630的接收端口的数据通过TCP/IP模块620发送给主机的调试软件,由主机运行的调试软件展示调试信息。
虽然,上面以PCIe总线、以太网作为举例,描述了根据本申请实施例的带有虚拟UART的电子设备,所属领域技术人员可以理解地,可使用JTAG、蓝牙、WIFI、USB等多种通信链路来替代根据本申请实施例中的PCIe总线或以太网。蓝牙、WIFI等协议提供了物理层、数据链路层描述,其上支持TCP/IP等多种协议,通过TCP协议承载根据本申请实施例的虚拟UART。USB协议为每个设备提供接口。根据本申请实施例的虚拟UART作为USB设备,以及将虚拟UART的端口映射到USB设备的端点,通过访问USB设备的端点来操作根据本申请实施例的虚拟UART。
根据本申请的实施方式,电子设备无须提供物理UART端口,节省了成本。并且无须到电子设备被部署的现场调试电子设备,而可以远程访问电子设备所耦合的主机,并通过主机上运行的调试软件,通过电子设备的虚拟UART,收集电子设备的内部状态、运行现场,并进行调试。电子设备可以是例如固态硬盘、车载电子设备、图形卡、键盘、智能终端。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种电子设备,具有通过第一链路提供的第一功能,所述电子设备还包括第一UART模块与第二UART模块,第一UART模块的发送端口耦合到第二UART模块的接收端口,第一UART模块的接收端口耦合到第二UART模块的发送端口,其中,第一UART模块与第二UART模块提供标准UART设备的功能;
第一UART模块耦合到第一链路以提供电子设备的第二功能,其中,通过第一链路,第一UART模块的发送端口与接收端口被访问;
电子设备从第二UART模块的接收端口获取请求,向第二UART模块的发送端口提供应答,以实现电子设备的第二功能。
2.根据权利要求1所述的电子设备,其中
第一UART模块响应于其发送端口被写入数据,将被写入的数据提供给第二UART模块的接收端口。
3.根据权利要求1或2所述的电子设备,其中
电子设备的CPU响应于第二UART模块的接收端口出现数据,从第二UART模块的接收端口读取数据,从读取的数据中获取请求,根据请求的指示收集数据,生成对请求的应答,并将应答写入第二UART模块的发送端口。
4.根据权利要求3所述的电子设备,其中
所述请求是对电子设备的CPU的调试命令,以及所述应答是对所述调试命令的响应。
5.根据权利要求4所述的电子设备,其中
所述电子设备的CPU响应于所述请求,还暂停CPU的运行。
6.根据权利要求1或2所述的电子设备,其中
第二UART模块响应于其发送端口被写入数据,将被写入的数据提供给第一UART的接收端口。
7.根据权利要求6所述的电子设备,其中
第一UART模块的发送端口与接收端口被映射到第一链路的地址空间,耦合到所述第一链路的另一电子设备的CPU可访问第一链路的地址空间。
8.根据权利要求6所述的电子设备,其中
第一UART模块的发送端口被映射到第一链路的地址空间,耦合到所述第一链路的另一电子设备的CPU可访问第一链路的地址空间;第一UART模块响应于其接收端口被写入数据,将被写入的数据提供给所述另一电子设备的存储器。
9.根据权利要求1或2所述的电子设备,其中
所述电子设备通过所述第一链路耦合到另一电子设备,所述电子设备的逻辑地址空间被所述另一电子设备的第一应用程序通过第一链路访问以提供第一功能;所述电子设备的第一UART模块被所述另一电子设备的第二应用程序通过第一链路访问以提供第二功能。
10.根据权利要求9所述的电子设备,其中
所述电子设备的CPU运行调试服务器,响应于从第二UART模块的接收端口获取的调试命令收集调试信息,并将对调试命令的响应提供给第二UART模块的发送端口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710826989.5A CN109508310B (zh) | 2017-09-14 | 2017-09-14 | 虚拟uart |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710826989.5A CN109508310B (zh) | 2017-09-14 | 2017-09-14 | 虚拟uart |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109508310A CN109508310A (zh) | 2019-03-22 |
CN109508310B true CN109508310B (zh) | 2021-10-22 |
Family
ID=65744399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710826989.5A Active CN109508310B (zh) | 2017-09-14 | 2017-09-14 | 虚拟uart |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109508310B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6230118B1 (en) * | 1997-06-30 | 2001-05-08 | Cirrus Logic, Inc. | DOS based application supports for a controllerless modem |
CN1862517A (zh) * | 2005-04-28 | 2006-11-15 | 惠普开发有限公司 | 虚拟化通用异步接收器-发送器接口 |
CN101621440A (zh) * | 2009-05-22 | 2010-01-06 | 浙江天正电气股份有限公司 | 远程多路串口通讯映射系统 |
CN104021060A (zh) * | 2013-02-28 | 2014-09-03 | 鸿富锦精密工业(深圳)有限公司 | Bmc串口调试系统及方法 |
CN106569972A (zh) * | 2016-11-11 | 2017-04-19 | 西安电子科技大学 | 基于usb接口的jtag单片机无线仿真器和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090129370A1 (en) * | 2007-11-16 | 2009-05-21 | Arman Toorians | Voice-Over-IP Capable Sideshow Device |
-
2017
- 2017-09-14 CN CN201710826989.5A patent/CN109508310B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6230118B1 (en) * | 1997-06-30 | 2001-05-08 | Cirrus Logic, Inc. | DOS based application supports for a controllerless modem |
CN1862517A (zh) * | 2005-04-28 | 2006-11-15 | 惠普开发有限公司 | 虚拟化通用异步接收器-发送器接口 |
CN101621440A (zh) * | 2009-05-22 | 2010-01-06 | 浙江天正电气股份有限公司 | 远程多路串口通讯映射系统 |
CN104021060A (zh) * | 2013-02-28 | 2014-09-03 | 鸿富锦精密工业(深圳)有限公司 | Bmc串口调试系统及方法 |
CN106569972A (zh) * | 2016-11-11 | 2017-04-19 | 西安电子科技大学 | 基于usb接口的jtag单片机无线仿真器和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109508310A (zh) | 2019-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7966441B2 (en) | Interfacing apparatus and method using a single predetermined communication protocol for accessing remote peripheral devices that use different communication protocols | |
TWI393009B (zh) | 資料共享及傳輸之系統及方法 | |
US10515043B2 (en) | Smart interface card control method and apparatus through a virtualized management interface | |
CN102323905B (zh) | 一种龙芯主板的远程监控系统 | |
CN105868149B (zh) | 一种串口信息的传输方法和装置 | |
US20080005395A1 (en) | Adapter to convert USB device into WUSB device | |
CN101291261B (zh) | 一种板内设备测试方法和系统 | |
US20150156089A1 (en) | Data communication interface | |
CN108111382B (zh) | 基于i3c总线的通信装置及其通信方法 | |
CN104021060A (zh) | Bmc串口调试系统及方法 | |
CN104077203A (zh) | 一种可经由usb接口实现计算机硬件诊断的方法及装置 | |
CN113609045A (zh) | 一种通用性强的智能网卡bmc通信结构及方法 | |
CN113364747B (zh) | 调试方法、装置、系统及数据集生成方法、装置 | |
US9639489B2 (en) | I/O device sharing system and I/O device sharing method | |
CN106844133A (zh) | 一种片上系统soc的监控方法及装置 | |
CN115454881A (zh) | Risc-v架构的调试系统及调试方法 | |
CN109508310B (zh) | 虚拟uart | |
CN107168917B (zh) | 一种利用USBHost接口实现程控仪器通信的总线桥 | |
CN110750475A (zh) | 多cpu共用一物理串口方法及装置、嵌入式设备、介质 | |
CN104268109A (zh) | 数据接口通信方法和装置 | |
CN103440218A (zh) | 基于usb-hid协议的can总线监控方法 | |
KR100814436B1 (ko) | 웹 기반 모니터링 모듈, 이를 포함하는 하드웨어 시스템,그리고 웹 기반 모니터링 모듈의 모니터링 방법 | |
CN106972989A (zh) | 一种ntb带宽测试的方法及装置 | |
CN102568118A (zh) | 一种基于嵌入式pos机的usb数据下载接口 | |
CN101630296A (zh) | Usb附接器及其内部数据传输方法 |
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 |