记录:外扩GPIOD访问报警告

rk提供的rfkill-bt.c驱动访问外扩GPIO输出如下警告:

[    4.694993] ------------[ cut here ]------------
[    4.694994] WARNING: CPU: 7 PID: 582 at drivers/gpio/gpiolib.c:2805 gpiod_get_raw_value+0x58/0xd4
[    4.695003] Modules linked in:
[    4.695006] CPU: 7 PID: 582 Comm: systemd-rfkill Not tainted 6.1.75 #41
[    4.695008] Hardware name: Rockchip RK3588 Board (DT)
[    4.695010] pstate: 80400009 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    4.695012] pc : gpiod_get_raw_value+0x58/0xd4
[    4.695015] lr : rfkill_rk_set_power+0xb0/0x394
[    4.695018] sp : ffffffc00d673c30
[    4.695020] x29: ffffffc00d673c30 x28: ffffff8109c77000 x27: 0000000000000000
[    4.695023] x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000000
[    4.695026] x23: 0000000060001000 x22: ffffff8103039080 x21: ffffffc0096c3418
[    4.695029] x20: ffffff8102e2be80 x19: ffffff8102e97118 x18: 0000000000001000
[    4.695032] x17: 0000000000000000 x16: 0000000000000400 x15: 0000000000000000
[    4.695035] x14: 0000000000000400 x13: 3131313131313131 x12: 31313120203a7265
[    4.695038] x11: fffffffffffcf480 x10: ffffffc00a3036b8 x9 : ffffffc009344310
[    4.695041] x8 : ffffffc00a2536b8 x7 : ffffffc00a3036b8 x6 : 0000000000000000
[    4.695043] x5 : ffffff82f6de7ae0 x4 : ffffffc00a3e50b8 x3 : 0000000000000010
[    4.695046] x2 : 0000000000000028 x1 : ffffff8102e964c0 x0 : 0000000000000001
[    4.695049] Call trace:
[    4.695051]  gpiod_get_raw_value+0x58/0xd4
[    4.695053]  rfkill_rk_set_power+0xb0/0x394
[    4.695054]  rfkill_set_block+0xbc/0x234
[    4.695058]  rfkill_fop_write+0x1fc/0x234
[    4.695062]  vfs_write+0xc4/0x374
[    4.695066]  ksys_write+0xdc/0xf4
[    4.695069]  __arm64_sys_write+0x20/0x2c
[    4.695072]  invoke_syscall+0x4c/0x110
[    4.695075]  el0_svc_common.constprop.0+0x54/0x180
[    4.695078]  do_el0_svc+0x20/0x30
[    4.695080]  el0_svc+0x24/0xa4
[    4.695084]  el0t_64_sync_handler+0xb0/0xb4
[    4.695087]  el0t_64_sync+0x174/0x178

原因是驱动中采用gpio_get_value获取GPIO引脚状态时会调用到gpiod_get_raw_value。从代码中可以看到当GPIO的can_sleep是true是就会有警告,但是这个警告不会影响到系统运行。

int gpiod_get_raw_value(const struct gpio_desc *desc)
{VALIDATE_DESC(desc);/* Should be using gpiod_get_raw_value_cansleep() */WARN_ON(desc->gdev->can_sleep);return gpiod_get_raw_value_commit(desc);
}

修改这个错误,简单粗暴的方式就是注释掉WARN_ON(desc->gdev->can_sleep),但不推荐,另一个方式就是将rfkill-bt.c中的gpio_get_value该成gpio_get_value_cansleep。
两个函数的差异:
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

LangChain面试内容整理-知识点4:工具(Tool)机制与实现

在LangChain中,工具(Tool)是智能体(Agent)、链(Chain)或LLM可以调用的外部函数接口。可以将Tool理解为LLM可以使用的能力或插件:通过调用工具,LLM能够获取额外的信息或执行特定的动作,比如查询数据库、搜索互联网、做数学计算等comet.compinecone.io。工具赋予了LLM交…

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…

web3-基于贝尔曼福特算法(Bellman-Ford )与 SMT 的 Web3 DeFi 套利策略研究

web3-基于贝尔曼福特算法(Bellman-Ford )与 SMT 的 Web3 DeFi 套利策略研究 如何找到Defi中的交易机会 把defi看做是一个完全开放的金融产品图表,可以看到所有的一切东西;我们要沿着这些金融图表找到一些最优的路径,就…

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…

Go 语言中的内置运算符

1. 算术运算符 注意: (自增)和--(自减)在 Go 语言中是单独的语句,并不是运算符。 package mainimport "fmt"func main() {fmt.Println("103", 103) // 13fmt.Println("10-3…

SQL注入篇-sqlmap的配置和使用

在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap,但是由于很多朋友看不了解命令行格式,所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习,链接:https://wwhc.lanzoue.com/ifJY32ybh6vc…

发立得信息发布系统房屋信息版(php+mysql)V1.0版

# 发立得信息发布系统房屋信息版(phpmysql) 一个轻量级的房屋信息发布平台,基于PHP和MySQL开发,支持用户发布房屋出售/出租信息,以及后台管理功能。 轻量级适合网站开发PHP方向入门者学习,首发版本,未经实际业务流程检…

学习 React【Plan - June - Week 1】

一、使用 JSX 书写标签语言 JSX 是一种 JavaScript 的语法扩展,React 使用它来描述用户界面。 什么是 JSX? JSX 是 JavaScript 的一种语法扩展。看起来像 HTML,但它实际上是在 JavaScript 代码中写 XML/HTML。浏览器并不能直接运行 JSX&…

小智AI+MCP

什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…

基于python大数据的口红商品分析与推荐系统

博主介绍:高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实实在…

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…

打开GitHub网站因为网络原因导致加载失败问题解决方案

Date: 2025.06.09 20:34:22 author: lijianzhan 在Windows系统中,打开GitHub网站因为网络原因导致加载失败问题解决方案 打开Windows系统下方搜索框,搜索Microsoft Store,并且双击打开 在应用里面搜索Watt Toolkit,并下载安装 …

AI代码助手需求说明书架构

AI代码助手需求说明书架构 #mermaid-svg-6dtAzH7HjD5rehlu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6dtAzH7HjD5rehlu .error-icon{fill:#552222;}#mermaid-svg-6dtAzH7HjD5rehlu .error-text{fill:#552222;s…

.NET开发主流框架全方位对比分析

文章目录 1. ASP.NET Core核心特性代码示例:基本控制器优势劣势 2. .NET MAUI核心特性代码示例:基本页面优势劣势 3. Blazor两种托管模型核心特性代码示例:计数器组件优势劣势 4. WPF (Windows Presentation Foundation)核心特性代码示例&…

【系统架构设计师-2025上半年真题】案例分析-参考答案及部分详解(回忆版)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 试题一(25分)【问题1】(12分)【问题2】(13分)试题二(25分)【问题1】(10分)【问题2】(6分)【问题3】(9分)试题三(25分)【问题1】(13分)【问题2】(8分)【问题3】(4分)试题四(25分)【问题1】(6分)【问题2】(12…

【中间件】Web服务、消息队列、缓存与微服务治理:Nginx、Kafka、Redis、Nacos 详解

Nginx 是什么:高性能的HTTP和反向代理Web服务器。怎么用:通过配置文件定义代理规则、负载均衡、静态资源服务等。为什么用:提升Web服务性能、高并发处理、负载均衡和反向代理。优缺点:轻量高效,但动态处理能力较弱&am…

运动控制--小车的启动和停止算法

一、现实问题 小车在启动时由于受到惯性,后轮和前轮速度不一致,会引起车身不稳。 如小车上面装的是水,会出现倾洒,体验差。 二、数学研究 启动时 停止时 急动度(jerk) 三、BLDC控制与S型曲线的融合逻…

WebFuture:Ubuntu 系统上在线安装.NET Core 8 的步骤

方法一:使用官方二进制包安装 下载.NET Core 8 SDK 二进制包:访问 .NET Core 8 SDK 官方下载页面,根据你的系统架构选择对应的 Linux x64 版本等下载链接,将其下载到本地4. 创建安装目录:在终端中执行以下命令创建用于…

可视化预警系统:如何实现生产风险的实时监控?

在生产环境中,风险无处不在,而传统的监控方式往往只能事后补救,难以做到提前预警。但如今,可视化预警系统正在改变这一切!它能够实时收集和分析生产数据,通过直观的图表和警报,让管理者第一时间…

深度解析 Linux 内核参数 net.ipv4.tcp_rmem:优化网络性能的关键

文章目录 引言一、认识 net.ipv4.tcp_rmem1. 最小值(min)2. 默认值(default)3. 最大值(max) 二、net.ipv4.tcp_rmem 的工作原理三、net.ipv4.tcp_rmem 的实际应用场景1. 高并发 Web 服务器2. 文件传输服务3…