CN113157624B - 一种串口通信方法、装置、设备及存储介质 - Google Patents
一种串口通信方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113157624B CN113157624B CN202110431969.4A CN202110431969A CN113157624B CN 113157624 B CN113157624 B CN 113157624B CN 202110431969 A CN202110431969 A CN 202110431969A CN 113157624 B CN113157624 B CN 113157624B
- Authority
- CN
- China
- Prior art keywords
- real
- operating system
- time operating
- serial port
- interrupt
- 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
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0024—Peripheral component interconnect [PCI]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明涉及一种串口通信方法、装置、设备及存储介质,该方法通过在同一硬件设备的虚拟环境中,同时运行互相隔离的非实时操作系统和实时操作系统;将挂载在所述硬件设备的总线上的串口设备透传至所述实时操作系统;所述实时操作系统初始化所述串口设备的配置,以使所述串口设备按照符合所述实时操作系统的所述配置工作;所述实时操作系统基于所述配置,使用所述串口设备进行数据的收发,实现提高串口设备与虚拟环境中的实时操作系统的匹配度,保证实时操作系统中串口设备收发数据的实时性的技术效果。
Description
技术领域
本发明涉及实时操作系统的技术领域,尤其涉及一种串口通信方法、装置、设备及存储介质。
背景技术
一般的,对于非实时操作系统和实时操作系统而言,实现串口设备的挂载和驱动已经非常成熟。
需要注意的是,由于非实时操作系统和实时操作系统对于串口设备的数据传输速率要求是不一样的。特别是,对于实时操作系统而言,需要保证数据传输的实时性,相比于非实时操作系统,需要配置更高的数据传输速率。
在一种情况下,可以是以虚拟机的方式构建实时操作系统和非实时操作系统,串口设备可以为非实时操作系统和实时操作系统所共享。
如果以非实时操作系统的运行要求来对串口设备进行配置,则明显不满足实时操作系统的运行要求,如数据传输速率的不匹配。
发明内容
本发明的目的在于提出一种串口通信方法、装置、设备及存储介质,实现提高串口设备与虚拟环境中的实时操作系统的匹配度,保证实时操作系统中串口设备收发数据的实时性的技术效果。
为实现上述目的,本申请第一方面提供了一种串口通信方法,包括:在同一硬件设备的虚拟环境中,同时运行互相隔离的非实时操作系统和实时操作系统;
将挂载在所述硬件设备的总线上的串口设备透传至所述实时操作系统;
所述实时操作系统初始化所述串口设备的配置,以使所述串口设备按照符合所述实时操作系统的所述配置工作;
所述实时操作系统基于所述配置,使用所述串口设备进行数据的收发。
可选的,所述在同一硬件设备的虚拟环境中,同时运行互相隔离的非实时操作系统和实时操作系统,包括:
在所述硬件设备上使用实时操作系统的镜像构建第一虚拟环境;
在所述硬件设备上使用非实时操作系统的镜像构建第二虚拟环境,所述第一虚拟环境和所述第二虚拟环境互相隔离;
分别启动所述第一虚拟环境和所述第二虚拟环境,以同时运行互相隔离的所述实时操作系统和所述非实时操作系统。
可选的,将挂载在所述硬件设备的总线上的串口设备透传至所述实时操作系统,包括:
所述非实时操作系统获取挂载在总线上的串口设备的基地址;
所述非实时操作系统将所述基地址发送给所述实时操作系统;
所述实时操作系统将所述基地址转换为所述串口设备对应的物理地址;
所述实时操作系统将所述物理地址对应的所述串口设备透传至所述实时操作系统,以显示在所述实时操作系统的用户空间中。
可选的,所述实时操作系统初始化所述串口设备的配置,以使所述串口设备按照符合所述实时操作系统的所述配置工作,包括:
所述实时操作系统按照预置的、符合实时运行要求的配置,设置所述串口设备中预置的寄存器。
可选的,所述串口设备中预置的寄存器包括:时钟寄存器和波特率寄存器;
所述实时操作系统按照预置的、符合实时运行要求的配置,设置所述串口设备中预置的寄存器,包括:
所述实时操作系统将所述波特率寄存器的值设置为第一值;
所述实时操作系统将所述时钟寄存器的时钟设置为第二值;
所述串口设备基于所述第一值和所述第二值,计算得到所述串口设备收发数据时所使用的波特率。
可选的,所述串口设备中预置的寄存器还包括:中断寄存器;
所述实时操作系统按照预置的、符合实时运行要求的配置,设置所述串口设备中预置的寄存器,包括:
所述实时操作系统设置所述中断寄存器,以开启所述串口设备的中断;
在所述实时操作系统中设置中断定向表,所述中断定向表中存储所述中断对应的中断号,并指示所述中断号与所述实时操作系统的对应关系。
可选的,所述实时操作系统基于所述配置,使用所述串口设备进行数据的收发,包括:
当所述串口设备基于所述配置中设置的波特率接收到数据时,向中断控制器发送关于预置中断号对应的中断信号;
所述中断控制器将所述中断信号格式化为中断请求信息,并将所述中断请求信息发送至所述硬件设备的中央处理器;
所述中央处理器基于中断定向表中设置的、所述预置中断号与所述实时操作系统的对应关系,将所述中断请求信息转发至所述实时操作系统;
所述实时操作系统根据所述中断请求信息,调用预先注册的中断子函数对从所述串口设备接收的数据进行处理;
当所述实时操作系统发送数据时,将所述数据发送至在用户空间中显示的所述串口设备,所述串口设备基于所述配置中设置的波特率将所述数据发送至与所述串口设备连接的设备。
为实现上述目的,本申请第二方面提供了一种串口通信装置,包括:
系统运行模块,用于在同一硬件设备的虚拟环境中,同时运行互相隔离的非实时操作系统和实时操作系统;
透传模块,用于将挂载在所述硬件设备的总线上的串口设备透传至所述实时操作系统;
配置模块,用于所述实时操作系统初始化所述串口设备的配置,以使所述串口设备按照符合所述实时操作系统的所述配置工作;
数据收发模块,用于所述实时操作系统基于所述配置,使用所述串口设备进行数据的收发。
为实现上述目的,本申请第三方面提供了一种串口通信设备,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面中任一所述的串口通信方法。
为实现上述目的,本申请第四方面提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面中任一所述的串口通信方法。
由上可见,本申请提供的技术方案,通过将串口设备透传至实时操作系统,并使用符合实时操作系统的配置来设置串口设备,如将串口设备配置为高波特率进行数据传输,并配置为以中断方式工作,以达到串口设备的配置符合实时操作系统运行要求、具备实时性的技术效果。
附图说明
图1为本发明实施例1中提供的一种串口通信方法的流程图;
图2为本发明实施例2中提供的一种串口通信装置的结构示意图;
图3为本发明实施例3提供的一种串口通信设备的结构示意图。
具体实施方式
以下实施例用于说明本发明,但不用来限制本发明的范围。
实施例1
本申请提供一种串口通信方法,该方法可以由串口通信装置来执行,该串口通信装置可以通过软件和/或硬件的方式实现,并集成在可进行在串口通信设备中。可选的,该串口通信设备包括但不限定于电脑、服务器等终端。本实施例中,以该串口通信设备为服务器为例进行详细说明。
图1为本发明实施例1中提供的一种串口通信方法的流程图,参照图1,该方法可以包括如下的步骤:
S110、在同一硬件设备的虚拟环境中,同时运行互相隔离的非实时操作系统和实时操作系统。
本实施例中,硬件设备是可以运行操作系统的设备,如电脑、服务器等终端,如上述的串口通信设备。
本实施例中,操作系统(operation system,OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
本实施例中,非实时操作系统是对实时性要求不高的操作系统。一般的,常用的桌面级操作系统都是非实时操作系统,如包括 Linux/Windows/OSX等操作系统。
本实施例中,实时操作系统(real time operation system,RTOS) 是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。提供及时响应和高可靠性是其主要特点。示例性的,实时操作系统可以包括uCOS/VxWorks/RTLinux等操作系统。
本实施例中,虚拟环境是使用虚拟化技术构建的计算机环境。其中,虚拟化技术是指将一台计算机虚拟为多台逻辑计算机的技术。具体的,在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
示例性的,虚拟机技术是虚拟化技术的一种。具体的,虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的 CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
本实施例中,可以在同一硬件设备的虚拟环境中,同时运行互相隔离的非实时操作系统和实时操作系统。具体的,在硬件设备上使用实时操作系统的镜像构建第一虚拟环境;在该硬件设备上使用非实时操作系统的镜像构建第二虚拟环境,其中,第一虚拟环境和第二虚拟环境互相隔离;进一步的,分别启动第一虚拟环境和第二虚拟环境,以同时运行互相隔离的实时操作系统和非实时操作系统。
示例性的,本实施例中可以采用KVM/QEMU/QEMU-KVM等虚拟技术,使用实时操作系统的镜像构建第一虚拟环境(如虚拟机),使用非实时操作系统的镜像构建第二虚拟环境(如虚拟机)。
其中,KVM(Kernel-based Virtual Machine)是基于内核的虚拟机。 KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux 的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。从存在形式看,KVM是两个内核模块kvm.ko和kvm_intel.ko(对AMD处理器来说,就是kvm_amd.ko),这两个模块用来实现CPU的虚拟化。
其中,QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性,QEMU可以虚拟出不同架构的虚拟机,如在x86平台上可以虚拟出power机器。KQEMU为QEMU的加速器,经由KQEMU这个开源的加速器,QEMU能模拟至接近真实电脑的速度。
其中,KQEMU-KVM是KQEMU和KVM的结合。如果要让用户在KVM上完成一个虚拟机相关的操作,显然需要用户空间的支持,同时还包括IO虚拟化,所以,KVM的解决方案借鉴了QEMU的东西并做了一定的修改,形成了自己的KVM虚拟机工具集和IO虚拟化的支持,也就是所谓的KQEMU-KVM。
在一实施例中,采用KQEMU-KVM的虚拟技术使用实时操作系统的镜像构建虚拟环境(如虚拟机)。
具体的,在硬件设备开机之后,可以启动KQEMU-KVM的虚拟技术相关的后台服务,该后台服务主要用于提供构建虚拟机的工具,该后台服务可以导入实时操作系统的镜像,进而,基于该镜像创建第一虚拟机;也可以导入非实时操作系统的镜像,进而基于该镜像创建第二虚拟机。当需要启动实时操作系统时,启动该第一虚拟机即可;但需要启动非实时操作系统时,启动该第二虚拟机即可。
本实施例中,在同一硬件设备的虚拟环境中还可以运行一个或多个实时操作系统,运行一个或多个非实时操作系统,一方面,有利于基于非实时操作系统优异的用户交互界面对一个或多个实时操作系统进行管理;另一方面,保留了实时操作系统的实时性能,不必因增加用户交互界面而影响处理的实时性。
S120、将挂载在所述硬件设备的总线上的串口设备透传至所述实时操作系统。
本实施例中,串口设备,又称串行接口(Serial Interface),简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。串行接口按电气标准及协议来分包括 RS-232-C、RS-422、RS485等。RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。
本实施例中,以串口设备为通用异步收发传输器(Universal AsynchronousReceiver/Transmitter,通常称为UART)设备为例进行说明。其中,UART设备是一种异步收发传输器,是电脑硬件的一部分,将数据透过串列通讯和平行通讯间作传输转换。UART通常用在与其他通讯接口(如EIA RS-232)的连接上。具体实物表现为独立的模组化芯片,或是微处理器中的内部周边装置(peripheral)。一般和RS-232C 规格的,类似Maxim的MAX232之类的标准信号幅度变换芯片进行搭配,作为连接外部设备的接口。
进一步的,串口设备可以挂载在总线上。如,该总线可以是从CPU 所引出来的外围器件互联(Peripheral Component Interconnect,PCI) 总线。其中,PCI总线是一种树型结构,并且独立于CPU总线,可以和CPU总线并行操作。
进一步的,可以在操作系统中设置串口设备的驱动,以使得操作系统可以基于该驱动,直接识别并使用总线上的串口设备。
需要注意的是,针对同一串口设备,不同的操作系统所对应的驱动是不一样的。实时操作系统和非实时操作系统的虚拟环境是互相隔离的,无法基于非实时操作系统所设置的驱动,直接识别并使用串口设备,则需要使用透传技术,将串口设备透传至虚拟环境中的实时操作系统,并在实时操作系统设置对应的驱动。
本实施例中,透传使用的是设备透传技术,也叫设备直通技术,该技术需要支持Intel(VT-D)或AMD(IOMMU)硬件虚拟化加速技术,可以使得运行虚拟环境中的操作系统也可以识别和使用硬件设备。
其中,Intel VT-D的全称是Intel Virtualization Technology for Direct I/O,它是Intel虚拟化技术的一部分,主要针对的是I/O子系统,它的实现主要是通过在硬件上引入重定向单元,该硬件重定向单元用于对 I/O子系统的直接内存操作(Direct MemoryAccess,DMA)和中断传递进行重定向,从而辅助VMM(Virtual Machine Monitor)实现I/O子系统的虚拟化。
进一步的,VT-D设备是一个位于CPU、内存和I/O设备之间的硬件设备,通常位于PCI设备树的根部,或者类似的位于I/O子系统的根部,当VT-D重定向硬件设备启用的时候,它会拦截位于它下面的所有I/O设备产生的中断请求和通过DMA方式对虚拟机内存访问的请求,然后通过查找中断重定向表或者I/O页表的方式(类似分页机制) 来重新定位中断转发的目标LAPIC或者是I/O设备(如串口设备)访问的目标主机物理内存地址。其中,LAPIC,全称为Local Advanced Programmable Interrupt Controller,是一种负责接收/发送中断的芯片,集成在CPU内部,每个CPU有一个属于自己的LAPIC。
本实施例中,以使用虚拟透传技术是VT-D为例进行说明,具体的,在一示例中,步骤S120可以细化为如下步骤:
S121、实时操作系统获取挂载在总线上的串口设备的基地址。
本实施例中,以串口设备挂载在PCI总线上为例进行说明,该基地址可以对应于串口设备所在PCI总线的总线地址。该总线地址可以使用总线号进行表示,如D30:F1。
进一步的,实时操作系统可以通过总线操作,如通过pci_read_config_dword接口来读取串口设备的Vendor ID、Device ID 和总线地址,其中,Vendor ID为串口设备的厂商识别号,Device ID 为串口设备的设备识别号。
S122、实时操作系统将基地址转换为串口设备对应的物理地址。
本实施例中,由于实时操作系统是运行在虚拟环境中的,而基地址需要映射为物理地址之后,才能使用。也就是说,实时操作系统只有基于该映射之后的物理地址才能寻找到串口设备。
S123、实时操作系统将物理地址对应的串口设备透传至实时操作系统,以显示在实时操作系统的用户空间中。
本实施例中,可以使用VT-D技术将物理地址对应的串口设备透传至实时操作系统,并基于VT-D技术中的VT-D表来辅助串口设备的透传和管理,如VT-D表包括中断重定向表,用于管理串口设备的中断是转发至哪个虚拟环境对应的操作系统;又如,VT-D表包括I/O页表,用于存储基地址与物理地址之间的对应关系。
进一步的,实时操作系统的用户空间可以对应于文件系统中专门用于管理设备的文件夹,如系统根目录下的/mnt、/dev等文件夹。进一步的,可以在管理设备的文件夹中设置于串口设备对应的文件,作为访问串口设备的入口,也就相当于将串口设备显示在实时操作系统的用户空间中。
本实施例中,由于在虚拟环境中可以运行一个或多个实时操作系统、一个或多个非实时操作系统,可以将多个串口设备按需分配至一个或多个实时操作系统中,分别进行串口数据的处理,增加了串口数据的处理效率。
S130、所述实时操作系统初始化所述串口设备的配置,以使所述串口设备按照符合所述实时操作系统的所述配置工作。
一般的,串口设备中预置有寄存器,寄存器中可以存储一些设备参数,用于串口设备可以根据该设备参数进行运行。
本实施例中,所述实时操作系统按照预置的、符合实时运行要求的配置,设置所述串口设备中预置的寄存器。
在一实施例中,串口设备中预置的寄存器包括:时钟寄存器和波特率寄存器。
具体的,实时操作系统可以将波特率寄存器的值设置为第一值;实时操作系统将时钟寄存器的时钟设置为第二值;串口设备基于第一值和第二值,计算得到串口设备收发数据时所使用的波特率。
一般的,波特率的计算公式如下:
波特率=(serial clock frequency)/(16*divisor) (1)
其中,公式(1)中,serial clock frequency为时钟寄存器的时钟,即第二值,divisor为波特率除数,对应于第一值。
其中,divisor是一个22位数,它由16位整数和6位小数组成。波特率发生器使用这两个值组成的数字来决定位周期。通过带有小数波特率的除法器,在足够高的系统时钟速率下,串口设备可以产生所有标准的波特率,而误差很小。
因此,根据公式(1),当第一值为一常数值时,可以通过设置时钟寄存器来设置时钟,从而达到高波特率输出需求。
进一步的,可以通过设置时钟寄存器中N_VAL和M_VAL的两个值来确定时钟serialclock,其具体关系为:serial clock=(M_VAL/ N_VAL)*clk,其中,M_VAL<=N_VAL,clk为串口设备的默认时钟。
在又一实施例中,串口设备中预置的寄存器还包括:中断寄存器。
具体的,实时操作系统通过非实时操作系统设置中断寄存器,以开启串口设备的中断;在实时操作系统中设置中断定向表,中断定向表中存储中断对应的中断号,并指示中断号与实时操作系统的对应关系。
本实施例中,中断重定向表存储有中断对应的中断号,并指示中断号与实时操作系统的对应关系。具体的,当串口设备产生中断请求时,可以通过查找中断定向表,来重新定位中断转发至哪个实时操作系统。
S140、所述实时操作系统基于所述配置,使用所述串口设备进行数据的收发。
本实施例中,串口设备,如UART设备,默认支持115200bps波特率,而本发明可以配置为支持达到2M的高波特率,从而可以保证实时操作系统中串口设备传输串口数据的实时性。
另外,还可以配置串口设备的工作方式为中断方式,即在串口设备接收到数据或者需要发送数据时产生中断,在中断服务函数中读写串口设备的缓冲区实现数据传输。
本实施例中,步骤S140可以细化为如下步骤:
S141、当所述串口设备基于所述配置中设置的波特率接收到数据时,向中断控制器发送关于预置中断号对应的中断信号。
本实施例中,可以将波特率设备为2M的高波特率从而可以保证实时操作系统中串口设备传输串口数据的实时性。
本实施例中,中断控制器,又称为I/O高级中断控制器。
具体的,当串口设备接收到数据时,可以产生中断信号,该中断信号中包括中断号。进一步的,串口设备将该中断信号发送至中断控制器。
S142、所述中断控制器将所述中断信号格式化为中断请求信息,并将所述中断请求信息发送至所述硬件设备的中央处理器。
具体的,将中断请求信息发送至硬件设备的中央处理器的LAPIC 中,由该LAPIC通知该中央处理器处理该中断请求信息。
S143、所述中央处理器基于中断定向表中设置的、所述预置中断号与所述实时操作系统的对应关系,将所述中断信号转发至所述实时操作系统。
其中,中央处理器可以根据中断定向表获取中断号与实时操作系统的对应关系,将中断请求信息转发至中断号对应的实时操作系统。
S144、所述实时操作系统根据所述中断请求信息,调用预先注册的中断子函数对从所述串口设备接收的数据进行处理。
本实施例中,实时操作系统中预先设置有每一中断号对应的中断子函数,该中断子函数可以对从串口设备接收的数据进行处理。
S145、当所述实时操作系统发送数据时,将所述数据发送至在用户空间中显示的所述串口设备,所述串口设备基于所述配置中设置的波特率将所述数据发送至与所述串口设备连接的设备。
本实施例中,对于运行在虚拟环境中的实时操作系统而言,只有将中断号透传到实时操作系统,实时操作系统也才能随时监听该中断号的中断信号。
本实施例提供的技术方案中,在同一硬件设备的虚拟环境中,同时运行互相隔离的非实时操作系统和实时操作系统;将挂载在所述硬件设备的总线上的串口设备透传至所述实时操作系统;所述实时操作系统初始化所述串口设备的配置,以使所述串口设备按照符合所述实时操作系统的所述配置工作;所述实时操作系统基于所述配置,使用所述串口设备进行数据的收发,实现提高串口设备与虚拟环境中的实时操作系统的匹配度,如将串口设备配置为高波特率进行数据传输,并配置为以中断方式工作,保证实时操作系统中串口设备收发数据的实时性的技术效果。
实施例2
本申请提供一种串口通信装置,该串口通信装置可以通过软件和 /或硬件的方式实现,并集成在可进行在串口通信设备中。可选的,该串口通信设备包括但不限定于电脑、服务器等终端。本实施例中,以该串口通信设备为服务器为例进行详细说明。
图2为本发明实施例2中提供的一种串口通信装置的结构示意图,参照图2,该装置可以包括如下的结构:系统运行模块210、透传模块 220、配置模块230和数据收发模块240。
系统运行模块210,用于在同一硬件设备的虚拟环境中,同时运行互相隔离的非实时操作系统和实时操作系统。
透传模块220,用于将挂载在所述硬件设备的总线上的串口设备透传至所述实时操作系统。
配置模块230,用于所述实时操作系统初始化所述串口设备的配置,以使所述串口设备按照符合所述实时操作系统的所述配置工作。
数据收发模块240,用于所述实时操作系统基于所述配置,使用所述串口设备进行数据的收发。
本实施例提供的技术方案中,在同一硬件设备的虚拟环境中,同时运行互相隔离的非实时操作系统和实时操作系统;将挂载在所述硬件设备的总线上的串口设备透传至所述实时操作系统;所述实时操作系统初始化所述串口设备的配置,以使所述串口设备按照符合所述实时操作系统的所述配置工作;所述实时操作系统基于所述配置,使用所述串口设备进行数据的收发,实现提高串口设备与虚拟环境中的实时操作系统的匹配度,保证实时操作系统中串口设备收发数据的实时性的技术效果。
在上述技术方案的基础上,系统运行模块210,包括:
第一虚拟环境构建单元,用于在所述硬件设备上使用实时操作系统的镜像构建第一虚拟环境;
第一虚拟环境构建单元,用于在所述硬件设备上使用非实时操作系统的镜像构建第二虚拟环境,所述第一虚拟环境和所述第二虚拟环境互相隔离;
虚拟机环境启动单元,用于分别启动所述第一虚拟环境和所述第二虚拟环境,以同时运行互相隔离的所述实时操作系统和所述非实时操作系统。
在上述技术方案的基础上,透传模块220,包括:
基地址获取单元,用于所述实时操作系统获取挂载在总线上的串口设备的基地址。
地址转换单元,用于所述实时操作系统将所述基地址转换为所述串口设备对应的物理地址。
透传单元,用于所述实时操作系统将所述物理地址对应的所述串口设备透传至所述实时操作系统,以显示在所述实时操作系统的用户空间中。
在上述技术方案的基础上,配置模块230,包括:
寄存器配置单元,用于所述实时操作系统按照预置的、符合实时运行要求的配置,设置所述串口设备中预置的寄存器。
在上述技术方案的基础上,所述串口设备中预置的寄存器包括:时钟寄存器和波特率寄存器;
寄存器配置单元,包括:
第一值设置子单元,用于所述实时操作系统将所述波特率寄存器的值设置为第一值。
第二值设置子单元,用于所述实时操作系统将所述时钟寄存器的时钟设置为第二值。
波特率计算子单元,用于所述串口设备基于所述第一值和所述第二值,计算得到所述串口设备收发数据时所使用的波特率。
在上述技术方案的基础上,所述串口设备中预置的寄存器还包括:中断寄存器;
寄存器配置单元,包括:
中断开启子单元,用于所述实时操作系统设置所述中断寄存器,以开启所述串口设备的中断。
中断号存储子单元,用于在所述实时操作系统中设置中断定向表,所述中断定向表中存储所述中断对应的中断号,并指示所述中断号与所述实时操作系统的对应关系。
在上述技术方案的基础上,数据收发模块240,包括:
数据接收单元,用于当所述串口设备基于所述配置中设置的波特率接收到数据时,向中断控制器发送关于预置中断号对应的中断信号。
中断请求信息确定单元,用于中断控制器将所述中断信号格式化为中断请求信息,并将所述中断请求信息发送至所述硬件设备的中央处理器。
中断请求信息转发单元,用于所述中央处理器基于中断定向表中设置的、所述预置中断号与所述实时操作系统的对应关系,将所述中断请求信息转发至所述实时操作系统。
中断处理单元,用于所述实时操作系统根据所述中断请求信息,调用预先注册的中断子函数对从所述串口设备接收的数据进行处理。
数据发送单元,用于当所述实时操作系统发送数据时,将所述数据发送至在用户空间中显示的所述串口设备,所述串口设备基于所述配置中设置的波特率将所述数据发送至与所述串口设备连接的设备。
实施例3
图3为本发明实施例3提供的一种串口通信设备的结构示意图。如图3所示,该串口通信设备包括:处理器30、存储器31、输入装置32 以及输出装置33。该串口通信设备中处理器30的数量可以是一个或者多个,图3中以一个处理器30为例。该串口通信设备中存储器31的数量可以是一个或者多个,图3中以一个存储器31为例。该串口通信设备的处理器30、存储器31、输入装置32以及输出装置33可以通过总线或者其他方式连接,图3中以通过总线连接为例。该串口通信设备可以是电脑和服务器等。本实施例以串口通信设备为服务器进行详细说明,该服务器可以是独立服务器或集群服务器。
存储器31作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明任意实施例所述的串口通信方法对应的程序指令/模块(例如,串口通信装置中的系统运行模块210、透传模块220、配置模块230和数据收发模块240)。存储器31可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器31可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器31可进一步包括相对于处理器30远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置32可用于接收输入的数字或者字符信息,以及产生与串口通信设备的设置以及功能控制有关的键信号输入,还可以是用于获取图像的摄像头以及获取音频数据的拾音设备。输出装置33可以包括扬声器等音频设备。需要说明的是,输入装置32和输出装置33的具体组成可以根据实际情况设定。
处理器30通过运行存储在存储器31中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的串口通信方法。
实施例4
本发明实施例4还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种串口通信方法,包括:
在同一硬件设备的虚拟环境中,同时运行互相隔离的非实时操作系统和实时操作系统;
将挂载在所述硬件设备的总线上的串口设备透传至所述实时操作系统;
所述实时操作系统初始化所述串口设备的配置,以使所述串口设备按照符合所述实时操作系统的所述配置工作;
所述实时操作系统基于所述配置,使用所述串口设备进行数据的收发。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的串口通信方法操作,还可以执行本发明任意实施例所提供的串口通信方法中的相关操作,且具备相应的功能和有益效果。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存 (FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备 (可以是机器人,个人计算机,服务器,或者网络设备等)执行本发明任意实施例所述的串口通信方法。
值得注意的是,上述串口通信装置中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“在一实施例中”、“在又一实施例中”、“示例性的”或“在具体的实施例中”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
虽然,上文中已经用一般性说明、具体实施方式及试验,对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
Claims (8)
1.一种串口通信方法,其特征在于,包括:
在同一硬件设备的虚拟环境中,同时运行互相隔离的非实时操作系统和实时操作系统;
将挂载在所述硬件设备的总线上的串口设备透传至所述实时操作系统,包括:
所述非实时操作系统获取挂载在所述总线上的串口设备的基地址;
所述实时操作系统将所述基地址转换为所述串口设备对应的物理地址;
所述实时操作系统将所述物理地址对应的所述串口设备透传至所述实时操作系统,以显示在所述实时操作系统的用户空间中;
所述实时操作系统初始化所述串口设备的配置,以使所述串口设备按照符合所述实时操作系统的所述配置工作;
所述实时操作系统基于所述配置,使用所述串口设备进行数据的收发,包括:
当所述串口设备基于所述配置中设置的波特率接收到数据时,向中断控制器发送关于预置中断号对应的中断信号;
所述中断控制器将所述中断信号格式化为中断请求信息,并将所述中断请求信息发送至所述硬件设备的中央处理器;
所述中央处理器基于中断定向表中设置的、所述预置中断号与所述实时操作系统的对应关系,将所述中断请求信息转发至所述实时操作系统;
所述实时操作系统根据所述中断请求信息,调用预先注册的中断子函数对从所述串口设备接收的数据进行处理;
当所述实时操作系统发送数据时,将所述数据发送至在所述用户空间中显示的所述串口设备,所述串口设备基于所述配置中设置的波特率将所述数据发送至与所述串口设备连接的设备。
2.根据权利要求1所述的串口通信方法,其特征在于,所述在同一硬件设备的虚拟环境中,同时运行互相隔离的非实时操作系统和实时操作系统,包括:
在所述硬件设备上使用实时操作系统的镜像构建第一虚拟环境;
在所述硬件设备上使用非实时操作系统的镜像构建第二虚拟环境,所述第一虚拟环境和所述第二虚拟环境互相隔离;
分别启动所述第一虚拟环境和所述第二虚拟环境,以同时运行互相隔离的所述实时操作系统和所述非实时操作系统。
3.根据权利要求1所述的串口通信方法,其特征在于,所述实时操作系统初始化所述串口设备的配置,以使所述串口设备按照符合所述实时操作系统的所述配置工作,包括:
所述实时操作系统按照预置的、符合实时运行要求的配置,设置所述串口设备中预置的寄存器。
4.根据权利要求3所述的串口通信方法,其特征在于,所述串口设备中预置的寄存器包括:时钟寄存器和波特率寄存器;
所述实时操作系统按照预置的、符合实时运行要求的配置,设置所述串口设备中预置的寄存器,包括:
所述实时操作系统将所述波特率寄存器的值设置为第一值;
所述实时操作系统将所述时钟寄存器的时钟设置为第二值;
所述串口设备基于所述第一值和所述第二值,计算得到所述串口设备收发数据时所使用的波特率。
5.根据权利要求3所述的串口通信方法,其特征在于,所述串口设备中预置的寄存器还包括:中断寄存器;
所述实时操作系统按照预置的、符合实时运行要求的配置,设置所述串口设备中预置的寄存器,包括:
所述实时操作系统设置所述中断寄存器,以开启所述串口设备的中断;
在所述实时操作系统中设置中断定向表,所述中断定向表中存储所述中断对应的中断号,并指示所述中断号与所述实时操作系统的对应关系。
6.一种串口通信装置,其特征在于,包括:
系统运行模块,用于在同一硬件设备的虚拟环境中,同时运行互相隔离的非实时操作系统和实时操作系统;
透传模块,用于将挂载在所述硬件设备的总线上的串口设备透传至所述实时操作系统,包括:
基地址获取单元,用于所述实时操作系统获取挂载在所述总线上的串口设备的基地址;
地址转换单元,用于所述实时操作系统将所述基地址转换为所述串口设备对应的物理地址;
透传单元,用于所述实时操作系统将所述物理地址对应的所述串口设备透传至所述实时操作系统,以显示在所述实时操作系统的用户空间中;
配置模块,用于所述实时操作系统初始化所述串口设备的配置,以使所述串口设备按照符合所述实时操作系统的所述配置工作;
数据收发模块,用于所述实时操作系统基于所述配置,使用所述串口设备进行数据的收发,包括:
数据接收单元,用于当所述串口设备基于所述配置中设置的波特率接收到数据时,向中断控制器发送关于预置中断号对应的中断信号;
中断请求信息确定单元,用于所述中断控制器将所述中断信号格式化为中断请求信息,并将所述中断请求信息发送至所述硬件设备的中央处理器;
中断请求信息转发单元,用于所述中央处理器基于中断定向表中设置的、所述预置中断号与所述实时操作系统的对应关系,将所述中断请求信息转发至所述实时操作系统;
中断处理单元,用于所述实时操作系统根据所述中断请求信息,调用预先注册的中断子函数对从所述串口设备接收的数据进行处理;
数据发送单元,用于当所述实时操作系统发送数据时,将所述数据发送至在用户空间中显示的所述串口设备,所述串口设备基于所述配置中设置的波特率将所述数据发送至与所述串口设备连接的设备。
7.一种串口通信设备,其特征在于,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的串口通信方法。
8.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-5中任一所述的串口通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110431969.4A CN113157624B (zh) | 2021-04-21 | 2021-04-21 | 一种串口通信方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110431969.4A CN113157624B (zh) | 2021-04-21 | 2021-04-21 | 一种串口通信方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113157624A CN113157624A (zh) | 2021-07-23 |
CN113157624B true CN113157624B (zh) | 2021-12-07 |
Family
ID=76867811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110431969.4A Active CN113157624B (zh) | 2021-04-21 | 2021-04-21 | 一种串口通信方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113157624B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835755B (zh) * | 2021-09-24 | 2023-08-22 | 天津津航计算技术研究所 | 一种无操作系统环境下串口控制台实现方法 |
CN116302141B (zh) * | 2023-05-12 | 2023-09-05 | 苏州浪潮智能科技有限公司 | 串口切换方法、芯片及串口切换系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520738A (zh) * | 2008-02-27 | 2009-09-02 | 黄歆媚 | 基于设备访存管理技术的虚拟机系统及其设备访问方法 |
CN101751284A (zh) * | 2009-12-25 | 2010-06-23 | 北京航空航天大学 | 一种分布式虚拟机监控器的i/o资源调度方法 |
CN102804143A (zh) * | 2010-02-05 | 2012-11-28 | 超威半导体公司 | 中断虚拟化 |
CN105159742A (zh) * | 2015-07-06 | 2015-12-16 | 北京星网锐捷网络技术有限公司 | 一种虚拟机pci设备透传方法和系统 |
CN108073451A (zh) * | 2017-12-20 | 2018-05-25 | 北京东土科技股份有限公司 | 一种多核cpu上异构操作系统间中断处理方法及装置 |
CN109284178A (zh) * | 2017-07-21 | 2019-01-29 | 中兴通讯股份有限公司 | 一种基于kvm虚拟化的中断透传方法及装置 |
CN111737180A (zh) * | 2020-06-08 | 2020-10-02 | 湖北三江航天万峰科技发展有限公司 | 一种基于pci总线的串口驱动系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10552194B2 (en) * | 2017-10-23 | 2020-02-04 | Microsoft Technology Licensing, Llc | Virtualization operations for directly assigned devices |
-
2021
- 2021-04-21 CN CN202110431969.4A patent/CN113157624B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520738A (zh) * | 2008-02-27 | 2009-09-02 | 黄歆媚 | 基于设备访存管理技术的虚拟机系统及其设备访问方法 |
CN101751284A (zh) * | 2009-12-25 | 2010-06-23 | 北京航空航天大学 | 一种分布式虚拟机监控器的i/o资源调度方法 |
CN102804143A (zh) * | 2010-02-05 | 2012-11-28 | 超威半导体公司 | 中断虚拟化 |
CN105159742A (zh) * | 2015-07-06 | 2015-12-16 | 北京星网锐捷网络技术有限公司 | 一种虚拟机pci设备透传方法和系统 |
CN109284178A (zh) * | 2017-07-21 | 2019-01-29 | 中兴通讯股份有限公司 | 一种基于kvm虚拟化的中断透传方法及装置 |
CN108073451A (zh) * | 2017-12-20 | 2018-05-25 | 北京东土科技股份有限公司 | 一种多核cpu上异构操作系统间中断处理方法及装置 |
CN111737180A (zh) * | 2020-06-08 | 2020-10-02 | 湖北三江航天万峰科技发展有限公司 | 一种基于pci总线的串口驱动系统 |
Non-Patent Citations (1)
Title |
---|
一种基于VT-d技术的虚拟机安全隔离框架研究;杨永娇等;《信息网络安全》;20151110(第11期);第13-20页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113157624A (zh) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110770708B (zh) | 用于硬件虚拟化的方法和装置 | |
CN107209681B (zh) | 一种存储设备访问方法、装置和系统 | |
JP5608243B2 (ja) | 仮想化環境においてi/o処理を行う方法および装置 | |
CN113157624B (zh) | 一种串口通信方法、装置、设备及存储介质 | |
JP6004608B2 (ja) | ホストusbアダプタを仮想化するための方法、装置、およびコンピュータ・プログラム(ホストusbアダプタの仮想化) | |
US9336032B2 (en) | Zoning data to a virtual machine | |
EP3559806B1 (en) | Accelerating para-virtualization network interface using direct memory access (dma) remapping | |
CN113867993B (zh) | 虚拟化的rdma方法、系统、存储介质及电子设备 | |
CN113360422B (zh) | 一种异构系统中实时操作系统设备收发数据的方法及装置 | |
KR101716715B1 (ko) | 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치 | |
US20220050795A1 (en) | Data processing method, apparatus, and device | |
CN113806006A (zh) | 一种异构指令集架构下异常或中断的处理方法、装置 | |
CN103092676A (zh) | 虚拟机集群的模拟输入输出方法、装置及系统 | |
CN115599502A (zh) | 基于虚拟机监控器的rtos网络共享方法 | |
US10785120B2 (en) | Systems and methods for extending link layer discovery over virtual Ethernet bridges | |
US10164911B2 (en) | Shim layer used with a virtual machine virtual NIC and a hardware platform physical NIC | |
CN113312141B (zh) | 用于卸载串行端口模拟的计算机系统、存储介质和方法 | |
US11249934B2 (en) | Data access method and apparatus | |
WO2017026931A1 (en) | Implementing input/output in a virtualized environment | |
KR101284791B1 (ko) | 휴대용 단말기를 이용한 컴퓨터 운영체제 구현 방법 및 그 장치 | |
CN203759590U (zh) | 一种飞腾平台远程监控与操作扩展卡 | |
CN117472805B (zh) | 一种基于virtio的虚拟化IO设备内存管理系统 | |
WO2023044861A1 (en) | Concept for providing access to remote memory | |
CN117520215A (zh) | 一种缺页处理方法和相关设备 | |
JP2017010070A (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 | ||
GR01 | Patent grant |