专栏算法工具链J6X PCIe sample

J6X PCIe sample

新手村2025-07-30
48
0

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. 流程说明

发送方和接收方的流程如下图:

../../_images/sample_process.png

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:

算法工具链
征程6社区征文技术深度解析官方教程
评论0
0/1000