pcie link training

news2024/9/28 7:23:04

有机会用瑞芯微做EP,X86做RC ,调试两者建立连接。

环境配置

如图所示,两块单板,期望瑞芯微做EP,X86做RC,两者能够互联。

LINK 配置过程

主要配置瑞芯微

瑞芯微的芯片配置,在配置EP模式时,分为控制器和PHY两部分,两部分都需要配置为EP模式。

由于软件代码的bug,导致PHY的部分时钟工作的RC模式,并且配置时钟来自芯片本身,而非对端送过来的。于是乎导致实际环境中两个RC进行互联。

现象之瑞芯微EP侧

通过对瑞芯微单板进行复位,通过寄存器查看PCIE连接已经建立,相关寄存器为:

值为 0x4407,也就是物理层和数据链路层都被设置为1,都link了,并且LTSSM为0x11,根据瑞芯微手册说明,

也就是进入了连接状态。

现象之X86 RC侧

x86侧相关寄存器

在瑞芯微单板复位过程或者复位过后的2分钟左右的时间内,我们看到此寄存器的变化情况如下:

50: 00 00 11 38 00 b2 5c 00 00 00 48 01 08 00 00 00 (8 表示在link traing,3 bit29 表示已经link active)

50: 00 00 11 30 00 b2 5c 00 00 00 48 01 08 00 00 00 (link training为0,同时link up为1,表示已经进入L状态

50: 00 00 11 38 00 b2 5c 00 00 00 48 01 08 00 00 00 (此处很快又进入link traing状态)

50: 00 00 11 30 00 b2 5c 00 00 00 48 01 08 00 00 00

50: 00 00 11 38 00 b2 5c 00 00 00 48 01 08 00 00 00

50: 00 00 11 38 00 b2 5c 00 00 00 48 01 08 00 00 00

50: 00 00 11 38 00 b2 5c 00 00 00 48 01 08 00 00 00

50: 00 00 11 10 00 b2 5c 00 00 00 48 01 08 00 00 00 后续一直link traing ,直到此时没有再traing,说明对端已经起来了。没又link traing的对象了!

通过上述寄存器变化,可以得知,X86侧看到的PCIE link状态为短暂的link (offset 0x53值为0x30时),而后大部分时间在0x38这个状态,也就是一直在link training。

LTSSM状态变化与对应寄存器的关系

翻看PCIE协议,其中 当link up 1 并且 link training 也为1时,只有configuration和recovery两个状态。

而通过上面65标识文字及下面转换图,可以得到从Recovery进入configuration时才被设置为1。

于是我们想是什么导致 LINK 从Lx 状态变化到了Recovery状态

Recovery状态进入

通过上述发现后,我们在瑞芯微一侧持续跟踪连接状态,发现其LTSSM也在recovey的几个状态和L0之间转换

速率、带宽的改变是主要功能

然而我们已经配置X1 GEN1。

X86 桥片NSR功能

PCI Power Management Control

在实验过程钟,怀疑PCIE端口的电源状态相关,于是将其改配

setpci -s 0:1c.0 a4.b=0x8

如果写0,则下挂设备会跟着复位。注意。

rescan功能

1)在第二节的配置,LINK不稳定的情况下,我们通过lspci -vt命令可以看到对应的桥片端口信息如下:

+-1c.0-[01]----

虽然看到了桥片PCIE端口,但是看不到设备。

2)在第二节看到连接状态为0x30 0x38时,我们通过下面命令,

/sys/bus/pci/devices/0000:00:1c.0# echo 1 >rescan

此时,再查看lspci -vt

+-1c.0-[01]----00.0 Fuzhou Rockchip Electronics Co., Ltd Neural Network Processor Card

3)即可以看到设备信息,进而可以读取此设备的配置空间寄存器信息

lspci -xxx -s 1:0.0

10: 00 00 00 3c 00 00 00 00 00 00 00 00 00 00 00 00

20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

4) 此时虽然看到了设备,但是0x10 bar0 寄存器的值并非X86地址空间的地址,而是原始瑞芯微芯片的地址。说明rescan并没有给设备分配地址,这也情有可原,毕竟其上游端口也没地址可分。

总结

我们纠结于 LTSSM状态机苦寻无果,而最终走读代码发现由于两侧都配置为RC导致了上述的现象。

至于为什么在此种配置下会llink training几分钟,而不是几十分钟后续再进一步探索。

intel 是否有寄存器直接指示LTSSM状态变化?还好此款桥片支持LINK状态查询,即寄存器的link active 位。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/354097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5.2 BGP水平分割

5.2.2实验2&#xff1a;BGP水平分割 1. 实验目的 熟悉BGP水平分割的应用场景掌握BGP水平分割的配置方法 2. 实验拓扑 实验拓扑如图5-2所示&#xff1a; 图5-2&#xff1a;BGP水平分割 3. 实验步骤 &#xff08;1&#xff09;配置IP地址 R1的配置 <Huawei>…

GEE学习笔记 七十五:【GEE之Python版教程九】数值

这章介绍一下数值类型&#xff0c;数值在python中可以分为&#xff1a;整型、浮点型、复数等&#xff0c;在GEE中我们常用的就是整形和浮点型数据。 这段代码是在程序之前必须执行的&#xff0c;用来注册GEE。 import ee ee.Initialize() 1、数值的API 首先看一下GEE的pytho…

一文读懂select、poll、epoll的用法

select&#xff0c;poll&#xff0c;epoll都是IO多路复用的机制。I/O多路复用就通过一种机制&#xff0c;可以监视多个描述符&#xff0c;一旦某个描述符就绪&#xff08;一般是读就绪或者写就绪&#xff09;&#xff0c;能够通知程序进行相应的读写操作。但select&#xff0c;…

一些有用的shell命令盘点

1、ssh 说明&#xff1a; ssh命令是经常用来连接服务器的&#xff0c;如何使用ssh命令连接服务器是一个后端开发必备的技能&#xff0c;当你需要查看服务器上日志等信息时&#xff0c;就需要使用该命令来登录到服务器进行查看。 使用&#xff1a; ssh $USERNAME$IP例如&#…

Python程序打包exe可执行软件教程

1、前言Python虽好&#xff0c;但是平时我们写的代码都是.py脚本文件&#xff0c;必须要在Python环境下 才可以运行。如果一台电脑没有安装Python是无法运行我们的程序的。当然你也可以选择随身携带安装包。 不过终究是有些麻烦。那么有没有什么办法&#xff0c;能把我们编写的…

【扬尘监测系统】让扬尘管理迈向“智慧化”

扬尘是指道路与管线施工、物料运输、物料堆放、植物栽种和养护等活动产生的粉尘颗粒物对大气造成的污染。 治理扬尘污染&#xff0c;我们应该从源头出发&#xff0c;进行“防治”。扬尘监测系统是利用现代科学技术对扬尘的排放程度进行客观、科学、准确的量化和评价的设备&…

零信任-易安联零信任介绍(11)

​目录 ​易安联零信任公司介绍 易安联零信任发展路线 易安联零信任产品介绍 易安联零信任架构 易安联零信任解决方案 易安联零信任发展展望 易安联零信任公司介绍 易安联是一家专业从事网络信息安全产品研发与销售&#xff0c;是行业内领先的“零信任”解决方案提供商&…

ChatGPT或将引发新一轮失业潮?是真的吗?

最近&#xff0c;要说有什么热度不减的话题&#xff0c;那ChatGPT必然榜上有名。据悉是这是由美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型&#xff0c;它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xff0c;并协助人类…

6.2 构建 RESTful 应用接口

第6章 构建 RESTful 服务 6.1 RESTful 简介 6.2 构建 RESTful 应用接口 6.3 使用 Swagger 生成 Web API 文档 6.4 实战&#xff1a;实现 Web API 版本控制 6.2 构建 RESTful 应用接口 6.2.1 Spring Boot 对 RESTful 的支持 Spring Boot 提供的spring-boot-starter-web组件完全…

Pygame中画圆

在Pygame中&#xff0c;可以通过draw模块下的circle()函数来进行画圆。1 准备工作的完成在画圆之前需要导入Pygame模块、初始化Pygame模块以及创建Surface对象。import pygame from pygame.locals import * pygame.init() screen pygame.display.set_mode((600,500))其中&…

SpringBoot实现 内置 定时 发送邮件功能

前段时间因为公司用了定时任务&#xff0c;所以写了2篇定时任务的文章&#xff0c;一篇是正常如何在Springboot 编程中如何去使用quartz &#xff0c;第二篇就是 正常业务性的增删改查&#xff0c;今天我们来看下如何使用 quartz 去定时给女朋友发邮件 &#xff0c;结尾会放上完…

智能电子办公标牌解决方案

一、WiFi智能电子标牌 智能电子办公标牌将它放在任何地方&#xff0c;以可视化会议日程、约会信息、行动计划和协作任务&#xff0c;使团队能够更有效地工作并更好地利用空间。 优势&#xff1a; ● 超低功耗&#xff0c;充一次电管用一年&#xff0c;支持Type-C接口充电 ●…

Linux之进程

一.冯诺依曼体系 在计算机中&#xff0c;CPU&#xff08;中央处理器&#xff09;是不直接跟外部设备直接进行通信的&#xff0c;因为CPU处理速度太快了&#xff0c;而设备的数据读取和输入有太慢&#xff0c;而是CPU以及外设直接跟存储器&#xff08;内存&#xff09;打交道&am…

Python 之 Matplotlib 柱状图(竖直柱状图和水平柱状图)、直方图和饼状图

文章目录一、柱状图二、竖直柱状图1. 基本的柱状图2. 同位置多柱状图3. 堆叠柱状图三、水平柱状图1. 基本的柱状图2. 同位置多柱状图3. 堆叠柱状图四、直方图 plt.hist()1. 返回值2. 添加折线直方图3. 不等距分组4. 多类型直方图5. 堆叠直方图五、饼状图 pie()1. 百分比显示 pe…

初步使用MSYS2

在此镜像站点下载&#xff0c; https://mirror.tuna.tsinghua.edu.cn/help/msys2/ 根据资料&#xff0c; MSYS2 &#xff08;Minimal SYStem 2&#xff09; 是一个MSYS的独立改写版本&#xff0c;主要用于 shell 命令行开发环境。同时它也是一个在Cygwin &#xff08;POSIX …

FPGA 10M50DCF672C7G/10M50DCF672C8G/10M50DCF672I7G工业、汽车和消费应用

FPGA现场可编程门阵列 10M50DCF672C7G/10M50DCF672C8G/10M50DCF672I7G 封装FBGA672FBGA672封装图&#xff08;明佳达电子&#xff09;描述MAX 10器件是单芯片、非易失性低成本可编程逻辑器件(pld)&#xff0c;用于集成最优的系统组件集。MAX 10设备的亮点包括:内部存储双配置闪…

Spring Data JPA 中 CrudRepository 和 JpaRepository 的区别

1 问题描述Spring Data JPA 中&#xff0c;CrudRepository 和 JpaRepository 有何区别&#xff1f;当我在网上找例子的时候&#xff0c;发现它们可以互相替换使用。它们有什么不同呢&#xff1f;为什么你习惯用其中的一个而不是另一个呢&#xff1f;2 CrudRepository 和 JpaRep…

ArcGIS网络分析之发布网络分析服务(二)

在上一篇中讲述了如何构建网络分析数据集,本篇将讲解如何发布网络分析服务。本文将使用上一篇中建立的网络数据集,下载地址在上一篇博文的最后已给出。 之前我们已经实现了基于ArcMap中的网络分析,但是仅仅支持本地是万万不够的,这里我们的目的就是将我们建好的网络分析图…

【OJ】两个圆

&#x1f4da;Description: 直角坐标系内现有两个半径相等的圆&#xff0c;问两圆的位置关系。 位置关系有&#xff1a;重合&#xff0c;相切&#xff0c;相离&#xff0c;相交&#xff1b; 若两圆相交&#xff0c;需要求出两圆的重叠面积。 ⏳Input: 输入包含多组数据&a…

【项目精选】户籍管理系统(视频+论文+源码)

点击下载源码 当今社会人们生活质量越来越高&#xff0c;人们对生活品质的追求不断提升&#xff0c;对于孩子求学&#xff0c;变更住所等情况时有发生&#xff0c;因此对于户籍变动管理就显得十分重要&#xff0c;管理用户的户籍信息可以有效防止信息错乱&#xff0c;信息管理过…