Linux中QT应用IO状态设置失效问题

news2024/12/28 18:11:37

问题:在进入freeze休眠前需要设置特定IO关闭电源灯操作,唤醒后需要将特定IO恢复原来正常工作状态,此时出现偶然性(概率很低)的IO控制失效问题;【平台:君正X1600HN】

一、问题点分析

1、电路

  • GPIO电流驱动能力排查

2、检查 GPIO 是否被其他外设复用

排查方法:

  • 检查设备树
  • 尝试禁用其他外设驱动,排除干扰

3、驱动设置问题

  • 查看设备树的对应IO配置是否设置正确

4、IO口竞争

  • 中断干扰
  • 系统任务调度延时(采用实时性更好的驱动方法,如gpio_set_value)

二、解决思路

通过建立log日志的方式,把对应IO口时钟配置寄存器、复用功能寄存器、方向寄存器、状态寄存器这几个值存到一个文件中,然后等出现异常时候,查看文件里面寄存器的变化
① 进入休眠前记录这几个数据
② 唤醒后记录这几个数据

正常的IO状态

GPIO功能正常工作状态睡眠状态唤醒状态
PC25CAN使能引脚010
PD00屏幕电源控制101

读取IO寄存器

【PC端口基地址:0x10010200】
【PD端口基地址:0x10010300】

读取寄存器名称偏移地址PC实际地址PD实际地址功能
PORT PIN Level Registers0x000x100102000x10010300读取当前电平(0/1)
PORT PULL-UP/DOWN State Register0x800x100102800x10010380查看IO口上下拉使能是否被改变
PORT Interrupt Registers0x100x100102100x10010310查看是否配置中断
PORT Mask Registers0x200x100102200x10010320/
PORT PAT1/Direction Registers0x300x100102300x10010330/
PORT PAT0/Data Registers0x400x100102400x10010340/

由以上寄存器可以把对应IO口的配置、复用功能、方向、当前状态读出来

// 伪代码
PC25_Register1_Value = volatile $(devmem 0x10010200) >> 25 & 0x00000001
... ... 
PD00_Register1_Value = volatile $(devmem 0x10010300)  & 0x00000001
... ...

三、最终结果:

1、电路排查没问题
2、从寄存器读出结果看,无复用情况(没配置重复)
3、驱动设置正确
4、从Log中发现,当应用设置到对应IO状态时候,读回寄存器值,发现;

四、解决方法:

两种方式:
① 在内核里面直接控制freeze休眠和唤醒对应IO状态(suspend.c文件); Or
② 使用字符设备驱动方式进行驱动,再转给QT控制;

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

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

相关文章

empire靶机

打开靶机 我们先查看页面源代码,发现什么也没有 再去用nmap扫描 nmap -sV -p- 192.168.95.144 发现也没什么用 我们在用dirb扫一下 dirb http://192.168.95.144 我们发现了robots.txt并且响应码是200,去访问一下 又得到了一个目录,去访问…

三层交换原理及图示

大概 三层交换原理 需要提前掌握的(VLAN基础知识) 【Info-Finder 参考链接:什么是VLAN】 三层是IP层,即网络层。为了方便记忆的:“先有网络,才有传输”、“传输是为了验证有网络”、“IP不是Transfer”…

当AI遇见大数据:决策优化的下一个风口

引言 在信息化时代的浪潮中,数据已成为企业决策的重要资产。随着大数据技术的发展,企业积累了海量的用户行为数据、市场动态和内部运营信息,这些数据背后蕴藏着巨大的价值。然而,数据的价值并非天然显现,它需要通过有效…

sizeof和strlen区分,(好多例子)

sizeof算字节大小 带\0 strlen算字符串长度 \0之前

SmartAIChain荣获重要认可

2024年12月21日,洛杉矶尔湾市——在今年的圣诞艺术交流会上,黄荣先生的SmartAIChain项目获得了重要认可。此次活动汇聚了来自各地的艺术家以及社区代表,共同庆祝这一创新性艺术的时刻。 在活动中,核桃市议员伍立伦(Allen Wu)代表D…

【Compose multiplatform教程12】【组件】Box组件

查看全部组件文章浏览阅读493次,点赞17次,收藏11次。alignment。https://blog.csdn.net/b275518834/article/details/144751353 Box 功能说明:简单的布局组件,可容纳其他组件,并依据alignment属性精确指定内部组件的对…

RT-DETR学习笔记(3)

九、损失函数 整理所需参数 decoder的输出结果:6层decoderlayer的类别以及bbox预测 将500个query拆分成300(300个query)200(denoising query) 1. 最后一层的decoder的输出的300部分,单独存储到out中的"pred_logits"和“…

处理元素卡在视野边界,滚动到视野内

效果图如下: 本示例处理场景:点击底部的折叠面板,展开后移动端滚动条位置不变,导致展开内容在视图外。造成面板展开无内容的错觉。 处理核心API: IntersectionObserver 此API可绑定元素并监听元素是否在视野内。若在视野外​​​…

RAGFlow 基于深度文档理解构建的开源 RAG引擎 - 安装部署

RAGFlow 基于深度文档理解构建的开源 RAG引擎 - 安装部署 flyfish 1. 确保 vm.max_map_count ≥ 262144 这是指要调整Linux内核参数vm.max_map_count,以确保其值至少为262144。这个参数控制着进程可以映射的最大内存区域数量。对于某些应用程序(如Ela…

鸿蒙项目云捐助第二十九讲云捐助项目云数据库商品的批量增加功能实现

鸿蒙项目云捐助第二十九讲云捐助项目云数据库商品的批量增加功能实现 关于鸿蒙云捐助项目,前面的内容已使用云函数,云数据库分别实现云捐助项目首页中的项分类导航,底部导航,轮播图功能,这里继续实现云数据库加载捐赠…

Confluent Cloud Kafka 可观测性最佳实践

Confluent Cloud 介绍 Confluent Cloud 是一个完全托管的 Apache Kafka 服务,提供高可用性和可扩展性,旨在简化数据流处理和实时数据集成。用户可以轻松创建和管理 Kafka 集群,而无需担心基础设施的维护和管理。Confluent Cloud 支持多种数据…

SpringCloudAlibaba升级手册-nacos问题记录

目录 一、前言 二、升级过程 1.问题 2.原因 3.出处 4.理论解决 5.测试环境问题 6.Spring Cloud Alibaba版本对比 7. Spring Cloud Alibaba适配组件版本对比 8.降低Spring Cloud版本 9.SpringCloud与SpringBoot兼容对比表 10.naocs-client版本对比 三、最终解决 一…

15、【OS】【Nuttx】OS裁剪,运行指定程序,周期打印当前任务

背景 接之前wiki【Nsh中运行第一个程序】https://blog.csdn.net/nobigdeal00/article/details/144728771 OS还是比较庞大,且上面搭载了Nsh(Nuttx Shell),需要接入串口才能正常工作,一般调试的时候用,非调试…

C# 窗体应用程序嵌套web网页,基于谷歌浏览器内核(含源码)

有一个winform项目,需要借助一个web项目来显示,并且对web做一些操作,web页目是需要用谷歌内核,基于谷歌 Chromium项目的开源Web Browser控件来开发写了一个demo。 安装步骤 第一步:右键项目,点击 管理NuGet程序包 , 输…

通过远程控制软件实现企业高效协作

在这个信息技术迅猛发展的时代,远程办公已经成为一种趋势,而远程控制软件则是连接分散团队的重要工具。技术的革新不仅推动了远程控制软件的广泛应用,也为现代办公带来了高效的协作体验。本文将探讨远程控制软件的发展,并以RayLin…

赋能开发者 | 麒麟信安受邀参加2024开放原子开发者大会,以技术为引领,以人才创发展

12月20至21日,以“一切为了开发者”为主题的“2024开放原子开发者大会暨首届开源技术学术大会”在湖北武汉举办。本届大会由开放原子开源基金会、中国通信学会联合主办,旨在贯彻落实国家软件发展战略,加速培育壮大我国开源生态。工业和信息化…

每天40分玩转Django:Django国际化

Django国际化 一、今日学习内容概述 学习模块重要程度主要内容国际化基础⭐⭐⭐⭐⭐基本概念、配置设置字符串翻译⭐⭐⭐⭐⭐翻译标记、消息文件模板国际化⭐⭐⭐⭐模板标签、过滤器动态内容翻译⭐⭐⭐⭐模型字段、表单翻译 二、国际化基础配置 # settings.py# 启用国际化 …

Elasticsearch 国产化替代方案之一 Easysearch 的介绍与部署指南

一、前言 在国内数字化转型浪潮和 信创 大背景下,“替代进口”成为许多企业级应用所需要面对的重要课题,搜索领域也不例外。 Elasticsearch(简称 ES)作为一款业界领先的全文搜索和分析引擎,虽然功能强大,但…

Ubuntu 24.04.1 LTS 配置静态固定IP地址

查看网络配置信息 ip addr使用该命令查看网卡名字,一般是ens33或者ens32 修改配置文件 打开 /etc/netplan/下面的yaml配置文件 根据自己的需要配置 network:ethernets:ens33: # 配置的网卡的名称addresses: [192.168.23.140/24] # 配置的静态ip地址和掩码d…

Deep Deterministic Policy Gradient (DDPG)算法

代码 import torch import torch.nn as nn import torch.optim as optim import numpy as np import gym import random from collections import deque# 定义 Actor 网络 class Actor(nn.Module):def __init__(self, state_dim, action_dim, max_action):super(Actor, self).…