Tsi721和NRS1800连接调试问题记录

news/2024/11/16 19:42:44/

Tsi721和SRIO交换芯片调试文档下载路径:

https://download.csdn.net/download/luky_zhou123/20087695 

Tsi721驱动和包含复位功能测试程序下载路径:
https://download.csdn.net/download/luky_zhou123/20087673

下载后欢迎留言讨论

1 SRIO连接框图

调试步骤

确认Tsi721和NRS1800连接的端口速率是否比配,Tsi721端口速率通过外接电阻设置,设置方式如下:

  1. NRS1800端口速率可以通过SPD引脚电阻设置默认速率,如果不同端口需要设置不同速率需要通过修改寄存器设置。修改方式如下:

Tsi721和NRS1800端口速率匹配之后安装Tsi721驱动,驱动安装步骤如下:

  1. insmod rapidio.ko hdid=0x1a通过hdid设置Tsi721设备destid
  2.  insmod tsi721_mport.ko
  3. insmod rio_cm.ko

  4.   insmod rio_mport_cdev.ko

  5. insmod rio-scan.ko scan=1

    安装该驱动Tsi721会扫描所有外接设备,如果外接设备是NRS1800会设置交换芯片的路由,如果不需要对NRS1800设置路由需要对驱动中rio-scan.c文件中rio_enum_mport函数进行修改,修改后的代码下载路径:

https://download.csdn.net/download/luky_zhou123/20087673

测试方法

Tsi721扫描完设备后就可以通过libmport目录下的测试程序对SRIO接口进行测试:

3.1 链接状态查看

rio_test_misc测试程序,通过./rio_test_misc –h可以查看帮助信息,主要测试功能如下:

a、查看Tsi721端口link状态:

./rio_test_misc  -M  0  -q

参数说明:

-M: Tsi721端口号,如果只有一个Tsi21主端口号默认为0

-q:查询端口状态

端口必须link后才能进行后面测试。

3.2 寄存器读写

a、读设备寄存器值

./rio_test_misc  -M  0  -H  hopcount  -D destid  -O  offset

参数说明:

-M: Tsi721端口号,如果只有一个Tsi21主端口号默认为0

-H:设备跳数,如果读取Tsi721寄存器无需使用该参数

-D:待读取设备的id号,如果读取Tsi721寄存器无需使用该参数

-O:寄存器偏移地址

例如读取与Tsi721相连的switch设备id命令为:

./rio_test_misc  -M  0  -H  0  -D  0xff  -O  0

b、写设备寄存器值

./rio_test_misc  -M  0  -H  hopcount  -D destid  -O  offset  -V data  -w

参数说明:

-M: Tsi721端口号,如果只有一个Tsi21主端口号默认为0

-H:设备跳数,如果写Tsi721寄存器无需使用该参数

-D:待写入设备id号,如果写Tsi721寄存器无需使用该参数

-O:寄存器偏移地址

例如向Tsi721寄存器0x60写入0x1a:

./rio_test_misc  -M  0   -O  0x1a  -V 0x1a  -w

-V: 要写入的数据值

-w:表示写入数据

3.3 门铃消息收发

rio_test_db测试程序功能:通过./rio_test_db –h可以查看帮助信息,通过改测试程序能够收发送门铃信息。

3.3.1 发送门铃消息

./rio_test_db -M 0 -D destid -I data

参数说明:

-M: Tsi721端口号,如果只有一个Tsi21主端口号默认为0

-D:待发送门铃信息的设备id

-I:(大写i)16位门铃数据

例如向设备id为0x1b的设备发送门铃消息0x5a5a命令如下:

./rio_test_db -M 0 -D 0x1b -I 0x01

3.3.2 接收门铃消息

./rio_test_db -M 0 -D destid  -S start  -E end -r

参数说明:

-M: Tsi721端口号,如果只有一个Tsi21主端口号默认为0

-D:待发送门铃信息的设备id

-S: 接收门铃消息的起始值

-E: 接收门铃消息的结束值

-r: 表示接收门铃消息

例如:读取设备id为0x1b发送的门铃消息为0x1a1a到0x5a5a的命令如下:

./rio_test_db -M 0 -D 0x1b -S 0x1a1a -E 0x5a5a -r

3.4 dma数据收发

3.4.1 dma数据发送

./rio_test_dma -M 0 -D destid -A targetAdress -O offset -S size  -d -v -k  -T times

-M:Tsi721端口号,如果只有一个Tsi21主端口号默认为0

-D: 发送目的设备ID

-A: 发送数据目的设备地址

-S: 发送数据长度

-d: 打印调试信息,如果输入该参数将打印调试信息,默认不打印调试信息

-v: 不做数据校验,默认发送后将读取对端设备数据进行比较,输入该参数不做校验

-k: 使用内核模式,如果输入该参数将在内核空间申请缓存区发送数据,否则在用户空间申请缓存区发送数据,默认用户模式。

-T:发送次数,如果不输入该参数则默认发送1次

例如:通过dma方式向设备id为0x1b,目的基地址为 0xa0000000,偏移为0x0的位置发送长度为0x100的数据命令为:

./rio_test_dma -M 0 -D 0x1b -A 0xa0000000 -O 0 -S 0x100  -d -v

3.4.2 dma数据接收

./rio_test_dma -M 0 -D destid  -I size  -v -d -R riobase

-M:Tsi721端口号,如果只有一个Tsi21主端口号默认为0

-D:发送目的设备ID

-R:对端设备发送到接收设备的目的地址,即接收设备接收数据的目的地址,地址需要4K对齐。

-I:接收数据缓冲区长度,如果参数-i 默认接收数据长度为2*1024*1024(2M)

-d:打印调试信息,如果输入该参数将打印调试信息,默认不打印调试信息

-v:数据校验,默认发送后将读取对端设备数据进行比较,输入该参数不做校验

例如:接收目的ID为0x1b,地址为0x0,数据长度为0x200000的命令为:

./rio_test_dma -M 0 -D 0x1b -i  -v -d -R 0x0,当对端设备数据发送完后按回车键可以查看对端发送的数据类容。

3 Tsi721复位设置

SRIO链接设备复位后导致链路未link on。

导致问题原因:当Tsi721连接的对端设备复位后由于链路再次建立时ackID不一致导致链路无法链接正常。

解决方式:当SRIO接口两端的某一个设备复位后,对端设备也需要复位,复位后能够从新建立链接。

参考资料:《IDT_Tsi721_MAN_20130718.pdf》以下章节(874-875页)

B.  Disabling the S-RIO Port
Topics discussed include the following:
* Methods of Disabling the S-RIO Port
* What Happens When the S-RIO Port is Disabled?
* How to Re-enable the S-RIO Port?

初始化流程:

1、关闭端口,将RapidIO Port Control CSR PORT_LOCKOUT和PORT_DIS寄存器置1

RapidIO Port Control CSR.PORT_LOCKOUT
RapidIO Port Control CSR.PORT_DIS

2、设置复位模式,将Device Control Register SR_RST_MODE位置1

Set Device Control Register.SR_RST_MODE to the desired reset mode.

模式种类有以下两种,我们将模式设置成0001,配置寄存器值不复位。

0b0000 = Perform a device-wide hot reset.
0b0001 = Perform a S-RIO MAC core logic reset. All
device registers (including those from S-RIO MAC)
retain their values without being reset.

3、保持端口复位,设置RapidIO PLM Port Implementation Specific Control Register SOFT_RST_PORT位置1

Hold the port in reset by setting RapidIO PLM Port Implementation Specific Control Register.SOFT_RST_PORT.

4、清除端口关闭状态位,将RapidIO Port Control CSR PORT_LOCKOUT和PORT_DIS寄存器置0

Clear the control or status bit that disabled the port (see Methods of Disabling the S-RIO Port)

5、清除错误状态位,清除PLM Port Event Status Register和RapidIO Port Error and Status CSR寄存器错误状态

RapidIO PLM Port Event Status Register.DLT
RapidIO Port Error and Status CSR.OUTPUT_FAIL

6、清除端口复位,将RapidIO PLM Port Implementation Specific Control Register的SOFT_RST_PORT位请0

Remove the port reset by clearing RapidIO PLM Port Implementation Specific Control Register.SOFT_RST_PORT.


http://www.ppmy.cn/news/568122.html

相关文章

j1800 android系统,进击的垃圾佬(篇二)— 让J1800枯木逢春的ChromeOS

进击的垃圾佬(篇二)— 让J1800枯木逢春的ChromeOS 2020-10-25 11:33:51 38点赞 232收藏 43评论 创作立场声明:本文所测商品为自费购入。如参加张大妈家的活动获得,我会在文中点明。坚持独立的评价观点是笔者创作的基本底线,绝不会因商品来源不同而有所偏颇,请各位放心。 前…

DTX1800校准的意义?---DTX-1800线缆测试仪此校准而非彼校准

DTX1800校准的意义?—DTX-1800线缆测试仪此校准而非彼校准 首先我们要搞清楚,什么是校准? 一,第三方校准:该定义的含义是: ⒈在规定的条件下,用一个可参考的标准,对包括参考物质在内…

【数据可视化】大作业(意向考研高校的数据可视化)

文章目录 前言一、数据介绍1.1 基本信息1.2 考研信息1.3 导师信息 二、预处理及分析2.1 数据预处理2.1.1 考研信息预处理2.1.2 导师信息预处理 2.2 数据分析 三、可视化方法及结果3.1 可视化方法3.2 可视化结果展示3.2.1 基本信息3.2.2 考研信息3.2.3 导师信息 四、总结五、附录…

FreeRTOS和uC/OS:选择入手哪个RTOS更合适?

FreeRTOS和uC/OS是两个流行的实时操作系统(RTOS),用于嵌入式系统开发。它们有一些区别,但选择哪个先入手取决于你的需求和项目要求。 复杂度:FreeRTOS是一个相对较简单的RTOS,它专注于提供基本的实时调度和…

【Python爬虫开发基础⑦】urllib库的基本使用

专栏:python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~ 往期推荐: 【Python爬虫开发基础①】Python基础(变量及其命名规范) 【Python爬虫开发基础②】Python基础(正则表达式) 【…

深度:激光和光纤诞生记

光子盒研究院出品 导读:20世纪50年代以来,科技领域掀起了一场光学革命,激光和光纤的诞生,带来了革命性突破。事实上,激光和光纤的诞生也是第一次量子革命的范畴,因为这些技术的发展是基于对量子规律的观测和…

从0到1精通自动化测试,pytest自动化测试框架,allure2生成html报告(史上最详细)(九)

一、前言 allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面。 环境准备: python3.6windows环境pycharmpytest-allure-adaptorallure2.7.0java1.8 二、pytest-allu…

华为nova5z什么时候上鸿蒙,华为nova5z什么时候上市

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。 华为nova5z的上市时间是2019年10月。拥有4000mAh大电池并支持20W快充。它搭载了麒麟810处理器,安兔兔跑分成绩在29万分以上,在同价位手机中,它的…