1. 功能概述¶
本文的sample主要实现了两个设备之间的数据传输的演示,此处主要介绍该sample的实现及使用方法。
1.1. 软件架构说明¶
本sample基于PCIe的High Level API (libhbpciehl.so) 来实现,High Level API 基于 Low Level API(libhbpcie.so),抽象出通用的 topic / subscribe / publish 概念,屏蔽不同系列地平线芯片的硬件差异,让用户能够更加便捷的使用PCIe进行数据通信。

1.2. 代码位置及目录结构¶
板上部署: /app/sample/S83_Sample/S83E02_Communication/pcie_sample/bin/
1.3. 流程说明¶
发送方和接收方的流程如下图:

2. 编译¶
2.1. 编译环境¶
本sample的编译环境使用SDK中的build工具,请参考:Build 环境建立 。
2.2. 编译说明¶
本sample主要依赖libhbpciehl提供的头文件:
编译依赖的库有如下:
编译命令:
3. 运行¶
3.1. 支持平台¶
支持 J6X Matrix。
3.2. 硬件环境搭建¶
将两台Matrix(一台作为EP,一台作为RC)通过SlimSAS线连接,分别加载EP和RC的驱动后即可进行sample的测试。
3.3. 运行指南¶
3.3.1. 两个设备之间单向数据传输¶
3.3.2. 两个设备之间双向数据传输¶
3.3.3. 两个设备之间数据带宽测试¶
EP发送,RC接收场景:
RC发送,EP接收场景:
3.4. 运行参数说明¶
-c 对端的chip ID
-p 通过指定topic ID向对端发布数据
-s 通过指定topic ID向对端订阅数据
-u 使用用户申请的buffer来进行数据发送
-l 订阅以及发送数据的数量
-v 对收发数据进行校验
-t 显示传输速度
-h 获取帮助信息
可通过-h参数查看帮助:
3.5. 运行结果说明¶
3.5.1. 两个设备之间单向数据传输¶
RC侧测试log:
EP侧测试log:
测试中EP向RC传输了2包数据,执行结果无异常log输出且返回值为0则表示数据传输成功。
3.5.2. 两个设备之间双向数据传输¶
RC侧测试log:
EP侧测试log:
测试中EP和RC各自向对端传输了2包数据,执行结果无异常log输出且返回值为0则表示数据传输成功。
3.5.3. 两个设备之间数据带宽测试¶
EP发送,RC接收场景
RC侧测试log:
EP侧测试log: