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

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

http://www.lryc.cn/news/401736.html

相关文章:

  • 35.UART(通用异步收发传输器)-RS232(2)
  • OpenLayers学习笔记-点位聚合
  • flutter实现语言的国际化
  • 服务端正常启动了,但是客户端请求不到
  • 鸿蒙开发 -本地数据库操作
  • 主机安全-进程、命令攻击与检测
  • FPGA FIR fdatool filter designer MATLAB
  • 水表数字识别2:Pytorch DBNet实现水表数字检测(含训练代码和数据集)
  • Windows 点云生成二维栅格图 [附C++完整代码实现]
  • SpringBoot结合ip2region实现博客评论显示IP属地
  • 设计模式使用场景实现示例及优缺点(行为型模式——策略模式)
  • ReactRouter v6升级的步骤
  • 【JVM实战篇】内存调优:内存问题诊断+案例实战
  • 专业条码二维码扫描设备和手机二维码扫描软件的区别?
  • 基于嵌入式Linux的高性能车载娱乐系统设计与实现 —— 融合Qt、FFmpeg和CAN总线技术
  • 探索IP形象设计:快速掌握设计要点
  • 泛微Ecology8明细表对主表赋值
  • opencv—常用函数学习_“干货“_5
  • JAVA零基础学习1(CMD、JDK、环境变量、变量和键盘键入、IDEA)
  • Redis的安装配置及IDEA中使用
  • ubuntu 物理内存爆炸而不使用虚拟内存的问题
  • Python实现音频均衡和降噪
  • 【JavaScript 算法】贪心算法:局部最优解的构建
  • Azcopy Sync同步Azure文件共享
  • 单例模式 饿汉式和懒汉式的区别
  • Python中的模块和包的定义以及如何在Python中导入和使用它们
  • 设计模式使用场景实现示例及优缺点(结构型模式——组合模式)
  • 《系统架构设计师教程(第2版)》第11章-未来信息综合技术-06-云计算(Cloud Computing) 技术概述
  • 网络安全工作者如何解决网络拥堵
  • 电脑显示mfc140u.dll丢失的修复方法,总结7种有效的方法