20240624在飞凌OK3588-C的Buildroot下查证GPIO64和gpiochip64的差异

20240624在飞凌OK3588-C的Buildroot下查证GPIO64和gpiochip64的差异
2024/6/24 20:19


GPIOchip代表GPIO控制器的编号,gpio代表特定GPIO的引脚号
本文以linux R4/Buildroot位例子,同样适用于Android12和其他【使用linux内核的】操作系统。

https://www.jianshu.com/p/481365ecafa0
linux GPIO

gpio_operation 通过/sys/文件接口操作IO端口 GPIO到文件系统的映射
◇  控制GPIO的目录位于/sys/class/gpio,操作需要管理员权限
◇  /sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号
◇  /sys/class/gpio/unexport 用于通知系统取消导出
◇  /sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始编号base,寄存器名称,引脚总数

导出一个引脚的操作步骤
◇  首先计算此引脚编号,引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数
◇  向/sys/class/gpio/export写入此编号,比如12号引脚,在shell中可以通过以下命令实现,命令成功后生成/sys/class/gpio/gpio12目录,如果没有出现相应的目录,说明此引脚不可导出
◇  direction文件,定义输入输入方向,可以通过下面命令定义为输出。direction接受的参数:in, out, high, low。high/low同时设置方向为输出,并将value设置为相应的1/0
◇  value文件是端口的数值,为1或0
手底下板子的引脚和引脚号的对应关系
A4    228
C5    245
B5    237
B4    236

关于引脚号的计算
以GPIO5_B4为例
PIN计算 A=0 B=1 C=2 D=3
pin=18+4=12
gpionumber = BANK32+PIN
所以对应的序号为5*32+12=172


相关的LOG:

root@ok3588:/# 
root@ok3588:/# cat sys/kernel/debug/gpio
gpiochip0: GPIOs 0-31, parent: platform/fd8a0000.gpio, gpio0:
 gpio-0   (                    |work                ) out lo 
 gpio-4   (                    |cd                  ) in  hi ACTIVE LOW
 gpio-24  (                    |vbus5v0-typec0      ) out lo 
 gpio-27  (                    |vbus5v0-typec1      ) out lo 

gpiochip1: GPIOs 32-63, parent: platform/fec20000.gpio, gpio1:
 gpio-38  (                    |bt-wake             ) out hi 
 gpio-44  (                    |snps,reset          ) out hi ACTIVE LOW
 gpio-54  (                    |vcc-5g              ) out lo ACTIVE LOW
 gpio-61  (                    |hdmirx-det          ) in  hi ACTIVE LOW

gpiochip2: GPIOs 64-95, parent: platform/fec30000.gpio, gpio2:
 gpio-84  (                    |vcc3v3-sdmmc        ) out hi 

gpiochip3: GPIOs 96-127, parent: platform/fec40000.gpio, gpio3:
 gpio-106 (                    |dsi0-en             ) out hi 
 gpio-113 (                    |enable              ) in  lo 
 gpio-118 (                    |dsi1-en             ) out hi 

gpiochip4: GPIOs 128-159, parent: platform/fec50000.gpio, gpio4:
 gpio-128 (                    |sbu1-dc             ) out lo 
 gpio-129 (                    |sbu1-dc             ) out lo 
 gpio-130 (                    |sbu2-dc             ) out lo 
 gpio-136 (                    |sbu2-dc             ) out lo 
 gpio-137 (                    |enable              ) out hi 

gpiochip5: GPIOs 509-511, parent: platform/rk806-pinctrl.1.auto, rk806-gpio, can sleep:
root@ok3588:/# 
root@ok3588:/# 
root@ok3588:/# 
 
root@ok3588:/# 
root@ok3588:/# 


root@ok3588:/# 
root@ok3588:/# cd /sys/class/gpio/
root@ok3588:/sys/class/gpio# 
root@ok3588:/sys/class/gpio# ls -l
total 0
--w------- 1 root root 4096 Jan  1 08:00 export
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip0 -> ../../devices/platform/fd8a0000.gpio/gpio/gpiochip0
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip128 -> ../../devices/platform/fec50000.gpio/gpio/gpiochip128
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip32 -> ../../devices/platform/fec20000.gpio/gpio/gpiochip32
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip509 -> ../../devices/platform/feb20000.spi/spi_master/spi2/spi2.0/rk806-pinctrl.1.auto/gpio/gpiochip509
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip64 -> ../../devices/platform/fec30000.gpio/gpio/gpiochip64
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip96 -> ../../devices/platform/fec40000.gpio/gpio/gpiochip96
--w------- 1 root root 4096 Jan  1 08:00 unexport
root@ok3588:/sys/class/gpio# 
root@ok3588:/sys/class/gpio# 


root@ok3588:/# 
soot@ok3588:/# cat /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl/pinmux-pins
Pinmux settings per pin
Format: pin (name): mux_owner gpio_owner hog?
pin 0 (gpio0-0): leds gpio0:0 function leds_gpio group work-led-gpio
pin 32 (gpio1-0): feb90000.serial (GPIO UNCLAIMED) function uart6 group uart6m1-xfer
pin 64 (gpio2-0): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 96 (gpio3-0): fe1c0000.ethernet (GPIO UNCLAIMED) function gmac1 group gmac1-rgmii-bus
pin 128 (gpio4-0): (MUX UNCLAIMED) gpio4:128
root@ok3588:/#


root@ok3588:/# 
root@ok3588:/# 
root@ok3588:/# cd /sys/class/gpio/
root@ok3588:/sys/class/gpio# 
root@ok3588:/sys/class/gpio# ls -l
total 0
--w------- 1 root root 4096 Jan  1 08:00 export
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip0 -> ../../devices/platform/fd8a0000.gpio/gpio/gpiochip0
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip128 -> ../../devices/platform/fec50000.gpio/gpio/gpiochip128
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip32 -> ../../devices/platform/fec20000.gpio/gpio/gpiochip32
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip509 -> ../../devices/platform/feb20000.spi/spi_master/spi2/spi2.0/rk806-pinctrl.1.auto/gpio/gpiochip509
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip64 -> ../../devices/platform/fec30000.gpio/gpio/gpiochip64
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip96 -> ../../devices/platform/fec40000.gpio/gpio/gpiochip96
--w------- 1 root root 4096 Jan  1 08:00 unexport
root@ok3588:/sys/class/gpio# 
root@ok3588:/sys/class/gpio# 
root@ok3588:/sys/class/gpio# echo 128 > export 
sh: echo: write error: Device or resource busy
root@ok3588:/sys/class/gpio# 
root@ok3588:/sys/class/gpio# echo 64 > export 
root@ok3588:/sys/class/gpio# 
root@ok3588:/sys/class/gpio# ls -l
total 0
--w------- 1 root root 4096 Jan  1 08:06 export
lrwxrwxrwx 1 root root    0 Jan  1 08:06 gpio64 -> ../../devices/platform/fec30000.gpio/gpiochip2/gpio/gpio64
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip0 -> ../../devices/platform/fd8a0000.gpio/gpio/gpiochip0
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip128 -> ../../devices/platform/fec50000.gpio/gpio/gpiochip128
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip32 -> ../../devices/platform/fec20000.gpio/gpio/gpiochip32
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip509 -> ../../devices/platform/feb20000.spi/spi_master/spi2/spi2.0/rk806-pinctrl.1.auto/gpio/gpiochip509
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip64 -> ../../devices/platform/fec30000.gpio/gpio/gpiochip64
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip96 -> ../../devices/platform/fec40000.gpio/gpio/gpiochip96
--w------- 1 root root 4096 Jan  1 08:00 unexport
root@ok3588:/sys/class/gpio# 
root@ok3588:/sys/class/gpio# cd gpio64/
root@ok3588:/sys/class/gpio/gpio64# 
root@ok3588:/sys/class/gpio/gpio64# ls -l
total 0
-rw-r--r-- 1 root root 4096 Jan  1 08:06 active_low
lrwxrwxrwx 1 root root    0 Jan  1 08:06 device -> ../../../gpiochip2
-rw-r--r-- 1 root root 4096 Jan  1 08:06 direction
-rw-r--r-- 1 root root 4096 Jan  1 08:06 edge
drwxr-xr-x 2 root root    0 Jan  1 08:06 power
lrwxrwxrwx 1 root root    0 Jan  1 08:06 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root 4096 Jan  1 08:06 uevent
-rw-r--r-- 1 root root 4096 Jan  1 08:06 value
root@ok3588:/sys/class/gpio/gpio64# 
root@ok3588:/sys/class/gpio/gpio64# cat direction 
in
root@ok3588:/sys/class/gpio/gpio64# cat value 
1
root@ok3588:/sys/class/gpio/gpio64# 
root@ok3588:/sys/class/gpio/gpio64# echo out > direction 
root@ok3588:/sys/class/gpio/gpio64# 
root@ok3588:/sys/class/gpio/gpio64# echo 1 > value 
root@ok3588:/sys/class/gpio/gpio64# 
root@ok3588:/sys/class/gpio/gpio64# cat direction 
out
root@ok3588:/sys/class/gpio/gpio64# 
root@ok3588:/sys/class/gpio/gpio64# cat value 
1
root@ok3588:/sys/class/gpio/gpio64# 
root@ok3588:/sys/class/gpio/gpio64# cd ..
root@ok3588:/sys/class/gpio# 
root@ok3588:/sys/class/gpio# ls -l
total 0
--w------- 1 root root 4096 Jan  1 08:06 export
lrwxrwxrwx 1 root root    0 Jan  1 08:06 gpio64 -> ../../devices/platform/fec30000.gpio/gpiochip2/gpio/gpio64
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip0 -> ../../devices/platform/fd8a0000.gpio/gpio/gpiochip0
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip128 -> ../../devices/platform/fec50000.gpio/gpio/gpiochip128
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip32 -> ../../devices/platform/fec20000.gpio/gpio/gpiochip32
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip509 -> ../../devices/platform/feb20000.spi/spi_master/spi2/spi2.0/rk806-pinctrl.1.auto/gpio/gpiochip509
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip64 -> ../../devices/platform/fec30000.gpio/gpio/gpiochip64
lrwxrwxrwx 1 root root    0 Jan  1 08:00 gpiochip96 -> ../../devices/platform/fec40000.gpio/gpio/gpiochip96
--w------- 1 root root 4096 Jan  1 08:00 unexport
root@ok3588:/sys/class/gpio# 
root@ok3588:/sys/class/gpio# 


root@ok3588:/sys/class/gpio# 
root@ok3588:/sys/class/gpio# cd gpiochip64/
root@ok3588:/sys/class/gpio/gpiochip64# ls -l
total 0
-r--r--r-- 1 root root 4096 Jan  1 08:15 base
lrwxrwxrwx 1 root root    0 Jan  1 08:15 device -> ../../../fec30000.gpio
-r--r--r-- 1 root root 4096 Jan  1 08:15 label
-r--r--r-- 1 root root 4096 Jan  1 08:15 ngpio
drwxr-xr-x 2 root root    0 Jan  1 08:15 power
lrwxrwxrwx 1 root root    0 Jan  1 08:15 subsystem -> ../../../../../class/gpio
-rw-r--r-- 1 root root 4096 Jan  1 08:00 uevent
root@ok3588:/sys/class/gpio/gpiochip64# cat base
64
root@ok3588:/sys/class/gpio/gpiochip64# 
root@ok3588:/sys/class/gpio/gpiochip64# cat device
cat: device: Is a directory
root@ok3588:/sys/class/gpio/gpiochip64# 
root@ok3588:/sys/class/gpio/gpiochip64# cat label 
gpio2
root@ok3588:/sys/class/gpio/gpiochip64# 
root@ok3588:/sys/class/gpio/gpiochip64# cat ngpio 
32
root@ok3588:/sys/class/gpio/gpiochip64# 
root@ok3588:/sys/class/gpio/gpiochip64# cat power/
cat: power/: Is a directory
root@ok3588:/sys/class/gpio/gpiochip64# 
root@ok3588:/sys/class/gpio/gpiochip64# cat subsystem
cat: subsystem: Is a directory
root@ok3588:/sys/class/gpio/gpiochip64# 
root@ok3588:/sys/class/gpio/gpiochip64# cat uevent 
root@ok3588:/sys/class/gpio/gpiochip64# 
root@ok3588:/sys/class/gpio/gpiochip64# 


参考资料:
百度:gpio64 gpiochip64

https://blog.csdn.net/weixin_46829095/article/details/129479648
GPIO应用


https://www.cnblogs.com/xingboy/p/16065582.html
Linux 操作GPIO--IMX6篇【转】


https://home.eeworld.com.cn/my/space-uid-361439-blogid-661069.html
MTK7688之openwrt下的GPIO操作


 

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

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

相关文章

java医院绩效考核系统源码:医院绩效考核的发展趋势、医院绩效考核的具体方法

java医院绩效考核系统源码:医院绩效考核的发展趋势、医院绩效考核的具体方法 医疗机构绩效考核是对医疗机构绩效进行评估和分析的一项重要工作。它对医疗机构的发展起到了重要的指导和推动作用。本文将会分析国际上医院绩效考核的发展趋势以及医院绩效考核的具体方…

MySQL中的Redo-log是什么?有什么作用?

用来实现数据的恢复,数据被更新到缓冲区但没刷磁盘,然后MySQL宕机了,MySQL会通过日志恢复数据。 1.为什么需要Redo-log日志? MySQL绝大部分引擎都是基于磁盘存储数据的,每次读写数据都走磁盘,效率十分低下…

AI绘画Stable Diffussion 实操教程: 真人图片秒变动漫风,亲手绘制你的专属动漫头像

大家好,我是向阳 你是否曾幻想过自己置身于动漫世界,拥有那些令人羡慕的二次元特征?随着人工智能技术的飞速发展,这一幻想已不再遥不可及。在本文中,我们将一起揭开Stable Diffusion技术的神秘面纱,探索如…

WebFlux 和 Spring Security 会碰出哪些火花?

项目创建成功后,我们添加一个接口,用来获取登录用户信息,如下: RestController public class UserController { GetMapping(“/user”) public Mono getCurrentUser(Mono principal) { return principal; } } 注意我们的返…

音频信号分析

目录 一,音频获取 二,信号的基本形态 三,衰减信号的频域信号 四,低频信号 五,高频信号 六,七个音节的频率 一,音频获取 我用电子琴(音色模式是卧式钢琴)&#xff…

Vue-Cli 创建vue2.0 + TypeScript 项目

这里写目录标题 一、创建项目名称二、选择 Manually select features三、勾选配置项四、选择vue版本五、其它配置 一、创建项目名称 vue create 项目名称(项目名字不能含义大写字母)二、选择 Manually select features (按箭头上下进行移动…

Windows系统Maven下载安装

下载: 官网地址:https://maven.apache.org/download.cgi 安装: 下载下来的是一个压缩包,首先将其解压到你的Maven目标安装位置 接下来为其配置其环境变量 (Maven的基础是Java,因此要首先确认已为你的电…

钡铼技术BL101串口6路Modbus转MQTT网关加速智慧城市部署

随着物联网技术的飞速发展,如何高效地整合传统设备与现代云端系统,成为了亟待解决的关键问题。钡铼技术,作为物联网领域的硬件设备制造商,近期推出的BL101六路串口Modbus转MQTT网关,正以其独特优势,为智慧城…

【漏洞复现】脸爱云一脸通智慧管理平台 SystemMng 管理用户信息泄露漏洞(XVE-2024-9382)

0x01 产品简介 脸爱云一脸通智慧管理平台是一套功能强大,运行稳定,操作简单方便,用户界面美观,轻松统计数据的一脸通系统。无需安装,只需在后台配置即可在浏览器登录。 功能包括:系统管理中心、人员信息管理中心、设备…

在WordPress上添加亚马逊联盟链接的三种方法

在互联网快速发展的今天,很多人都希望通过网络来增加收入,而加入亚马逊联盟计划(Amazon Associates)无疑是一个不错的选择。如果你有一个WordPress网站,那么在文章中添加亚马逊联盟链接是个很好的变现方式。今天&#…

倩女幽魂搬砖攻略:2024搬砖攻略大全!云手机强力辅助!

《倩女幽魂》手游是一款具有极高自由度和丰富玩法的角色扮演游戏。为了帮助玩家更好地了解并掌握游戏中的各种技巧和策略,本文将为大家提供详细的攻略指南。我们将从每日签到、任务升级、银两经营、必做活动和出金等多个方面详细介绍,帮助玩家轻松玩转游…

#C++ -STL容器之vector(浓缩版)#

vector容器是C标准库中的一个动态数组容器。 它允许你在运行时动态地添加或删除元素。它提供了随机访问的能力,这意味着你可以像访问数组一样直接通过索引访问元素,同时又具有动态大小的优势。 vector的功能与C语言中的数组十分相似,但是功…

MyBatis-Plus 查询不到数据,但使用 SQL 可以查询到数据的问题排查

目录 前言 一、问题描述 示例代码 二、排查步骤 1. 检查数据源配置 2. 检查实体类与数据库表结构 3. 检查 Mapper 接口 4. 检查 MyBatis-Plus 配置 5. 排查查询条件 6. 检查日志输出 7. 检查数据库连接问题 8. 检查全局配置和插件 三、解决方案 前言 在开发过程中&…

百度Agent初体验(制作步骤+感想)

现在AI Agent很火,最近注册了一个百度Agent体验了一下,并做了个小实验,拿它和零一万物(Yi Large)和文心一言(ERNIE-4.0-8K-latest)阅读了相同的一篇网页资讯,输出资讯摘要&#xff0…

[职场] 线上面试的准备工作 #知识分享#经验分享#媒体

线上面试的准备工作 面对求职中的面试,应届毕业生该做些什么准备呢?在这里,向各位分享面试前做好预案不慌张几点准备。现在许多面试是通过线上形式进行的。对于求职者来说,要做好两手准备。在这里,重点与大家分享线上面…

el-dialog el-select适配移动端

一、el-dialog 2024.06.20今天我学习了如何对el-dialog弹窗适配移动端展示,效果如下: 代码如下: media screen and (min-width: 220px) and (max-width: 600px) {::v-deep .el-dialog {width: 95% !important;} } 二、el-select 代码如下…

盘立方期货Kdj幅图指标公式源码

盘立方期货Kdj幅图指标公式源码&#xff1a; N:250; WR1:100-100*(HHV(HIGH,N)-CLOSE)/(HHV(HIGH,N)-LLV(LOW,N)),DOT,COLORLIGHTGREEN; EW:EMA(WR1,5); STICKLINE(WR1<20,WR1,20,1,0),COLORYELLOW; STICKLINE(WR1>80,WR1,80,1,0),COLORYELLOW; RSV:(CLOSE-LLV(LOW…

IDEA中如何使用Git及其在实际工作中如何进行开发(入职版,详细大量图演示)

1.你把代码拉一下 新入职一般都是拉取公司的代码&#xff0c;一般都是领导给你一个项目的git地址 一般是gitee(Gitee - 基于 Git 的代码托管和研发协作平台) 或者是云效(阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台) https://gitee.com/xxx/xxx.git /…

Linux 字符型设备 + platform总线 + sysfs设备模型

1 概述 第一部分先简单介绍下字符型设备 platform总线 sysfs设备模型的关系。 1.1 . 字符设备驱动 Linux设备驱动分三种&#xff0c;包括字符设备驱动、块设备驱动和网络设备驱动。字符设备只能按字节流先后顺序访问设备内存&#xff0c;不能随机访问。鼠标、触摸屏、LCD等…

Crypto++ 入门

一、简介 Crypto&#xff08;也称为CryptoPP、libcrypto或cryptlib&#xff09;是一个免费的开源C库&#xff0c;提供了多种加密方案。它由Wei Dai开发和维护&#xff0c;广泛应用于需要强大加密安全的各种应用程序中。该库提供了广泛的加密算法和协议的实现&#xff0c;包括&…