本发明涉及一种多系统间的通信仿真方法,属于无线通信。
背景技术:
1、在通信领域常用的硬件平台中,通常使用ipc配合pci/pcie总线作为实现多系统间硬件级通信的基本结构。
2、它们的功能主要包括:
3、一、使用ipc完成不同系统间的中断相互通知(不同的中断号代表不同的含义,软件层面将其用作消息编号)。
4、二、通知者将通知内容写入本地运行内存sram或ddr,被通知者通过pci/pcie总线寻址对方的运行内存sram或ddr,读取对方写入的数据(软件层面将其作为消息内容)。
5、通过使用这套机制,可以实现不同系统间事件的通知、数据同步等业务行为。目前软件领域有一种称为vhost-user的基于linux的开源库。vhost-user主要用于用户空间两个进程之间的通信,其采用共享内存作为数据面的承载,采用socket作为控制面的承载。vhost-user在设计之初其目的在于支撑云端网络应用的运行,最典型的使用场景是配合使用dpdk开发的快速转发后端,为前端的云应用提供更加高效的网络报文转发性能。vhost-user开源库并不适合用于仿真这种基于硬件的系统间通信机制,主要体现在如下几个方面的局限性:
6、1.基于vhost-user开发的前端接口在控制面是linux系统中一种类型为virtio的网络接口,在数据面是基于vring api数据交互方式。此种接口类型通常用于开发专用应用程序,并不适用于常见的网络应用程序,如ping、iperf等。而电信产品的仿真系统中需要广泛支持此类应用程序。
7、2.数据平面采用vring api方式封装了底层的共享内存机制,此种机制虽不复杂,但无法做到与原系统的数据面底层无缝衔接。需要较大的工作量完成移植工作,并且破坏了原系统结构,大幅降低了仿真相似度。
8、通信领域的产品研发,通常硬件研发进度要晚于软件开发的进度,因此需要一种软件仿真手段,在硬件就位前最大限度仿真出硬件行为,用于验证软件逻辑的正确性,提高软硬件集成效率。
技术实现思路
1、本发明所要解决的技术问题是克服现有技术的缺陷,提供一种软件仿真多系统间通信的方法和装置。
2、为解决上述技术问题,本发明采用的技术方案如下:
3、一种软件仿真多系统间通信的方法,
4、宿主机上运行下位机软件,虚拟机上运行上位机系统,虚拟机内部配置运行软件模拟pcie设备,在上位机系统中运行有pcie设备驱动程序,用于发现和驱动软件模拟pcie设备;
5、将预分配的宿主机的共享内存作为上位机运行内存;
6、软件模拟pcie设备支持pcie设备的中断以及pcie地址寻址,至少包括一基地址寄存器,基地址寄存器映射ipc中断寄存器空间及共享下位机内存;
7、下位机软件通过所述共享内存完成对上位机运行内存任意位置的访问操作;
8、上位机系统对于共享下位机内存的访问及上位机系统与下位机软件之间的中断通知均经过软件模拟pcie设备参与完成。
9、进一步地,基地址寄存器的实际内存空间是由软件模拟pcie设备自身在宿主机上以共享内存方式申请得到。
10、进一步地,pcie设备驱动程序通过内存重映射的方式将共享内存的首地址映射为上位机的虚拟地址供上位机系统访问。
11、进一步地,由上位机系统发起的访问共享下位机内存的步骤为:
12、11)上位机系统携带pcie设备内存虚拟地址及操作数value发起读写访问共享下位机内存;
13、12)软件模拟pcie设备中的pcie地址转换单元将上位机系统携带的内存虚拟地址转换为以共享下位机内存为对象的地址偏移量及操作数的方式进行读写;根据上位机系统对pcie设备读写访问目标的数据类型,pcie地址转换单元对共享下位机内存执行对应的字节长度的读写访问操作;
14、13)下位机软件采用共享内存标准读写访问方式对共享下位机内存进行读写访问。
15、进一步地,由下位机发起的访问共享下位机内存的步骤为:下位机软件采用共享内存标准读写访问方式对共享下位机内存进行读写访问。
16、进一步地,由下位机软件发起的访问上位机运行内存的步骤为:
17、31)上位机系统直接在上位机运行内存的物理地址处写入数据;
18、32)上位机系统将物理地址的值,写入到上位机内部pcie设备内存虚拟地址的特定地址;
19、33)软件模拟pcie设备将该特定地址进行转换,转换为共享下位机内存的特定地址偏移量,并将物理地址的值,写入到共享下位机内存的特定地址偏移量中;
20、34)下位机软件直接通过访问共享下位机内存的特定地址偏移量,获取到物理地址的值;
21、35)下位机软件通过采用共享内存标准访问方式获取上位机运行内存的虚拟机基地址,将读取到的物理地址转换为虚拟地址后,使用虚拟地址读取上位机系统写入的数据。
22、进一步地,由上位机系统发起的上位机运行内存访问的步骤为:上位机系统直接在上位机运行内存的物理地址处写入数据。
23、进一步地,由上位机系统发起的中断通知下位机软件的步骤为:软件模拟pcie设备监听上位机系统对ipc中断寄存器的写入行为,如检测到写入,则将相应的写入位转换成一个预定义消息,通过socket渠道发送给下位机软件。
24、进一步地,由下位机软件发起的中断通知上位机系统的步骤为:软件模拟pcie设备在socket渠道接收到一个由下位机软件发来的预定义消息,将其解析为对应的中断信号,并发起一次pcie中断通知上位机系统。
25、一种软件仿真多系统间通信的装置,包括:
26、运行在虚拟机上的上位机系统,将预分配的宿主机的共享内存作为上位机运行内存;在上位机系统中运行有pcie设备驱动程序;
27、配置运行在虚拟机内部的软件模拟pcie设备,由pcie设备驱动程序发现和驱动;软件模拟pcie设备支持pcie设备的中断以及pcie地址寻址,至少包括一基地址寄存器,基地址寄存器映射ipc中断寄存器空间及共享下位机内存;
28、运行在宿主机上的下位机软件,下位机软件通过所述共享内存完成对上位机运行内存任意位置的访问操作;
29、上位机系统对于共享下位机内存的访问及上位机系统与下位机软件之间的中断通知均经过软件模拟pcie设备参与完成。
30、本发明所达到的有益效果:
31、本发明充分考虑了仿真环境搭建的工程可实现性、仿真程度、仿真系统的性能损耗、开发工作量等多方面因素,提出了一种以套接字配合共享内存及基于虚拟机的定制化软件模拟pcie设备的方式来搭建仿真环境,使用套接字来传递控制消息,使用一块共享内存模拟sram及ipc寄存器的行为(sram在被仿真系统中用作下位机的运行内存),使用另一块共享内存用于模拟ddr的行为(被仿真系统中用作上位机的运行内存),使用基于虚拟机的软件模拟pcie设备用于仿真原系统中pcie总线控制器的行为(被仿真系统中用于实现上位机系统与下位机软件之间的相互寻址),完美解决了不同系统间的中断通知、内存共享的问题,同时在接口层面能够做到与真实系统内部软件设计无缝结合,大幅降低了软件集成难度与工作量,提高了软硬件集成效率和仿真相似度。本发明的方法尤其非常适合于无线通信等领域的上下位机硬件互联模型的软件仿真,用于在硬件缺乏的情况下,实现仿真多系统间的中断通知与数据通信。