当前位置: 首页 > news >正文

基于RK3568的Linux驱动开发——GPIO知识点(一)

authordaisy.skye的博客_CSDN博客-Qt,嵌入式,Linux领域博主
系列基于RK3568的Linux驱动开发—— GPIO知识点(二)_daisy.skye的博客-CSDN博客

gpio bank

RK3568 有 5 组 GPIO bank:GPIO0~GPIO4,每组又以 A0-A7、B0-B7、 C0-C7、 D0-D7 作为编号区分,常用以下公式计算引脚:

GPIO 引脚计算公式:pin = bank * 32 + number

GPIO 小组编号计算公式:number = group * 8 + X

下面演示 GPIO3_A7 引脚计算方法:

bank = 3; // GPIO3_A7 => 3, bank ∈ [0,4]

group = 0; // GPIO3_A7 => 0, group ∈ {(A=0), (B=1), (C=2), (D=3)}

X = 7; // GPIO3_A7 => 5, X ∈ [0,7]

GPIO3_A7 对应的设备树属性描述为:<&gpio3 7 IRQ_TYPE_EDGE_RISING>由kernel/include/dt-bindings/pinctrl/rockchip.h的宏定义可知,也可以将GPIO4_D5描述为<&gpio3 RK_PA7 IRQ_TYPE_EDGE_RISING>。

gpiochipX

当前SOC 一共包含5 个 GPIO 控制器,分别是:GPIO1,GPIO2,GPIO3,GPIO4,GPIO5。在这里,分别是gpiochip0 、gpiochip32 、gpiochip64 、gpiochip96 、gpiochip128 这5个文件夹,每个gpiochipX 文件夹用来管理一组GPIO。

export

export用于将指定编号的GPIO 引脚导出。在使用GPIO 引脚之前,需要将其导出,导出成功之后才能使用它。注意export 文件是只写文件,不能读取,将一个指定的编号写入到export 文件中即可将对应的GPIO 引脚导出,例如:

echo 0 > export #导出编号为0的GPIO 引脚。对应当前SOC,也就是GPIO1_IO0。

导出成功之后会发现在/sys/class/gpio 目录下生成了一个名为gpio0 的文件夹(gpioX, X 表示对应的编号)。这个文件夹就是导出来的GPIO 引脚对应的文件夹,用于管理、控制该GPIO 引脚。

unexport

unexport将导出的GPIO 引脚删除。当使用完GPIO 引脚之后,我们需要将导出的引脚删除,同样该文件也是只写、不可读的。例如:

echo 0 > unexport # 删除导出的编号为0的GPIO 引脚1

删除成功之后,之前生产的gpio0 文件夹就会消失。

导出引脚echo

export

向/sys/class/gpio/export写入此编号,比如10号引脚,在shell中可以通过以下命令实现,

echo 10 > /sys/class/gpio/export

命令成功后生成/sys/class/gpio/gpio10目录,

如果没有出现相应的目录,说明此引脚不可导出

设置gpio的direction

direction文件,定义输入输入方向,可以通过下面命令定义为输出

echo out > /sys/class/gpio/gpio10/direction

direction接受的参数:in, out,

参考链接

Linux 学习笔记:GPIO 应用编程_gpiochip0_gdut_llkkyy的博客-CSDN博客

相关文章:

基于RK3568的Linux驱动开发——GPIO知识点(一)

authordaisy.skye的博客_CSDN博客-Qt,嵌入式,Linux领域博主系列基于RK3568的Linux驱动开发—— GPIO知识点&#xff08;二&#xff09;_daisy.skye的博客-CSDN博客 gpio bank RK3568 有 5 组 GPIO bank&#xff1a;GPIO0~GPIO4&#xff0c;每组又以 A0-A7、B0-B7、 C0-C7、 D0…...

5.2.1二叉树的定义和基本术语

二叉树的基本概念&#xff1a; 二叉树是递归定义的二叉树 下面我们来看几个特殊的二叉树&#xff1a; 特点&#xff1a; 1&#xff09;只有最后一层有叶子节点 2&#xff09;不存在度为1的结点 3&#xff09;按层序从1开始编号&#xff0c;结点i的左孩子为2i&#xff0c;右孩…...

动态组件、keep-alive的使用及自定义指令

目录 1. 动态组件 2.如何实现动态组件渲染 3. 使用keep-alive保持状态 4. keep-alive对应的生命周期函数 5. keep-alive的include属性 自定义指令 1.什么是自定义指令 2. 自定义指令的分类 3. 私有自定义指令 4. update函数 5. 函数简写 全局自定义指令&#xff1a; …...

基于JavaSpringMVC+Mybatis+Jquery高校毕业设计管理系统设计和实现

基于JavaSpringMVCMybatisJquery高校毕业设计管理系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码…...

问题排查记录-ffmpeg链接libavfilter和libavcodec:未定义的引用

目录 一、问题背景 二、问题现象 2.1 ffmpeg测试例程 2.2 编译脚本 2.3 错误提示 三、问题排查 3.1 关于提示找不到“stdio" "iostream"头文件的问题 3.1.1查看工具链头文件检索位置 3.1.2 根据工具链路径查找头文件 3.1.3 在编译脚本中指定头文件路径…...

打印流,Properties类

打印流只有输出流&#xff0c;没有输入流 package com.hspedu.printstream;import java.io.IOException; import java.io.PrintStream;/*** author 韩顺平* version 1.0* 演示PrintStream &#xff08;字节打印流/输出流&#xff09;*/ public class PrintStream_ {public stat…...

TinyOS 配置教程

系列文章目录 TinyOS 系列文章【一】&#xff1a;TinyOS 配置教程 TinyOS 系列文章【二】&#xff1a;Tossim 教程 文章目录 系列文章目录前言1. 安装1.1. 实验环境1.2. TinyOS基础工作1.3. TinyOS 的配置1.4. 安装 java1.5. 安装编译器 2. 测试仿真程序总结 前言 本文主要用…...

【工作总结】后端开发人员的坏习惯

文章目录 前言一、不遵循项目规范二、用复杂SQL语句来解决问题三、缺少全局把控思维&#xff0c;只关注某一块业务四、函数复杂冗长,逻辑混乱五、缺乏主动思考&#xff0c;拿来主义六、核心业务逻辑,缺少相关日志和注释七、修改代码&#xff0c;缺少必要测试八、需求没理清&…...

review

review post提交方式下的设置编码&#xff0c;防止中文乱码 request.setCharaterEncoding(“utf-8”); get提交方式&#xff0c;tomcat8开始&#xff0c;编码不需要设置 tomcat8之前&#xff0c;get方式设置比较麻烦&#xff1a; String fname request.getParameter("f…...

【人工智能概论】 用Python实现数据的归一化

【人工智能概论】 用Python实现数据的归一化 文章目录 【人工智能概论】 用Python实现数据的归一化一. 数据归一化处理的意义二. 常见的归一化方法2.1 最大最小标准化&#xff08;Min-Max Normalization&#xff09;2.2 z-score 标准化 三. 用sklearn实现归一化 一. 数据归一化…...

【Python】matplotlib设置图片边缘距离和plt.lengend图例放在图像的外侧

一、问题提出 我有这样一串代码&#xff1a; import matplotlib.pyplot as plt plt.figure(figsize (10, 6)) " 此处省略代码 " legend.append("J") plt.legend(legend) plt.xlabel(recall) plt.ylabel(precision) plt.grid() plt.show()我们得到的图像…...

oracle 11g等保加固

有个单机环境需要做个等保加固 1、执行如下sql ?/rdbms/admin/utlpwdmg.sql --alter profile default limit password_verify_function null; Alter PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90; alter profile DEFAULT limit password_lock_time 30; alter profile DEFAU…...

【设计模式】设计模式之解释器模式

文章目录 前言一、解释器模式二、最佳实践总结 前言 本节给大家讲一下设计模式中的解释器模式,并结合实际业务场景给大家讲解如何使用~ 所有案例代码主要以Java语言为主, 好了, 废话不多说直接开整~ 一、解释器模式 解释器模式&#xff08;Interpreter Pattern&#xff09;…...

leetcode551. 学生出勤记录 I

题目描述解题思路执行结果 leetcode551. 学生出勤记录 I . 题目描述 给你一个字符串 s 表示一个学生的出勤记录&#xff0c;其中的每个字符用来标记当天的出勤情况&#xff08;缺勤、迟到、到场&#xff09;。记录中只含下面三种字符&#xff1a; A&#xff1a;Absent&#xff…...

flume拦截器介绍

Flume是一个开源的、分布式的、可靠的、高效的海量数据采集、聚合和传输系统。其中&#xff0c;拦截器(Interceptor)是Flume中的一种组件&#xff0c;可以在数据(Event)流动的各个阶段对数据进行处理、过滤或转换&#xff0c;从而实现更为灵活、高效的数据采集和传输。 1、拦截…...

5.4、服务器编程基本框架和两种高效的事件处理模式

5.4、服务器编程基本框架和两种高效的事件处理模式 1.服务器编程基本框架2.两种高效的事件处理模式①Reactor模式②Proactor模式③模拟Proactor模式 1.服务器编程基本框架 模块功能I/O 处理单元处理客户连接&#xff0c;读写网络数据逻辑单元业务进程或线程网络存储单元数据库、…...

Flink主要有两种基础类型的状态:operator state。

Flink主要有两种基础类型的状态&#xff1a;keyed state 和operator state。 Operator State 对于Operator State(或者non-keyed state)&#xff0c;每个operator state绑定到一个并行operator实例上。在Flink中&#xff0c;Kafka Connector是一个使用Operator State的很好的例…...

【vue2】使用vue-admin-template动态添加路由的思路/addRoutes的使用

&#x1f609;博主&#xff1a;初映CY的前说(前端领域) ,&#x1f4d2;本文核心&#xff1a;用原生js实现省市区联动 【前言】在通用的后台管理项目的开发中&#xff0c;不仅仅是会涉及到对表单数据等的增删改查操作还会涉及到一些关于权限管理的问题。我们将基于一个RBAC的思维…...

Python语言中的注释方法应用

Python语言中的注释方法 在Python编程中&#xff0c;与其他编程语言一样&#xff0c;有良好的注释部分&#xff0c;会让你的程序在后续的改进或优化中&#xff0c;变得便利。同时&#xff0c;给自己培养了良好的编程习惯。 在Python语言中&#xff0c;有两种注释方法。 1.单行…...

Google浏览器翻译无法正常使用解决

1.查找可用服务器地址 按WinR键打开运行→输入cmd回车&#xff0c;打开命令提示符→输入ping google.cn 回车。记录一下下图红框里的ip地址&#xff0c;一会要用到 最近自己ping出来的ip可能不能用了&#xff0c;可以尝试用下面的ip 142.251.163.90 142.250.113.90 142.251.…...

javaweb大学生校园跑腿服务系统的设计与实现沙箱支付

目录同行可拿货,招校园代理 ,本人源头供货商沙箱支付功能概述核心功能模块技术实现要点测试注意事项项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 沙箱支付功能概述 在JavaWeb校园跑…...

微信小程序框架详解

小程序包含一个描述整体程序的app实例和多个描述页面的page。其中app由三个文件构成:公共配置app.json、公共样式app.wxss、主体逻辑app.js。每个page最多由四个文件构成:页面配置page.json、页面结构page.wxml、页面样式page.wxss、页面主体逻辑page.js。 微信小程序的主体部…...

新手零失败指南:在快马平台跟做交互式openclaw安装教程

最近在折腾一个叫openclaw的工具&#xff0c;作为新手被各种依赖和报错折磨得够呛。后来发现用InsCode(快马)平台可以把这个过程变成交互式教程&#xff0c;特别适合像我这样刚入门的小白。这里把踩坑经验整理成笔记&#xff0c;手把手带你零失败完成安装。 为什么选择交互式安…...

Youtu-VL-4B-Instruct问题解决:服务启动失败?常见错误排查与修复

Youtu-VL-4B-Instruct问题解决&#xff1a;服务启动失败&#xff1f;常见错误排查与修复 1. 服务启动失败的常见表现 当你尝试启动Youtu-VL-4B-Instruct服务时&#xff0c;可能会遇到以下几种典型问题&#xff1a; 1.1 端口冲突错误 最常见的错误是端口已被占用&#xff0c…...

忍者像素绘卷惊艳效果展示:鸣人螺旋丸像素绘卷作品集

忍者像素绘卷惊艳效果展示&#xff1a;鸣人螺旋丸像素绘卷作品集 1. 像素艺术新纪元&#xff1a;忍者世界的视觉革命 当传统漫画遇上16-bit复古美学&#xff0c;忍者像素绘卷为我们打开了一扇通往全新视觉体验的大门。这款基于Z-Image-Turbo深度优化的图像生成工作站&#xf…...

文脉定序保姆级教程:3步完成BGE-Reranker-v2-m3镜像免配置部署

文脉定序保姆级教程&#xff1a;3步完成BGE-Reranker-v2-m3镜像免配置部署 你是否遇到过这样的烦恼&#xff1f;用自己搭建的知识库或者搜索引擎提问&#xff0c;系统确实返回了一大堆结果&#xff0c;但最相关、最准确的答案却淹没在列表的中间甚至末尾。传统的检索方法&…...

支持RTX 30/40系显卡:PyTorch-2.x-Universal-Dev-v1.0镜像GPU验证指南

支持RTX 30/40系显卡&#xff1a;PyTorch-2.x-Universal-Dev-v1.0镜像GPU验证指南 1. 引言&#xff1a;为什么需要验证GPU环境 在深度学习项目开发中&#xff0c;GPU加速是提升模型训练效率的关键因素。特别是对于RTX 30/40系列显卡用户&#xff0c;正确配置CUDA环境与PyTorc…...

OpenClaw压力测试:Qwen3-14B在并发请求下的响应延迟分析

OpenClaw压力测试&#xff1a;Qwen3-14B在并发请求下的响应延迟分析 1. 测试背景与目标 上周在部署OpenClaw对接本地Qwen3-14B模型时&#xff0c;遇到一个实际问题&#xff1a;当我同时触发多个自动化任务时&#xff0c;系统响应明显变慢&#xff0c;甚至偶尔会出现任务失败。…...

OpenClaw飞书机器人集成:千问3.5-9B对话触发详解

OpenClaw飞书机器人集成&#xff1a;千问3.5-9B对话触发详解 1. 为什么选择飞书OpenClaw的私有化方案 去年团队内部开始尝试用AI助手处理日常事务时&#xff0c;我们面临一个典型困境&#xff1a;公有云机器人虽然开箱即用&#xff0c;但所有对话记录和文件都要经过第三方服务…...

基于BANG语言的Sigmoid算子开发与PyTorch集成实战指南

1. BANG语言与Sigmoid算子开发基础 第一次接触寒武纪BANG语言时&#xff0c;我被它类似CUDA但更简洁的语法设计惊艳到了。这种专为MLU硬件设计的异构编程语言&#xff0c;通过在C/C基础上扩展并行计算特性&#xff0c;让开发者能更高效地利用寒武纪芯片的算力资源。 BANG核心语…...