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

news2024/9/20 12:37:26

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.coloradmin.cn/o/1858472.html

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

相关文章

Java包介绍

今天看jdk文档,顺便写一下java几个包的作用。 java.applet 主要用于创建java applet小应用程序,可以嵌入到网页中能够呈现出特殊的效果,现在基本已经被废弃,很少使用。 java.awt AWT 是Abstract Window ToolKit (抽象窗口工具包…

分享9款AI抠图神器:不会PS?AI一键批量抠图,3秒轻松搞定!(建议收藏)

文章首发于公众号:X小鹿AI副业 大家好,我是程序员X小鹿,前互联网大厂程序员,自由职业2年,也一名 AIGC 爱好者,持续分享更多前沿的「AI 工具」和「AI副业玩法」,欢迎一起交流~ 今天被一位在用 AI…

猫头虎 AI 前沿科技探索之路(持续更新):ChatGPT/GPT-4 科研应用、论文写作、数据分析与 AI 绘图及文生视频实战全攻略

猫头虎 AI 前沿科技探索之路(持续更新):ChatGPT/GPT-4 科研应用、论文写作、数据分析与 AI 绘图及文生视频实战全攻略 背景介绍 随着人工智能技术的飞速发展,AI 的应用已经渗透到各个领域,从商业决策到医疗健康,再到日常生活中的…

【扩散模型(一)】Stable Diffusion中的重建分支(reconstruction branch)和条件分支(condition branch)

Stable Diffusion 是一种基于扩散模型的生成模型,用于生成图像等数据。在解释 Stable Diffusion 的过程中,经常会提到两个主要的分支:重建分支(reconstruction branch)和条件分支(condition branch&#xf…

猫头虎 分享已解决Error || **Data Leakage**: `Unexpectedly high validation performance`

猫头虎 分享已解决Error || Data Leakage: Unexpectedly high validation performance 🐯 摘要 📄 大家好,我是猫头虎,一名专注于人工智能领域的博主。在AI开发中,我们经常会遇到各种各样的错误,其中Data…

通过ETLCloud实现SQL Server数据同步至Oracle

SQL Server与Oracle作为全球两大主流的关系型数据库管理系统(RDBMS),在企业级应用中扮演着至关重要的角色。它们各自凭借独特的技术优势、强大的数据处理能力以及高度的可扩展性,支撑着从中小型企业到大型跨国公司的各类复杂业务需…

【面试题】前端 移动端自适应?_前端移动端适配面试题

设备像素比 设备像素比 (DevicePixelRatio) 指的是设备物理像素和逻辑像素的比例 。比如 iPhone6 的 DPR 是2。 设备像素比 物理像素 / 逻辑像素。可通过 window.devicePixelRatio 获取,CSS 媒体查询代码如下 media (-webkit-min-device-pixel-ratio: 3), (min-…

Springboot 前端传参后台接收当不存在参数bean对象时报错解决

后端接收代码 PostMapping(value "/updateUser") public String updateUser(RequestBody SysUser sysUser) {} 当前端传送多于的参数时报错如下: Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: U…

汽车抬头显示器HUD阳光倒灌实验太阳光模拟器

简述 HUD阳光倒灌实验是评估汽车抬头显示器(HUD)在强烈日照条件下的性能表现的一种测试方法。该实验通过模拟太阳光照射,检测HUD在阳光直射下的显示效果,以确保驾驶者在强烈日照下仍能清晰地看到HUD显示的信息,从而提…

python+unity实现数字人跟随运动

效果如下 设计思路 1 python通过摄像头提取人物肢体关键点信息 2 通过UDP将获取到人体信息发送给Unity 3 unity将获取的的人物信息进行解析 4 将解析的数据赋值给模型骨架 代码获取

CentOS配置本地yum源

版本说明 操作系统版本:CentOS7.9 虚拟机版本 虚拟机打快照 首先给虚拟机打个快照,点击图下所示位置 命名快照之后,点击拍摄快照 可以参考图下所示进行管理和恢复快照 迁移原有yum源 先进入到/etc/yum.repos.d/ ,可以看到有很多…

鸿蒙NEXT实战开发: 依据前端对http请求进行二次简单封装

一、为什么要对http请求进行封装? 在我看来二次封装有一下几点好处 代码封装之后,开发人员只用关注业务层面的东西,不用去过多浪费时间在接口请求数据处理上。封装之后代码更加简洁,通俗易懂,方便后期维护&#xff0…

基于YOLOv5的交通标志检测的设计与实现(PyQT页面+YOLOv5模型+数据集)

简介 在智能交通系统中,交通标志的准确检测与识别对提高道路安全和交通效率至关重要。为了实现这一目标,我们开发了一种基于YOLOv5目标检测模型的交通标志检测系统。本报告将详细介绍该系统的实际应用与实现,包括系统架构、功能实现、使用说明、检测示例、数据集获取与介绍…

【数据结构与算法 经典例题】使用栈实现队列(图文详解)

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法 经典例题》C语言 期待您的关注 目录 ​​一、问题描述 二、前置知识 三、解题思路 原理: 图解&…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十六)

课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 25 - 26 节) P25《24.Stage模型-UIAblity生命周期》 stage之所以叫这个名字,是因为它在运行时&#xff0…

骚操作:如何让一个网页一直处于空白情况?

🧑‍💻 写在开头 点赞 收藏 学会🤣🤣🤣 如题,惯性思路很简单,就是直接撸上一个空内容的html。 注:以下都是在现代浏览器中执行,主要为**Chrome 版本 120.0.6099.217&…

TPS61085非同步650kHz,1.2MHz, 18.5V升压DCDC芯片

1 特点 TPS61085外观和丝印PMKI 2.3 V 至 6 V 输入电压范围 具有 2.0A 开关电流的 18.5V 升压转换器 650kHz/1.2MHz 可选开关频率 可调软启动 热关断 欠压闭锁 8引脚VSSOP封装 8引脚TSSOP封装 2 应用 手持设备 GPS接收器 数码相机 便携式应用 DSL调制解调器 PCMCIA卡 TFT LCD…

ChatGPT API教程在线对接OpenAI APIKey技术教程

一、OpenAI基本库介绍 您可以通过 HTTP 请求与 API 进行交互,这可以通过任何编程语言实现。我们提供官方的 Python 绑定、官方的 Node.js 库,以及由社区维护的库。 要安装官方的 Python 绑定,请运行以下命令: pip install open…

全国计算机二级C++题库笔记

全国计算机二级C题库笔记 Ⅰ. 选择题专项训练1 公共基础部分2 二级C程序设计第1~4章》每章标题1. C标识符命名规则2. 面向对象的三个主要特征3. C的四个开发步骤4. 关于类和对象的叙述5. !和&&的作用6. C枚举类型初值问题7. ASCII码对照表8. 运算符两边的数据类型&…

ONLYOFFICE 8.1版本桌面编辑器深度体验:创新功能与卓越性能的结合

ONLYOFFICE 8.1版本桌面编辑器深度体验:创新功能与卓越性能的结合 随着数字化办公的日益普及,一款高效、功能丰富的办公软件成为了职场人士的必备工具。ONLYOFFICE团队一直致力于为用户提供全面而先进的办公解决方案。最新推出的ONLYOFFICE 8.1版本桌面编…