Alinx MPSoC驱动开发第11章异步IO实验按下按键报IO Possibile后结束进程

news2024/11/17 1:40:49

实验现象

       使用Alinux官方提供的驱动和应用程序代码,petalinux工程基于自身需要进行了一定的修改(主要是SD卡根文件系统)。在把petalinux工程编译后打包的boot.scr、BOOT.BIN、image.ub放入FAT分区,把驱动程序与应用程序放在NFS共享路径中,运行后的结果如下:
在这里插入图片描述

       在运行应用程序后,按下按键,直接就release,退出了进程,并在最后打印了I/O possible。

问题分析与解决

       从I/O possible入手,经过查询,其表示设备现在处于可以进行I/O操作的状态。这通常是由驱动程序或硬件状态改变触发的,比如设备完成了一个先前的操作,或者设备的电源/连接状态已经稳定。也确实是在我们按下按键以后才出现的,合理推断,系统捕捉到了按键的输入,但由于驱动或应用程序的问题,导致了这个结果

       Alinx教程这一章讲的是异步IO,在其中强调,对信号的处理有三种方式:忽略,系统默认的处理与用户自定义的方式,而对于第二种,几乎都是终止进程或者暂停进程。从这个角度继续切入找一下驱动与应用程序有关信号的部分。

       在驱动中的定时回调函数中,给应用层发送了信号,代码如下:

void timer_function(struct timer_list *timer)
{
	alinx_char.key_state = 1;
	if(alinx_char.fasync_p)
	{
		kill_fasync(&alinx_char.fasync_p, SIGIO, POLL_IN);
	}
}

       特别注意的是,驱动给应用层发送的是SIGIO信号

       再看看应用程序,设计内容如下:

signal(SIGUSR2, sigio_signal_func);
fcntl(fd_key, F_SETOWN, getpid());
flag = fcntl(fd_key, F_GETFL);
fcntl(fd_key, F_SETFL, flag | FASYNC);

       第一行,应用层把信号的回调函数sigio_signal_func绑定给了SIGUSR2信号,用户信号。

       那问题也就显而易见了,驱动与应用所使用的信号不是一个信号!所以只需要把驱动的信号改为SIGUSR2或者把应用程序的信号改为SIGIO就行了。

       我这里改的是应用层,最后的结果如下:
在这里插入图片描述
       此时已经可以按照预期的设计,根据按键翻转PS端LED。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2133610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

万界星空科技电池MES具体功能及解决方案

电池的生产工艺具有高度的复杂性和精细度。从原材料的准备、电池的组装到最终的测试与包装,每一道工序都需要严格控制,以确保产品的质量和性能。 万界星空科技在电池MES(制造执行系统)领域提供了全面的解决方案,这些解…

JavaWeb项目打包、部署至Tomcat并启动的全程指南(图文详解)

前言 我们想要部署一个javaWeb项目到tomcat上,需要了解一些概念 什么是tomcat? Tomcat 是 Apache 软件基金会(Apache Software Foundation)下的一个开源项目,主要用于实现 Java Servlet、JavaServer Pages(…

在 PyCharm 中配置 Anaconda 环境

1. 安装 Anaconda 如果尚未安装 Anaconda,你可以从 Anaconda 官方网站 下载或者从清华镜像网站下载并安装适合你操作系统的版本。 2. 创建 Anaconda 虚拟环境 打开 Anaconda Prompt(Windows)或终端(macOS/Linux)。 …

EmguCV学习笔记 VB.Net 11.6 图像分割

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

如何升级用 Helm 安装的极狐GitLab Runner?

本分分享如何对 Helm 安装的 Runner 进行升级。整个过程分为三步:1、确定 Runner 最新版本或者想要升级的版本是否存在;2、用 Helm upgrade 命令进行升级;3、升级确认。 极狐GitLab 为 GitLab 的中国发行版,中文版本对中国用户更…

【西电电装实习】6. 手装无人机的蓝牙断连debug

文章目录 前言零、闪灯状态零零、翻滚角,俯仰角,偏航角一、问题描述二、现象解释三、解决方案参考文献 前言 在 西电无人机电装实习 时遇到的问题使用蓝牙芯片 CH582F。沁恒的蓝牙芯片CH582F是一款集成了BLE(Bluetooth Low Energy&#xff0…

华为初级认证HCIA怎么样?

想在网络技术领域实现职业突破吗?华为HCIA初级认证是专为网络领域的新手与初学者设计的一项入门级认证。它旨在评估并确认个人对网络基本原理和技术知识的扎实掌握,是步入华为认证体系大门的基石。 一、华为HCIA 初级认证概述 华为初级认证网络工程师&am…

分类预测|基于黑翅鸢优化核极限学习机的数据分类预测Matlab程序BKA-KELM 多特征输入多类别输出 含基础KELM

分类预测|基于黑翅鸢优化核极限学习机的数据分类预测Matlab程序BKA-KELM 多特征输入多类别输出 含基础KELM 文章目录 一、基本原理BKA-HKELM 分类预测原理和流程总结 二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 BKA-HKELM 分类预测原理和流程 1. 黑翅鸢优化…

最好用的翻译器:什么是DeepL?如何订阅支付DeepL,订阅DeepL Pro以及申请DeepL API?

DeepL目前最好用的翻译软件,如果是学习翻译的同学或者海外客户翻译,一定不能错过,用它来处理文件,论文等翻译是最好不过了的!!! AI翻译技术的飞速发展正在颠覆我们的沟通方式,打破语…

6年前倒闭的机器人独角兽,再次杀入AGV市场

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 在科技创新的浪潮中,一个曾经辉煌又迅速陨落的企业正悄然重生,引发业界广泛关注。 曾经的协作机器人鼻祖Rethink Robotic…

机器学习周报(9.9-9.15)-Pytorch学习(三)

文章目录 摘要Abstract1 损失函数与反向传播1.1 L1Loss损失函数1.2 MSELoss损失函数1.3 交叉熵损失函数(CrossEntropyLoss)1.4 反向传播 2 优化器3 现有网络模型的使用及修改4 网络模型的保存与读取4.1 保存模型4.2 读取 总结 摘要 本次学习对Pytorch中…

8.3Sobel算子边缘检测

实验原理 Sobel算子是一种广泛使用的一阶导数边缘检测算子,它通过计算图像在水平和垂直方向上的梯度来检测边缘。Sobel算子使用一对3x3的掩模来实现这一功能。相比于其他边缘检测算子,Sobel算子在检测边缘的同时还能提供一定的抗噪能力。 在OpenCV中&a…

【射频通信电子线路基础第四讲】LC匹配网络、史密斯圆图、噪声与噪声系数

一、LC匹配网络 1、L-I型(负载与电抗并联) 2、L-II型(负载与电抗串联) 3、T型网络和π型网络例子 二、Smith圆图 这里先附上知乎大神的讲解链接,推荐直接去看非常适合入门理解,看完之后茅塞顿开 https://…

MySQL 安全机制全面解析

‍ 在如今的数字化时代,数据库安全 变得越来越重要。为了防止对数据库进行非法操作,MySQL 定义了一套完整的安全机制,包括用户管理、权限管理 和 角色管理。本文将为你深入浅出地介绍这三大安全机制,帮助你轻松掌握MySQL的安全管…

MPP数据库之SelectDB

SelectDB 是一个高性能、云原生的 MPP(大规模并行处理)数据库,旨在为分析型数据处理场景提供快速、弹性和高效的解决方案。它专为处理大规模结构化和半结构化数据设计,常用于企业级业务分析、实时分析和决策支持。 SelectDB 是在…

Vue2时间轴组件(TimeLine/分页、自动顺序播放、暂停、换肤功能、时间选择,鼠标快速滑动)

目录 1介绍背景 2实现原理 3组件介绍 4代码 5其他说明 1介绍背景 项目背景是 一天的时间轴 10分钟为一间隔 一天被划分成144个节点 一页面12个节点 代码介绍的很详细 可参考或者借鉴 2实现原理 对Element-plus滑块组件的二次封装 基于Vue2(2.6.14&#x…

数字孪生引领智慧医院革新:未来医疗的智能化之路

数字孪生(Digital Twin) 是指将物理实体或系统的数字化模型与其实时运行数据相结合,以反映实体的状态、行为和性能,并通过数据分析和仿真来优化决策和管理。在智慧医院建设中,数字孪生技术扮演着关键角色。 1. 数字孪生…

基于SpringBoot+Vue的瑜伽体验课预约管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

国内按月/季/年使用GPT4.0及OpenAI最新的模型

其实gpt官方版本不仅对于网络要求很高,且订阅用户对高级模型的使用也是有次数限制的, 国内想要稳定且最快同步官网的最新模型,我推荐一个地址,可以方便的不限次数的使用GPT4.0等模型, 今天早上刚出的OpenAI全新的草莓模型&#xf…

uniapp 发布苹果IOS详细流程,包括苹果开发者公司账号申请、IOS证书、.p12证书文件等

记录一下uniapp发布苹果IOS的流程。 一、苹果开发者公司账号申请 1、邓白氏编码申请(先申请公司邓白氏编码,这一步需要1-2周,没有这个编码苹果开发者没法申请,已有编码的跳过此步骤): 1)联系苹…