基于PCIe的双向数据传输方法、系统及设备与流程
本发明涉及数据传输,特别是涉及基于pcie的双向数据传输方法、系统及设备。
背景技术:
1、在智能驾驶与智能机器人等嵌入式实时控制系统的研发测试过程中,数据采集与数据回灌是两项基础且关键的验证手段。前者负责从各类被测控制器中实时提取算法输出,例如自动驾驶域控制器、机器人运动控制器或感知融合单元,以及传感器中间层数据和视频流等有效载荷,供上位机离线分析与问题定位;后者则通过向被测控制器重新注入历史路采数据或虚拟仿真序列,推动其应用层软件按原始时序重新运行,以实施版本回归、缺陷复现及极限工况覆盖测试。
2、现有技术中,实现上述数据交互的常用物理层方案包括以太网、usb总线、专用高速采集卡及各类现场总线。然而,这些方案在面对高码率数据流传输时,普遍存在带宽受限、处理器占用率偏高、传输时延抖动显著等问题,且在多进程并发访问场景下缺乏有效的资源隔离机制,亦难以支撑采集与回灌任务的双向全双工同步开展。针对pcie接口的高速率与低延迟特性,已有技术尝试将其引入上述测试领域,然而这些方案通常将pcie作为硬件接口或高速总线使用,而未考虑采集与回灌双任务并行时的协同调度问题。实际应用中,当上下行数据流共享同一pcie链路时,普遍存在物理内存争用、队列缓存拥塞、业务层直接操作物理地址所引入的安全风险、链路瞬态故障后恢复机制响应滞后,以及双向有效带宽相互抑制等系统性缺陷。
3、尤其值得关注的是,当被测控制器运行带安全约束的实时操作系统,例如qnx、nvidia drive os safety或vxworks时,其系统级内存管理单元smmu/iommu会对pcie入站事务实施基于静态白名单的访问控制。仅某一段受管类型内存(typed memory)对外部pcie设备开放,且通常仅开放读权限;外部pcie设备对域控制器物理内存的主动写入(cpu mmio写或主机侧dma写)会被 smmu静默丢弃。该访问控制策略直接导致外部设备通过pcie主动向被测控制器下发回灌数据的传统实现方式失效。
4、综上所述,亟需一种双向数据传输解决方案,能够在不依赖被测系统端写入许可的前提下,通过单条pcie链路协同完成数据采集与回灌,并克服并发运行时的内存竞争、队列拥塞、带宽串扰及故障恢复脆弱性等系列技术难题。
技术实现思路
1、针对现有技术存在的问题,本发明提供了一种基于pcie的双向数据传输方法、系统及设备,可以实现双向数据的高带宽、稳定安全传输,为智能驾驶等研发测试系统中的数据采集与回灌过程提供高效、安全、稳健的数据传输保障。
2、本发明的技术方案为:
3、一种基于pcie的双向数据传输方法,应用于配置有受管内存池的pcie根复合体和pcie端点之间,其特征在于,所述方法包括:
4、pcie端点与pcie根复合体通过pcie映射控制区完成握手;
5、创建第一数据传输逻辑通道和第二数据传输逻辑通道;
6、在第一数据传输方向,pcie端点发布包含第一待传输数据源地址与长度的第一控制块;pcie根复合体根据所述第一控制块,以pcie读方式从所述pcie端点拉取所述第一待传输数据并写入其受管内存池;
7、在第二数据传输方向,pcie根复合体发布包含第二待传输数据源地址与长度的第二控制块;pcie端点根据所述第二控制块,以pcie读方式从所述pcie根复合体的受管内存池拉取所述第二待传输数据。
8、优选的,通过同一pcie链路拉取第一待传输数据和第二待传输数据,且第一数据传输方向和第二数据传输方向各自独立地进行回调释放、反压处理、错误恢复。
9、优选的,将所述第一控制块与所述第二控制块布置于所述pcie映射控制区中彼此分离的偏移区域。
10、优选的,所述方法还包括:对所述第二待传输数据进行受管内存范围校验、长度校验或对齐校验中的至少一种;校验通过后,将所述数据的源地址及长度信息写入所述第二控制块。
11、优选的,所述pcie端点与所述pcie根复合体握手时,双方各自对配置数据计算摘要值并写入所述pcie映射控制区,之后再写入握手就绪标识字;任一方轮询到标识字后,比对本地摘要与对端摘要,若一致则握手成功进入数据面收发状态,若不一致则拒绝建链。
12、优选的,对于所述第二待传输数据,若其长度小于预设阈值,则将多个数据项批量写入所述pcie映射控制区的暂存区域,并通过所述第二控制块一次性发布所述多个数据项;若其长度大于或等于所述预设阈值,则直接提交所述第二待传输数据的物理地址及长度信息。
13、优选的所述方法还包括活性检测步骤: 所述pcie端点与所述pcie根复合体通过所述pcie映射控制区的心跳子区域持续监控对端活性;更新方将心跳信息拆分为计数字段和代次字段,先更新所述计数字段,插入内存屏障,再更新所述代次字段;观察方轮询所述计数字段和所述代次字段,根据两字段变化判断对端存活、重启或失效。
14、优选的,所述pcie端点与所述pcie根复合体分别独立执行步骤:向用户进程提供逻辑通道接口,供用户进程提交待传输数据的描述信息,并配置数据类型、最大帧大小及反压策略;以虚拟地址、元数据或错误码向用户进程返回数据,并通过回调机制通知用户进程数据就绪;用户进程在回调函数中通过所述虚拟地址访问数据,回调返回后自动释放对应的缓冲区空间。
15、优选的,pcie端点根据所述第二待传输数据的数据长度分配可变大小dma接收环空间,若环尾剩余空间不足以容纳所述第二待传输数据,则写入跳过标记并从环首继续分配;优选的,pcie端点通过位于可缓存共享内存区域的消费者游标推进,以释放写合并映射的dma数据区域中已消费的空间;所述可缓存共享内存区域与所述dma接收环空间为不同内存区域。
16、一种基于pcie的双向数据传输系统,包括配置有受管内存池的pcie根复合体、pcie端点、pcie映射控制区,以及连接所述pcie端点与所述pcie根复合体的pcie链路,其中:
17、pcie映射控制区包括握手子区域、第一控制块和第二控制块;
18、pcie端点包括:
19、第一客户端库,用于创建第一数据传输逻辑通道;
20、第一拉取模块,用于以pcie读方式从所述pcie根复合体受管内存池拉取第二待传输数据;
21、第一守护进程,用于将第一待传输数据的源地址与长度写入第一控制块;以及根据所述第二控制块启动第一拉取模块。
22、pcie根复合体包括:
23、第二客户端库,用于创建第二数据传输逻辑通道;
24、第二拉取模块,用于以pcie读方式从所述pcie端点拉取第一待传输数据并写入其受管内存池;
25、第二守护进程,用于创建第二数据传输逻辑通道,将第二方向待传输数据的源地址与长度写入第二控制块;以及根据所述第一控制块启动第二拉取模块。
26、优选的,通过同一pcie链路拉取所述第一待传输数据和第二待传输数据;所述第一守护进程和所述第二守护进程各自独立地进行回调释放、反压处理、错误恢复。
27、优选的,所述pcie映射控制区中的所述第一控制块与所述第二控制块位于彼此分离的偏移区域。
28、优选的,系统还包括:
29、握手模块,用于在所述pcie端点与所述pcie根复合体握手时,双方各自对配置数据计算摘要值并写入所述pcie映射控制区,之后再写入握手就绪标识字;和用于任一方轮询到标识字后,比对本地摘要与对端摘要,若一致则握手成功进入数据面收发状态,若不一致则拒绝建链。
30、优选的,所述pcie映射控制区还包括心跳子区域;系统还包括活性监测模块,用于通过所述心跳子区域持续监控对端活性;更新方将心跳信息拆分为计数字段和代次字段,先更新所述计数字段,插入内存屏障,再更新所述代次字段;观察方轮询所述计数字段和所述代次字段,根据两字段变化判断对端存活、重启或失效。
31、一种基于pcie双向数据传输的pcie端点设备,包括:
32、pcie接口,用于通过pcie链路连接所述pcie根复合体设备;
33、第一客户端库,用于创建第一数据传输逻辑通道;
34、第一拉取模块,用于以pcie读方式从所述pcie根复合体受管内存池拉取第二待传输数据;
35、第一守护进程,用于将第一待传输数据的源地址与长度写入第一控制块;以及根据所述第二控制块启动第一拉取模块。
36、优选的,还包括pcie映射控制区,所述pcie映射控制区包括位于不同偏移区域的握手子区域、心跳子区域、第一控制块和第二控制块。
37、优选的,第一客户端库还用于:对第一数据传输方向执行回调释放、反压处理和错误恢复;向用户进程提供逻辑通道接口,供用户进程提交待传输数据的描述信息,并配置数据类型、最大帧大小及反压策略;以虚拟地址、元数据或错误码向用户进程返回数据,并通过回调机制通知用户进程数据就绪;使用户进程在回调函数中通过所述虚拟地址访问数据,回调返回后自动释放对应的缓冲区空间。
38、优选的,该设备还包括:高速存储模块、计算模块、电源模块和控制面模块。
39、优选的,可变大小dma接收环,用于根据所述第二待传输数据的数据长度分配空间,若环尾剩余空间不足以容纳所述第二待传输数据,则写入跳过标记并从环首继续分配。优选的,所述第一客户端库在用户回调完成后,通过位于可缓存共享内存区域的消费者游标推进,以释放写合并映射的dma数据区域中已消费的空间;所述可缓存共享内存区域与所述dma接收环空间为不同内存区域。
40、一种基于pcie双向数据传输的pcie根复合体设备,包括:
41、pcie接口,用于通过pcie链路连接pcie端点设备;
42、第二客户端库,用于创建第二数据传输逻辑通道;
43、第二拉取模块,用于以pcie读方式从所述pcie端点拉取第一待传输数据并写入其受管内存池;
44、第二守护进程,将第二方向待传输数据的源地址与长度写入pcie映射控制区的第二控制块;以及根据所述pcie映射控制区的第一控制块发启动第二拉取模块;
45、受管内存池,用于存储第二方向传输数据时的待传输数据和第一方向传输数据时接收的数据。
46、优选的,还包括校验模块;所述校验模块用于对第二待传输数据进行受管内存范围校验、长度校验或对齐校验中的至少一种,校验通过后,将第二方向待传输数据的源地址与长度写入pcie映射控制区的第二控制块。
47、优选的,所述第二客户端库还用于:对第二数据传输方向执行回调释放、反压处理和错误恢复;向用户进程提供逻辑通道接口,供用户进程提交待传输数据的描述信息,并配置数据类型、最大帧大小及反压策略;以虚拟地址、元数据或错误码向用户进程返回数据,并通过回调机制通知用户进程数据就绪;使用户进程在回调函数中通过所述虚拟地址访问数据,回调返回后自动释放对应的缓冲区空间。
48、优选的,还包括第二待传输数据预处理模块,用于:将多个长度小于预设阈值的第二待传输数据项批量写入所述pcie映射控制区的暂存区域,并通过所述第二控制块一次性发布所述多个数据项;将长度大于或等于所述预设阈值的第二传输数据的物理地址及长度直接通过所述第二控制块发布。
49、本发明的有益效果为:
50、在pcie端点不具备对根复合体受管内存写入权限的约束下,本发明通过接收侧主动发起pcie读事务的方式,绕过内存管理单元的写入拦截,无需修改设备底层系统配置与安全白名单,即可实现高速、双向、全双工的数据采集与数据回灌同步传输,可适配搭载安全实时操作系统的嵌入式控制设备测试场景。同时,本发明基于单条pcie链路支撑双向业务并发运行,省去了多通道传输所需的冗余硬件与布线结构,简化了设备架构,降低了硬件成本与集成复杂度。
51、本发明对双向传输控制信息进行分区独立存储与分路独立管控,实现两个方向控制信息的物理与逻辑双重隔离,两个方向各自独立维护传输状态与流量管控参数,避免了传统方案中双向数据流并发时的内存竞争、队列拥塞、用户进程直接接触物理地址、错误恢复不确定以及吞吐互相干扰等问题,提升了双向数据传输的实时性、确定性与运行稳定性。
52、此外,本发明通过守护进程统一校验受管内存访问,确保dma操作指向合法的受管内存地址范围,拦截非法dma访问与误操作行为,提升了数据交互的安全性。上层应用通过标准化逻辑通道接口完成数据交互,以虚拟地址访问数据,无需直接操作硬件寄存器或物理地址,与底层硬件传输机制解耦,降低了应用开发与维护成本。本发明支持流量反压调控、异常状态检测与链路故障恢复能力,可适配长时间、高负荷的台架闭环测试场景,提升了测试系统的长期运行可靠性与工况覆盖能力。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com