tsi721卡死

tsi721卡死,第1张

项目中使用Tsi721连接加速模块进行RapidIO收发数通信。在调试过程中,用户会手动结束任务,当再次启动任务时会报以下异常信息,

此时就无法再收到加速模块发来的数据。在这种情况下,必须要重启模块才能收到数据。

2、原因分析

用户在收数时使用的是封装的接口函数库,收数流程如下:

在收数过程中会创建门铃接收任务,等待门铃中断,当用户收到退出程序时底层配置的门铃信息并未释放,导致重新启动任务后无法重新配置门铃信息。

代码段如下:

用户手动关闭程序时标记为2处dbrange_disable并没有执行,导致资源未释放,再次启动应用后标记1处再次enable报错。

3、解决办法一

通过代码能看到要执行disable必须要退出while循环,确保rcv_exit为1,可以通过先按ctrl+c释放资源后,再按ctrl+\ 退出程序,如下:

此时再次重启应用无问题。

4、解决办法二

修改驱动,打开/home/kernel-rapidio-1.1.0/rio_mport_cdev.c

修改位置如下:

将ret初始化为0。

然后重新编译驱动,在/home/ kernel-rapidio-1.1.0 下执行

Make clean

Make

Make install

执行完毕后重启模块生效。

使用提供的释放资源应用程序rio_releaseDB(位于压缩包内Debug目录下)进行资源释放。

参数为0或1,表示要释放的port号,如下:

释放资源之后,再次启动应用程序即可正常收数。

附:rio_releaseDB.c 代码

/*

============================================================================

Name: test_rio.c

Author : 11

Version :

Copyright : Your copyright notice

Description : Hello World in C, Ansi-style

============================================================================

*/

#define _GNU_SOURCE

#include <sched.h>

#include <stdio.h>

#include <stdlib.h>

#include <pthread.h>

#include <unistd.h>

#include <semaphore.h>

#include <error.h>

#include <malloc.h>

#include <netdb.h>

#include <netinet/in.h>

#include <assert.h>

#include <fcntl.h>

#include <getopt.h>

#include <stdint.h>

#include <string.h>

#include <time.h>

#include <unistd.h>

#include <sys/stat.h>

#include <sys/types.h>

#include <sys/select.h>

#include <sys/types.h>

#include <sys/ipc.h>

#include <sys/sem.h>

#include <sys/mman.h>

#include <sys/time.h>

#include <sys/socket.h>

#include <arpa/inet.h>

#include "riocpplib.h"

int main(int argc,char *argv[]) {

int portNum=0

if(argc!=2)

{

printf("Invalid Argument,Please Input Number 0 or 1\n")

return -1

}

if((atoi(argv[1])!=0) &&( atoi(argv[1])!=1) )

{

printf("Invalid Argument,Please Input Number 0 or 1\n")

return -1

}

portNum=atoi(argv[1])

int ret=0

ret=bslRioPortInit(portNum)

if(ret==0)

{

printf("INIT SRIO PORT %d DONE\n",portNum)

}

else

{

printf("INIT SRIO PORT %d FAILED\n",portNum)

return -1

}

ret=bslRioReleaseDoorbell(portNum)

if(ret==0)

{

printf("RELEASE SRIO PORT %d DONE\n",portNum)

}

else

{

printf("RELEASE SRIO PORT %d FAILED\n",portNum)

}

return EXIT_SUCCESS

}

登录后复制

linux

tsi721

rapidio

srio

点赞文章给优秀博主打call~

tsi721-user-manual.pdf

23下载·0评论

2021年7月27日

RAPIDIO LINUX 驱动理解笔记1 DMA OUTBOUND

559阅读·1评论·1点赞

2022年6月16日

Linux下Tsi721修改RapidIO端口速率

1408阅读·2评论·4点赞

2021年3月26日

基于Intel E5V4计算刀片的RapidIO性能测试

566阅读·0评论·1点赞

2021年3月13日

Tsi721和NRS1800连接调试问题记录

1224阅读·0评论·4点赞

2021年7月9日

Tsi721芯片驱动代码使用说明

2805阅读·14评论·3点赞

2021年7月9日

一字粗跟凉鞋

精选推荐

广告

Tsi721信号及处理

1.0W阅读·2评论·2点赞

2016年1月19日

tsi721板卡和FPGA之间SRIO通信

923阅读·0评论·0点赞

2021年8月17日

linux/银河麒麟系统下基于Tsi721的PCIE转RapidIO驱动调试与测试

2256阅读·1评论·1点赞

2021年1月7日

VxWorks下TSI721驱动开发

998阅读·0评论·2点赞

2021年3月20日

Linux内核驱动注册方式泛谈

66阅读·0评论·0点赞

2020年3月18日

Windows 下TSI721驱动软件使用

1016阅读·0评论·1点赞

2021年3月12日

linux下rapidio枚举 环境变量设置

186阅读·0评论·0点赞

2021年4月20日

调试基于Linux Tsi721的rapidio驱动遇到的一些问题

4531阅读·5评论·3点赞

2019年3月7日

Windows 下TSI721数据采集软件

489阅读·4评论·0点赞

2021年3月12日

湖南麒麟下加载RapidIO驱动

1297阅读·4评论·2点赞

2021年2月25日

TSI721开发资料.zip

75下载·0评论

2020年4月1日

1800调试记录

233阅读·0评论·0点赞

2021年7月9日

去首页

看看更多热门内容

理论上有损失,实际是足够使用了 PCI-E X1带宽是250MB/s USB 3.0,接口的实际传输速率大约是3.2Gbps(即400MB/S) 理论上的最高速率是5.0Gbps(即625MB/S)实际应用受制于电脑硬盘的读写速度(速度再快也不能超过硬盘极限) 实际应用是100MB/s左右(实测),够快了想突破这个速度,自己电脑的硬盘要换成固态的,还有外置usb3.0存储设备的最大速度也要够~~

Linux *** 作和Windows有很大不同。要熟练的使用Linux系统,首先要了解Linux系统的目录结构,并掌握常用的命令,以便进行文件的 *** 作、信息查看和系统参数配置等。接下来是我为大家收集的Linux的命令行界面,欢迎大家阅读:

Linux的命令行界面

命令行模式

在Linux中我们很少使用图形模式,为什么呢?因为大神不屑。。。O(∩_∩)O~一般斗门都是用命令行模式来进行各种 *** 作,因为命令行模式执行速度快,而且稳定性高。而Linux中的命令解释器就是Shell,这也是在使用命令前必须要了解Shell的原因。

为什么要先学习Shell

Linux系统主要由四大部分组成:

vcWxvtPv0dSx4LPMu7e+s6Ost72x49PDu6fN6rPJvPK1pbW9uLTU07XEyM7O8bX3tsihow0KPHA+TGludXjG9LavyrGjrNfuz8i9+MjrxNq05rXEysfE2rrLo6yyorOj16TE2rTmo6zIu7rzvfjQ0M+1zbPS/bW8o6zS/bW8tcS5/bPM1tDG9Lavy/nT0L340NC1xLi4vfizzNTauvPMqNTL0NCjrNaxtb3P4LnYtcTPtc2z18rUtLP1yry7r83qsc+686Ostci0/dPDu6e1x8K8oaPTw7untcfCvMqxo6zNqLn9tcfCvL34s8zR6dak08O7p7XEus+3qNDUoaPTw7un0enWpM2ouf2687j5vt3Tw7untcTJ6NbDxvS2r8/gudi1xFNoZWxso6zS1LHjvdPK1dPDu6fK5MjrtcTD/MHusqK3tbvY1rTQ0L3hufuhozwvcD4NCjxwPtPDu6fWtNDQ0ru49sP8we61xLn9s8yjujwvcD4NCjxzdmcgaGVpZ2h0PQ=="256" version="1.1" width="336.28125" xmlns="http://www.w3.org/2000/svg">Created with Rapha?l 2.1.0用户用户命令解释器Shell命令解释器Shell *** 作系统 *** 作系统命令结果

Linux的Shell有很多种,bash(Bourne Again Shell)是使用最广泛的一种,各个发行版一般将其设置为系统中默认的Shell。许多Linux系统将Shell作为重要的系统管理工具,比如:系统的开机、关机及软件的管理。其他的Shell有:C Shell、Korn Shell、Bourne Shell等,其中C Shell主要因为其语法和C语言类似而得名,而Bourne Again Shell是Bourne Shell的扩展。

Linux提供的图形界面接口可以完成绝大多数的工作,而系统管理员一般更习惯于使用终端命令行进行系统的参数设置和任务管理。使用终端命令行可以方便快速地完成各种任务。

使用终端命令行需要掌握一些必要的命令,这些命令的组合不仅可以完成简单的 *** 作,通过Linux提供的Shell还可以完成一些复杂的任务。用户在终端命令行输入一串字符,Shell负责理解并执行这些字符串。然后把结果显示在终端上。

注意:大多数Shell都有命令补齐的功能。

在Unix的发展历史上,用户都是通过Shell来工作的。大部分命令都经过了几十年的发展和改良,功能强大,性能稳定。Linux继承自Unix,自然也是如此。此外Linux的图形化界面并不好,并不是所有的命令都有对应的图形按钮。在图形化界面崩溃的情况下,就更要靠Shell输入命令来恢复计算机了。

命令本身是一个函数(function),是一个小的功能模块。如果想要让计算机完成很复杂的事情,则必须通过Shell编程来实现。可以把命令作为函数,嵌入到Shell程序中,从而让不同的命令协同工作。

如何进入命令行

如果安装的是桌面版,有两种方式进入命令行界面:菜单方式、快捷键方式。

菜单方式

菜单方式常用的有两种:

单击鼠标右键,选择【在终端中打开】。

单击【应用程序】->【工具】->【终端】,打开命令行。

虚拟机上,再多一个Shift键,使用Ctrl+Shift+Alt+F1的形式。在CentOS桌面版中,我测试这几个按键都无效,这里要使用Ctrl+Windows键+Alt+F3切换到命令行,在使用Ctrl+Windows键+Alt+F1切回图形界面。

注意:因为虚拟机默认与主机之间的切换快捷键是Ctrl+Alt键,所以在使用有这两个键的快捷 *** 作时,尽量不要先按这两个键,否则就会跳出虚拟机模式。

看了“Linux的命令行界面”还想看:

1. LINUX图形界面下如何快速切换到命令界面

2. 怎么进入CMD命令行界面

3. 如何打开命令行窗口的快速编辑功能

4. win7怎么打开DOS命令行窗口

5. 炫酷的Linux终端命令大全


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7440027.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存