1      Overview

Core支持单个Pcie内核的Loopback功能,该功能主要为了做芯片验证,以及在没有远程接收器件的情况下完成自己的回环。同时,Core也支持有远程接收器件的loopback,在该中情况下,远程接收器件称为loopback slave。该种模式可以用来完成板级的debug,BER测试,系统调试。

在做Loopback的时候需要注意将“Link up”强制写成1(根据specification该位应该是0),造成系统处于L0状态的假象,以便系统完成link的initialize。

1.1    Local Digital Loopback (PIPE/RMMI)

本地的Loopback分为3个阶段:Entering Local Loopback、In PIPE Loopback、Exiting Local Loopback

1.1.1    Entering Local Loopback

Loopback将PIPE/RMMI RX 与自身的PIPE/RMMI TX相连,在该种Loopback模式下,只能运行LTSSM(link training and statues statemachine),而且在该状态下无法进行自身的training和进入到L0状态。进入local loopback的流程如下:

Ø  先要disable“Gen3 Control Register GEN3_RELATED_OFF.

Ø  Set the PIPE_LOOPBACK bit in the PIPE_LOOPBACK_CONTROL_OFFregister.

Ø  Set the LOOPBACK_ENABLE bit in the PORT_LINK_CTRL_OFF register.

1.1.2    In PIPE Loopback

在该Loopback 模式下,通过虚拟系统进入L0状态,可以进行link initialize。在进入了Loopback mode以后,Core会为VC0(??)的flow control进行初始化。当该初始化完成后,application就可以通过XALI0/1/2接口发送TLP。当TLP包 loopback回来后,application 需要发送complete以响应自身发的TLP包。当TLP和DLLP被发出同时被收回时,接口将对自身启动flow control。在L0阶段,当TLP因为link 错误而没有被接收到时,TLP包将会被重新发送。TLP的发送将会像正常的link一样进行credit 检测,而接收,也会在L0阶段进行正常的error check和filter check。

MessageConsiderations

当接口是一个上行接口(USP),你必须保证没有使能生成的error message。当有错误发生在PCIelink时,同时你使能了error message的生成,那么USP将会生成一个 Error Message。有接口生成的数据包将会loopback到他自身,而USP不期望接收message,他将会生成一个附加的message。(是说系统会被阻塞么??)

在进入L0阶段时,DSP接口必须自动的发送Set_Slot_Power_Limitmessage,而该message将会被自身发送并且接收回来。但是DSP接口是不期望接收到Set_Slot_Power_Limit message的,所有该message将会被作为无效的message,同时Device Status 中的unsupported requestdetected bit将会被置位。

在DSP接口中,Core内部生成的message 将会与application通过XALI0/1/2生成的TLP混合在一起发送。

Enumeration and BAR Setup

你必须配置BARS(USP),memory/IO rangs(DSP),将memoryspace 和 bus master 置位,以便可以接收filter accepts TLP。或者,可以将filter rules关掉,以便一些本该被滤掉的TLP能够被接收。

在Loopback 模式下,可以通过DBI 初始化BAR。

Gen3 Operation

Youmust set the Gen3 Equalization Disable bit in the “Gen3 Control Register” GEN3_RELATED_OFF, as the PHY has no role in local loopback.

1.1.3     Exiting Local Loopback

Toexit loopback mode:

■ Clear the PIPE_LOOPBACK bit in the PIPE_LOOPBACK_CONTROL_OFF register.

■ Clear the LOOPBACK_ENABLE bit in the PORT_LINK_CTRL_OFF register.

1.2   配置流程

在loopback模式下,好像没有提到角色为RC或EP,而称为Loopback master 和salve,所以我认为loopback的时候不区分RC和EP的,但是有USP和DSP的区别,不知道怎么设置???

这个流程是我自己根据手册推敲的,不知道对不对:

1、 SII app_ltssm_enable = 0  disablelink training;

2、  DBI 配置系统基本信息

3、  SII app_ltssm_enable = 1  enable  link training(这里应该配置不会成功);

4、   DBI “Link up”强制写成1(具体是哪个寄存器需要找一下),让系统认为link training 已经完成,并且进入了LTSSM  L0阶段

5、  DBI 进入loopback

Ø  先要disable“Gen3 Control Register GEN3_RELATED_OFF.

Ø  Set the PIPE_LOOPBACK bit in the PIPE_LOOPBACK_CONTROL_OFFregister.

Ø  Set the LOOPBACK_ENABLE bit in the PORT_LINK_CTRL_OFF register.

6、设置BAR(USP),而如果是DSP,设置memory/IO ranges,在前期可以turn off the filter rules。

7、  开始传输TLP。

转载:https://blog.csdn.net/yijingjijng/article/details/48028695

PCIE协议解析 synopsys IP loopback 读书笔记(1)的更多相关文章

  1. 《图解tcp/ip》读书笔记(二)

    <图解tcp/ip>读书笔记(二) 本周主要阅读的是本书的第三章--数据链路. 当然了,从某些角度讲,我认为这一章就是计算机网络的最基本的内容之一.整章讲述了数据链路层的作用和相关技术,主 ...

  2. 《图解tcp/ip》读书笔记(一)

           我先讲三句话:        一."万物互联的时代到了."我们生活在这样一个互联网急速发展的时代,也许很快就会发现,你能接触到的一切都可以连接到互联网了,电脑.手机这 ...

  3. C++ 11学习和掌握 ——《深入理解C++ 11:C++11新特性解析和应用》读书笔记(一)

    因为偶然的机会,在图书馆看到<深入理解C++ 11:C++11新特性解析和应用>这本书,大致扫下,受益匪浅,就果断借出来,对于其中的部分内容进行详读并亲自编程测试相关代码,也就有了整理写出 ...

  4. tcp/ip 卷一 读书笔记(1)tcp/ip 概述

    TCP/IP协议概述 术语 广域网 WAN 局域网 LAN TCP/IP四层网络模型 TCP/IP通常被认为是一个四层协议系统 网络接口层 包括arp,rarp协议,包括操作系统中的网卡驱动程序和对应 ...

  5. tcp/ip 卷一 读书笔记(3)为什么既要有IP地址又要有MAC地址

    网络层 首先明确一点,并不是所有的网络之间传输数据都需要mac地址和ip地址,比如说点对点线路之间的通信就没有MAC地址,网络层使用ipx协议时就没有ip地址,但是在当前的主流网络中,我们都使用ip地 ...

  6. TCP/IP协议详解 卷1—读书笔记(1)

    0. 前言 本系列简要记录该书的关键点,用以梳理知识点. 1. 简介 简述链路层下的一些相关协议,如以太网IP数据报,802标准,SLIP,CSLIP,PPP. 链路层主要为上层(IP)和本层(ARP ...

  7. 《图解TCP/IP》读书笔记

    一.国际惯例:书托 这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识.掌握TCP/IP的基本技能. 书中讲解了网络基础知识.TCP/IP基础知识.数据链路.IP协议.IP协 ...

  8. tcp/ip 卷一 读书笔记(2)物理层和链路层网络

    物理层和链路层网络 术语 链路 是一对相邻结点间的物理线路,中间没有任何其他的交换结点. 数据链路 除了物理线路外,还必须有通信协议来控制这些数据的传输. 帧 数据链路层的协议数据单元(PDU) 串行 ...

  9. 《图解TCP/IP》读书笔记(转)

    reference: https://www.cnblogs.com/edisonchou/p/5987827.html 一.国际惯例:书托 这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TC ...

随机推荐

  1. python之模块pydoc

    # -*- coding: cp936 -*- #python 27 #xiaodeng import pydoc #主要用于从python模块中自动生成文档,这些文档可以基于文本呈现,也可以生成we ...

  2. Javascript Get or Set Checked Radio Value

    Description This pair of Javascript function can get or set the checked value of a group of radio bu ...

  3. 10个超棒jQuery表单操作代码片段

    jQuery绝对是一个伟大的开源javascript类库,是帮助我们快速和高效开发前端应用的利器.可能大家在日常的开发过程中常常会处理表单相关的javascript,在今天这篇代码片段分享文章中,这里 ...

  4. java第五节 多线程/多线程的同步

    /* 第五讲 多线程 了解进程和线程 在多任务系统中,每个独立执行的程序称为进程,也就是"正在进行的程序",我们现在使用的操作系统一般都是多任务的 即能够同时执行多个应用程序,实际 ...

  5. Serv-U精简版FTP服务端

    Window搭建自己的FTP,Serv-U是很不错的选择... 00.运行视图 注意: 此版本是绿色破解版,个人使用很便捷的.不建议商业使用... download: https://pan.baid ...

  6. 转:Ogre内部渲染流程

    以下是 Ogre 的代码中的详细说明: Renderable是OGRE中所有可渲染对象的抽象接口 这个接口抽象出了在渲染管线中的被分组的离散的可渲染对象基本的方法. 此接口的实现类必须是基于单一的材质 ...

  7. 最常用的Java库一览(13年的文章)

    来源于:http://www.importnew.com/7530.html 本文由 ImportNew - 邢 敏 翻译自 programcreek.欢迎加入翻译小组.转载请见文末要求. 写在前面: ...

  8. xshell连接centos vi编辑器不能使用小键盘

    莫名其妙的本人的xshell,在vim编辑脚本的时候,右侧小键盘无法输出数字,输出的都是一些字母,而且还是一个字母占一行,太过艹蛋! 后来就按照正规的操作步骤,又重建了连接,居然发现正常了! 百思一虑 ...

  9. NSNotificationCenter实现原理

    # 前言 Cocoa中使用NSNotification.NSNotificationCenter和KVO来实现观察者模式,实现对象间一对多的依赖关系. 本篇文章主要来讨论NSNotification和 ...

  10. lu协程练习

    生产者和消费者问题:当协程调用yield时,从一个悬而未决的resume中返回.简单的协程练习: function receive() local status,value = coroutine.r ...