GNU/Linux - U-BOOT的GPIO command
在嵌入式Linux开发中,先运行的是u-boot,然后再加载Linux内核。
启动时如果设置了u-boot等待时间,在等待时间内,按任意键就会进入u-boot命令行环境。
在u-boot命令行环境下,可以使用gpio命令来操作GPIO。
Synopsis
gpio <input|set|clear|toggle> <pin>
gpio read <name> <pin>
gpio status [-a] [<bank>|<pin>]
gpio 命令用于访问通用输入/输出。
The gpio command is used to access General Purpose Inputs/Outputs.
gpio input
将 GPIO 引脚切换为输入模式。
Switch the GPIO pin to input mode.
gpio set
将 GPIO 引脚切换至输出模式,并将信号设置为 1。
Switch the GPIO pin to output mode and set the signal to 1.
gpio clear
将 GPIO 引脚切换至输出模式,并将信号设置为 0。
Switch the GPIO pin to output mode and set the signal to 0.
gpio toggle
将 GPIO 引脚切换至输出模式,并反转信号状态。
Switch the GPIO pin to output mode and reverse the signal state.
gpio read
读取 GPIO 引脚的信号状态,并将其保存在环境变量名称中。
Read the signal state of the GPIO pin and save it in environment variable name.
gpio status
显示一个或多个 GPIO 的状态。默认情况下,只显示声称的 GPIO。 gpio status 命令的输出字段有:
Display the status of one or multiple GPIOs. By default only claimed GPIOs are displayed. gpio status command output fields are:
<name>: <function>: <value> [x] <label>
函数可以取以下值:
function can take the following values:
-
output
pin configured in gpio output, value indicates the pin’s level
-
input
pin configured in gpio input, value indicates the pin’s level
-
func
pin configured in alternate function, followed by label which shows pinmuxing label.
-
unused
pin not configured
[x] or [ ] indicate respectively if the gpio is used or not.
label shows the gpio label.
Parameters
-
-a
Display GPIOs irrespective of being claimed. 显示 GPIO,无论其是否被申领。
-
bank
Name of a bank of GPIOs to be displayed. 显示 GPIO 组的名称。
-
pin
Name of a single GPIO to be displayed or manipulated.要显示或操作的单个 GPIO 的名称。
Examples
Switch the status of a GPIO:
=> gpio set a5
gpio: pin a5 (gpio 133) value is 1
=> gpio clear a5
gpio: pin a5 (gpio 133) value is 0
=> gpio toggle a5
gpio: pin a5 (gpio 133) value is 1
=> gpio read myvar a5
gpio: pin a5 (gpio 133) value is 1
=> echo $myvar
1
=> gpio toggle a5
gpio: pin a5 (gpio 133) value is 0
=> gpio read myvar a5
gpio: pin a5 (gpio 133) value is 0
=> echo $myvar
0
Show the GPIO status:
=> gpio status
Bank GPIOA:
GPIOA1: func rgmii-0
GPIOA2: func rgmii-0
GPIOA7: func rgmii-0
GPIOA10: output: 0 [x] hdmi-transmitter@39.reset-gpios
GPIOA13: output: 1 [x] red.gpios
Bank GPIOB:
GPIOB0: func rgmii-0
GPIOB1: func rgmii-0
GPIOB2: func uart4-0
GPIOB7: input: 0 [x] mmc@58005000.cd-gpios
GPIOB11: func rgmii-0
Configuration
gpio 命令只有在 CONFIG_CMD_GPIO=y 时可用。gpio 读取命令只有在 CONFIG_CMD_GPIO_READ=y 时可用。
The gpio command is only available if CONFIG_CMD_GPIO=y. The gpio read command is only available if CONFIG_CMD_GPIO_READ=y.
Return value
如果命令成功执行,返回值 $? 设置为 0;如果命令出错,返回值 $? 设置为 1。
If the command succeds the return value $? is set to 0. If an error occurs, the return value $? is set to 1.
我的u-boot版本和构建信息:
u-boot=> help
...
version - print monitor, compiler and linker version
...
u-boot=> version
U-Boot 2023.04-lf_v2023.04+g49b102d988 (Nov 21 2023 - 07:28:53 +0000)
aarch64-poky-linux-gcc (GCC) 12.3.0
GNU ld (GNU Binutils) 2.40.0.20230703
u-boot=> gpio status -a
Bank GPIO2_:
GPIO2_0: input: 1 [ ]
GPIO2_1: output: 0 [ ]
GPIO2_2: input: 0 [ ]
GPIO2_3: input: 0 [ ]
GPIO2_4: input: 0 [ ]
GPIO2_5: input: 0 [ ]
GPIO2_6: input: 0 [ ]
GPIO2_7: input: 0 [ ]
GPIO2_8: input: 0 [ ]
GPIO2_9: input: 0 [ ]
GPIO2_10: input: 0 [ ]
GPIO2_11: output: 0 [ ]
GPIO2_12: input: 0 [ ]
GPIO2_13: input: 1 [ ]
GPIO2_14: input: 0 [ ]
GPIO2_15: input: 0 [ ]
GPIO2_16: input: 0 [ ]
GPIO2_17: input: 0 [ ]
GPIO2_18: input: 0 [ ]
GPIO2_19: input: 0 [ ]
GPIO2_20: input: 0 [ ]
GPIO2_21: input: 0 [ ]
GPIO2_22: input: 1 [ ]
GPIO2_23: input: 0 [ ]
GPIO2_24: input: 0 [ ]
GPIO2_25: input: 0 [ ]
GPIO2_26: input: 0 [ ]
GPIO2_27: input: 0 [ ]
GPIO2_28: input: 1 [ ]
GPIO2_29: input: 0 [ ]
GPIO2_30: input: 0 [ ]
GPIO2_31: input: 0 [ ]
Bank GPIO3_:
GPIO3_0: input: 1 [x] mmc@42860000.cd-gpios
GPIO3_1: input: 0 [ ]
GPIO3_2: input: 0 [ ]
GPIO3_3: input: 0 [ ]
GPIO3_4: input: 0 [ ]
GPIO3_5: input: 0 [ ]
GPIO3_6: input: 0 [ ]
GPIO3_7: input: 0 [ ]
GPIO3_8: input: 0 [ ]
GPIO3_9: input: 0 [ ]
GPIO3_10: input: 0 [ ]
GPIO3_11: input: 0 [ ]
GPIO3_12: input: 0 [ ]
GPIO3_13: input: 0 [ ]
GPIO3_14: input: 0 [ ]
GPIO3_15: input: 0 [ ]
GPIO3_16: input: 0 [ ]
GPIO3_17: input: 0 [ ]
GPIO3_18: input: 0 [ ]
GPIO3_19: input: 0 [ ]
GPIO3_20: input: 0 [ ]
GPIO3_21: input: 0 [ ]
GPIO3_22: input: 0 [ ]
GPIO3_23: input: 0 [ ]
GPIO3_24: input: 0 [ ]
GPIO3_25: input: 0 [ ]
GPIO3_26: input: 0 [ ]
GPIO3_27: input: 0 [ ]
GPIO3_28: input: 0 [ ]
GPIO3_29: input: 0 [ ]
GPIO3_30: input: 0 [ ]
GPIO3_31: input: 0 [ ]
Bank GPIO4_:
GPIO4_0: input: 0 [ ]
GPIO4_1: input: 0 [ ]
GPIO4_2: input: 0 [ ]
GPIO4_3: input: 0 [ ]
GPIO4_4: input: 0 [ ]
GPIO4_5: input: 0 [ ]
GPIO4_6: input: 0 [ ]
GPIO4_7: input: 0 [ ]
GPIO4_8: input: 0 [ ]
GPIO4_9: input: 0 [ ]
GPIO4_10: input: 0 [ ]
GPIO4_11: input: 0 [ ]
GPIO4_12: input: 0 [ ]
GPIO4_13: input: 0 [ ]
GPIO4_14: input: 0 [ ]
GPIO4_15: input: 0 [ ]
GPIO4_16: input: 0 [ ]
GPIO4_17: input: 1 [ ]
GPIO4_18: input: 0 [ ]
GPIO4_19: input: 0 [ ]
GPIO4_20: input: 0 [ ]
GPIO4_21: input: 0 [ ]
GPIO4_22: input: 0 [ ]
GPIO4_23: input: 0 [ ]
GPIO4_24: input: 1 [ ]
GPIO4_25: input: 0 [ ]
GPIO4_26: input: 0 [ ]
GPIO4_27: input: 0 [ ]
GPIO4_28: input: 0 [ ]
GPIO4_29: input: 0 [ ]
GPIO4_30: input: 0 [ ]
GPIO4_31: input: 0 [ ]
Bank GPIO1_:
GPIO1_0: input: 1 [ ]
GPIO1_1: input: 1 [ ]
GPIO1_2: input: 0 [ ]
GPIO1_3: input: 0 [ ]
GPIO1_4: input: 0 [ ]
GPIO1_5: input: 0 [ ]
GPIO1_6: input: 0 [ ]
GPIO1_7: input: 1 [ ]
GPIO1_8: input: 0 [ ]
GPIO1_9: input: 0 [ ]
GPIO1_10: input: 0 [ ]
GPIO1_11: input: 0 [ ]
GPIO1_12: input: 0 [ ]
GPIO1_13: input: 0 [ ]
GPIO1_14: input: 0 [ ]
GPIO1_15: input: 0 [ ]
GPIO1_16: input: 0 [ ]
GPIO1_17: input: 0 [ ]
GPIO1_18: input: 0 [ ]
GPIO1_19: input: 0 [ ]
GPIO1_20: input: 0 [ ]
GPIO1_21: input: 0 [ ]
GPIO1_22: input: 0 [ ]
GPIO1_23: input: 0 [ ]
GPIO1_24: input: 0 [ ]
GPIO1_25: input: 0 [ ]
GPIO1_26: input: 0 [ ]
GPIO1_27: input: 0 [ ]
GPIO1_28: input: 0 [ ]
GPIO1_29: input: 0 [ ]
GPIO1_30: input: 0 [ ]
GPIO1_31: input: 0 [ ]
GPIO bank和pin name可以参照status的结果,然后运行gpio命令:
u-boot=> gpio status GPIO3_
Bank GPIO3_:
GPIO3_0: input: 1 [x] mmc@42860000.cd-gpios
u-boot=> gpio status GPIO3_0
Bank GPIO3_:
GPIO3_0: input: 1 [x] mmc@42860000.cd-gpios
u-boot=> gpio status GPIO3_1
Bank GPIO3_:
GPIO3_1: input: 0 [ ]
u-boot=> gpio set GPIO2_11
gpio: pin GPIO2_11 (gpio 11) value is 1
u-boot=> gpio clear GPIO2_11
gpio: pin GPIO2_11 (gpio 11) value is 0
参考:
gpio command — Das U-Boot unknown version documentation
相关文章:
GNU/Linux - U-BOOT的GPIO command
在嵌入式Linux开发中,先运行的是u-boot,然后再加载Linux内核。 启动时如果设置了u-boot等待时间,在等待时间内,按任意键就会进入u-boot命令行环境。 在u-boot命令行环境下,可以使用gpio命令来操作GPIO。 Synopsis gpi…...

35.UART(通用异步收发传输器)-RS232(2)
(1)RS232接收模块visio框图: (2)接收模块Verilog代码编写: /* 常见波特率: 4800、9600、14400、115200 在系统时钟为50MHz时,对应计数为: (1/4800) * 10^9 /20 -1 10416 …...
OpenLayers学习笔记-点位聚合
需求 用户点击行政区划等操作后,从后台获取区域内的点位数据,在地图上聚合显示。用户手动取消聚合,点位直接渲染在地图上。 实现过程 使用后台返回的点位数据,通过new ol.source.Vector({features})创建矢量数据源。使用new ol.source.Cluster({source})创建聚合标注数据…...

flutter实现语言的国际化
目录 前言 一、GetX实现国际化(推荐) 1.安装Getx 2.创建国际化的文件 3.使用国际化字符串 4.配置GetMaterialApp 5.更改语言 6.系统语言 编辑 7.原生工程配置 1.iOS工程配 1.打开iOS工程,在Project的info里面添加语言 2.创建String File文件 2.andr…...
服务端正常启动了,但是客户端请求不到
服务端正常启动了,但是客户端请求不到有哪些原因?如何排查? 如果客户端请求的接口没有响应,排查的方式: 检查接口IP地址是否正确,ping一下接口地址。 检查被测接口端口号是否正确,可以在本机Telnet接口的IP和端口号…...
鸿蒙开发 -本地数据库操作
// 1导入模块 import relationalStore from @ohos.data.relationalStore;export class AthUserDbManager{//2.获取RdbStore实例,要注意的是,此处的getContext(this)用于获取应用上下文:getcreatDbtable(dbname:string){//配置数据库信息:const STORE_CONFIG :relationalStor…...

主机安全-进程、命令攻击与检测
目录 概述反弹shell原理nc/dev/xxx反弹shell下载不落地反弹Shell各种语言反弹shell linux提权sudosuid提权mysql提权 Dnslog参考 概述 本文更新通过在主机(不含容器)上直接执行命令或启动进程来攻击的场景。检测方面以字节跳动的开源HIDS elkeid举例。每…...

FPGA FIR fdatool filter designer MATLAB
位数问题 fdatool 先确定输入信号的位宽,比如17位在fdatool中,选set quantization parameters 选input/output 设置input word length 为17bit(not confirmed) fir compiler implementation 注意: 当设置输入位宽为16位时,ip核…...

水表数字识别2:Pytorch DBNet实现水表数字检测(含训练代码和数据集)
水表数字识别2:Pytorch DBNet实现水表数字检测(含训练代码和数据集) 目录 水表数字识别2:Pytorch DBNet实现水表数字检测(含训练代码和数据集) 1.前言 2. 水表数字识别的方法 3. 水表数字识别数据集 4. 水表数字分割模型训练 (1&#x…...
Windows 点云生成二维栅格图 [附C++完整代码实现]
点云压缩-2D栅格图 一、点云压缩(二维栅格图)二、算法流程三、代码实现四、结果可视化一、点云压缩(二维栅格图) 点云压缩:点云是海量点的集合,其数据量通常非常庞大。直接存储这些未经压缩的点云数据会消耗大量的存储空间,特别是在处理大规模的点云数据时,这个问题变得…...

SpringBoot结合ip2region实现博客评论显示IP属地
你好呀,我是小邹。 在现代的Web应用中,特别是博客和论坛类网站,为用户提供地理定位服务(如显示用户所在地理位置)可以极大地增强用户体验。本文将详细探讨如何使用Java和相关技术栈来实现在博客评论中显示用户的地址信…...
设计模式使用场景实现示例及优缺点(行为型模式——策略模式)
在遥远的王国里,有三个重要的角色:国王策略模式、他的皇家顾问算法家族,以及年轻的骑士接口。国王策略模式统治着整个王国,他的职责是确保每一个编程问题都能找到最合适的解决方案。 有一天,王国遇到了一场危机。编程王…...
ReactRouter v6升级的步骤
React Router v6 引入了一个 Routes 组件,它有点像 Switch ,但功能要强大得多。与 Switch 相比, Routes 的主要优势在于: <Routes> 中的所有 <Route> 和 <Link> 都是相对的。这导致在 <Route path> 和 &…...

【JVM实战篇】内存调优:内存问题诊断+案例实战
文章目录 诊断内存快照在内存溢出时生成内存快照MAT分析内存快照MAT内存泄漏检测的原理支配树介绍如何在不内存溢出情况下生成堆内存快照?MAT查看支配树MAT如何根据支配树发现内存泄漏 运行程序的内存快照导出和分析快照**大文件的处理** 案例实战案例1:…...

专业条码二维码扫描设备和手机二维码扫描软件的区别?
条码二维码技术已广泛应用于我们的日常生活中,从超市结账到公交出行,再到各类活动的入场验证,条码二维码的便捷性不言而喻,而在条码二维码的扫描识别读取过程中,专业扫描读取设备和手机二维码扫描软件成为了两大主要工…...

基于嵌入式Linux的高性能车载娱乐系统设计与实现 —— 融合Qt、FFmpeg和CAN总线技术
随着汽车智能化的发展,车载娱乐系统已成为现代汽车的标配。本文介绍了一个基于Linux的车载娱乐系统的设计与实现过程。该系统集成了音视频娱乐、导航、车辆信息显示等功能,旨在提供安全、便捷、丰富的驾驶体验。 1. 项目概述 随着汽车智能化的发展&…...

探索IP形象设计:快速掌握设计要点
随着市场竞争的加剧,越来越多的企业开始关注品牌形象的塑造和推广。在品牌形象中,知识产权形象设计是非常重要的方面。在智能和互联网的趋势下,未来的知识产权形象设计可能会更加关注数字和社交网络。通过数字技术和社交媒体平台,…...

泛微Ecology8明细表对主表赋值
文章目录 [toc]1.需求及效果1.1 需求1.2 效果2.思路与实现3.结语 1.需求及效果 1.1 需求 在明细表中的项目经理,可以将值赋值给主表中的项目经理来作为审批人员 1.2 效果 在申请人保存或者提交后将明细表中的人名赋值给主表中对应的值2.思路与实现 在通过js测…...
opencv—常用函数学习_“干货“_5
目录 十五、图像分割 简单阈值分割 (threshold) 自适应阈值分割 (adaptiveThreshold) 颜色范围分割 (inRange) 分水岭算法 (watershed) 泛洪填充 (floodFill) GrabCut算法 (grabCut) 距离变换 (distanceTransform) 最大稳定极值区域检测 (MSER) 均值漂移滤波 (pyrMean…...

JAVA零基础学习1(CMD、JDK、环境变量、变量和键盘键入、IDEA)
JAVA零基础学习1(CMD、JDK、环境变量、变量和键盘键入、IDEA) CMD常见命令配置环境变量JDK的下载和安装变量变量的声明和初始化声明变量初始化变量 变量的类型变量的作用域变量命名规则示例代码 键盘键入使用 Scanner 类读取输入步骤示例代码 常用方法处…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...

李沐--动手学深度学习--GRU
1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...