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.

Tsi721和NRS1800连接调试问题记录相关推荐

  1. 使用串口线连接调试机顶盒

    [2020.09.19更新]通过视频学习.翻阅教程,我已经整理好了更完整的使用记录:[点我跳转] 上一个项目在进行产品适配的时候,有的机顶盒不支持ADB链接,需要使用串口线进行调试.在请教了厂商的技术 ...

  2. 东方马达步进电机AZM66AK-HS100+AZD-KD调试经验记录

    东方马达步进电机AZM66AK-HS100+AZD-KD调试经验记录(20170803YC) 本次总结主要实现的功能如下:用MEXE02软件在步进电机驱动器中设置好控制动作,每个控制动作有一个特定的编 ...

  3. Linux入门实践笔记(七)——云服务器中配置Java项目的JMX连接失败问题解决记录

    Linux入门实践笔记(七)--云服务器中配置Java项目的JMX连接失败问题解决记录 参考文章: (1)Linux入门实践笔记(七)--云服务器中配置Java项目的JMX连接失败问题解决记录 (2) ...

  4. 2021-06-07 RK3328 Android 10 上调试es7243记录

                  RK3328 Android 10 上调调试es7243记录 一.es7243电路图. 二.修改的部分,解决没有mclk的问题. commit b86b0275bf898f ...

  5. Lora Ra-01模块初步调试问题记录

    Lora Ra-01模块初步调试问题记录 问题描述:购置的Ra-01模块,下载官方驱动程序,通信不成功,收发端只能串口输出"串口1初始化成功" 开发环境:MDK-ARM V4.12 ...

  6. [无线连接手机]-通过局域网无线连接调试手机设备

    ################################################## 目录 没有 root 过的手机怎么无线 adb 连接 借助 USB 数据线以 IP 方式无线 AD ...

  7. 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。

    24-Jul-2022 17:18:15.259 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.s ...

  8. 记一次snmp远程连接失败的记录

    记一次snmp远程连接失败的记录 本次检测server端采用的是v2c(有v1.v2c.v3三个版本) 现象:本地检测(自测)正常,远程服务器检测timeout,no response... -v:– ...

  9. nRF52832调试相关记录

    nRF52832调试相关记录 | DD'NotesnRF52832调试相关记录背景以前业余用nRF52832做了个物联网小项目(蓝牙微微网),做了些相关的调试记录 nRF52832寄存器类型 Task ...

最新文章

  1. 斯坦福大学报告称中国AI论文引用率首超美国!但李国杰院士也发文灵魂拷问...
  2. 搜索引擎爬虫蜘蛛的USERAGENT大全
  3. centos(linux) 下如何查看端口占用情况及杀死进程
  4. 全球及中国家用除湿机行业消费需求调研及十四五发展趋势研究报告2022-2027年
  5. MyBatis 流式查询
  6. Blazor WebAssembly 3.2.0 正式起飞,blazor 适合你吗?
  7. java项目打镜像_docker通过dockerfile打java项目镜像
  8. Microsoft Enterprise Library 5.0 系列(二) Cryptography Application Block (初级)
  9. 如何保护 .NET 应用的安全?
  10. Python机器学习:梯度下降法006随机梯度下降法
  11. python 多继承与super使用详解_Python super()方法、多继承以及MRO顺序
  12. 二维平面上判断点是否在三角形内
  13. Vue.js起手式+Vue小作品实战
  14. .net实现调用本地exe等应用程序的办法总结
  15. RTSP的音频视频要各SETUP一次
  16. Java编写HTTP请求发送XML报文数据
  17. AWVS12-Windows
  18. c语言贪吃蛇自动走,C语言 贪吃蛇
  19. 第九届蓝桥杯JavaC组省赛真题
  20. 计算机组装维护课件,计算机组装与维护课件(全)

热门文章

  1. EMR 上的 Spark 或 Hive 作业失败并出现 HTTP 503 “Slow Down” AmazonS3Exception
  2. 第五章 软件项目成本管理
  3. Java的小数点后精度计算
  4. 汉字转拼音 java_Java汉字转拼音工具类完整代码实例
  5. 如何确定自己不是高智商?蒙提霍尔三扇门问题
  6. CAN 常见错误排查
  7. 4 anbox 树莓派_Anbox让你在Linux上“原生运行”Android应用
  8. 想做游戏测试工程师?这几点不知道可不行!
  9. mysql5.7 主从切换_mysql5.7主从切换(master/slave switchover)
  10. Android破解过程-滚动的天空