Tsi721 SRIO退出程序再启动问题解决办法

2024-02-27 23:50

本文主要是介绍Tsi721 SRIO退出程序再启动问题解决办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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.cAuthor      : 11Version     :Copyright   : Your copyright noticeDescription : 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;
}

 

这篇关于Tsi721 SRIO退出程序再启动问题解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/753930

相关文章

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

MySQL错误代码2058和2059的解决办法

《MySQL错误代码2058和2059的解决办法》:本文主要介绍MySQL错误代码2058和2059的解决办法,2058和2059的错误码核心都是你用的客户端工具和mysql版本的密码插件不匹配,... 目录1. 前置理解2.报错现象3.解决办法(敲重点!!!)1. php前置理解2058和2059的错误

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

如何解决Spring MVC中响应乱码问题

《如何解决SpringMVC中响应乱码问题》:本文主要介绍如何解决SpringMVC中响应乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC最新响应中乱码解决方式以前的解决办法这是比较通用的一种方法总结Spring MVC最新响应中乱码解

pip无法安装osgeo失败的问题解决

《pip无法安装osgeo失败的问题解决》本文主要介绍了pip无法安装osgeo失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 进入官方提供的扩展包下载网站寻找版本适配的whl文件注意:要选择cp(python版本)和你py

解决Java中基于GeoTools的Shapefile读取乱码的问题

《解决Java中基于GeoTools的Shapefile读取乱码的问题》本文主要讨论了在使用Java编程语言进行地理信息数据解析时遇到的Shapefile属性信息乱码问题,以及根据不同的编码设置进行属... 目录前言1、Shapefile属性字段编码的情况:一、Shp文件常见的字符集编码1、System编码