01串口及虚拟化需求背景
串行接口(简称串口)是采用串行通信协议的扩展接口,核心功能为数据传输,包括操作系统启动日志输出、故障信息上报及用户操作指令下发等场景。硬件层面,多数控制器板载UART(通用异步收发器)数量通常仅1个,且部分服务器主板未对外开放串口,需通过主板针脚或USB-转-串口转换器引出。在多操作系统的嵌入式实时虚拟机场景中,ZVM及各客户OS均需独立串口用于调试,物理串口数量不足的问题尤为突出,因此串口虚拟化功能的开发具有重要工程意义。
ZVM串口虚拟化技术本质是基于物理串口的资源复用方案,通过在有限物理串口硬件基础上,为各客户OS模拟出与真实硬件串口功能一致的虚拟串口。ZVM作为核心控制层,构建数据中转机制,按需建立客户OS与物理串口间的数据传输通路,实现多客户OS对单一物理串口的高效共享,无需额外配置即可保障各OS间的操作隔离。
02核心技术机制:模拟与转发
ZVM 串口虚拟化依赖“模拟”与“转发”两大机制的协同,确保客户 OS 在无需感知差异的情况下稳定运行。
(一)模拟机制
模拟机制的核心是ZVM对物理串口的功能仿真,通过精准拦截客户OS对串口寄存器的所有操作,模拟物理串口的响应行为,使客户OS无法感知虚拟串口与物理串口的差异。
RX 数据接收: ZVM先缓存物理串口接收的数据流,待数据达到预设阈值后,主动向客户OS发送“数据就绪”中断信号。客户OS响应中断并执行读操作时,ZVM直接将缓存数据传输至客户OS,全程模拟物理串口的数据接收流程,如图1所示。
图1. RX 模拟示意图
TX 数据发送: 客户OS下发的发送数据会被ZVM实时拦截并缓存,随后ZVM向客户OS返回“发送成功”的反馈信号,保障客户OS可连续发起数据发送操作。缓存完成后,ZVM再通过物理串口将数据转发至目标设备,实现发送流程的透明化仿真,如图2所示。
图2. TX 模拟示意图
(二)转发机制
转发机制基于物理资源分时复用思想,由ZVM统一掌控物理串口的访问权限,根据用户指令实现物理串口与目标客户OS的动态连接与断开。
原文转自:公众号【嵌入式计算湖南省重点实验室】