# hb_gpioinfo

`hb_gpioinfo` 是一个用于显示 GPIO 引脚信息的工具。它支持以下功能：

- 显示 GPIO 引脚的基本信息（如引脚名称、偏移量、方向、偏置、驱动方式等）。
- 显示引脚的当前状态（如输入 / 输出、活动低电平、边缘检测等）。
- 针对特定平台，显示引脚的额外功能信息（如引脚功能、引脚编号等）。

## 语法说明

以下是执行 `hb_gpioinfo` 的命令格式：

```bash
hb_gpioinfo [OPTIONS] [line]...
```

## 参数选项说明

以下是 `chip_log` 支持的选项及其说明：

- `-c, --chip <chip>`：限制范围到特定的 GPIO 芯片。
- `-h, --help`：显示帮助信息并退出。
- `-s, --strict`：检查所有引脚，不假设引脚名称是唯一的。
- `-v, --version`：显示版本信息并退出。

## 各项命令选项及其功能说明

### 显示帮助信息

命令：

```bash
hb_gpioinfo --help
```

功能：
显示该命令的使用帮助信息。

```bash
Usage: hb_gpioinfo [OPTIONS] [line]...
Print information about GPIO lines.

Lines are specified by name, or optionally by offset if the chip option is provided.

If no lines are specified then all lines are displayed.

Options:
  -c, --chip <chip>	restrict scope to a particular chip
  -h, --help	display this help and exit
  -s, --strict	check all lines - don't assume line names are unique
      --unquoted	don't quote line or consumer names
  -v, --version	output version information and exit
```

### 显示所有 GPIO 引脚信息

命令：

```bash
root@buildroot:~# hb_gpioinfo
```

功能：
显示系统中所有 GPIO 引脚的详细信息。

打印输出：

```bash
root@buildroot:~# hb_gpioinfo
gpiochip0 - 8 lines: @31000000.gpio: @498-505
        [Number]                [Mode]  [Status]  [GpioName]       [PinName]          [PinNum]   [PinFunc]
        line  0:        unnamed input                             AON_GPIO_PIN0         498      aon_gpio_0
        line  1:        unnamed input                             AON_GPIO_PIN1         499      Default
        line  2:        unnamed input  active-low  GPIO Key Power AON_GPIO_PIN2         500      aon_gpio_2
        line  3:        unnamed input                             AON_GPIO_PIN3         501      Default
        line  4:        unnamed input                             AON_GPIO_PIN4         502      aon_gpio_4
        line  5:        unnamed input              id             AON_ENV_VDD           503      aon_gpio_5
        line  6:        unnamed input              id             AON_ENV_CNN0          504      aon_gpio_6
        line  7:        unnamed input                             AON_ENV_CNN1          505      aon_gpio_7
gpiochip1 - 31 lines: @35060000.gpio: @466-496
        [Number]                [Mode]  [Status]  [GpioName]       [PinName]          [PinNum]   [PinFunc]
        line  0:        unnamed input                             HSIO_ENET_MDC         466      enetgrp
        line  1:        unnamed input                             HSIO_ENET_MDIO        467      enetgrp
        line  2:        unnamed input                             HSIO_ENET_TXD_0       468      enetgrp
        line  3:        unnamed input                             HSIO_ENET_TXD_1       469      enetgrp
        line  4:        unnamed input                             HSIO_ENET_TXD_2       470      enetgrp
        line  5:        unnamed input                             HSIO_ENET_TXD_3       471      enetgrp
        line  6:        unnamed input                             HSIO_ENET_TXEN        472      enetgrp
        line  7:        unnamed input                             HSIO_ENET_TX_CLK      473      enetgrp
        line  8:        unnamed input                             HSIO_ENET_RX_CLK      474      enetgrp
        line  9:        unnamed input                             HSIO_ENET_RXD_0       475      enetgrp
        line 10:        unnamed input                             HSIO_ENET_RXD_1       476      enetgrp
        line 11:        unnamed input                             HSIO_ENET_RXD_2       477      enetgrp
        line 12:        unnamed input                             HSIO_ENET_RXD_3       478      enetgrp
        line 13:        unnamed input                             HSIO_ENET_RXDV        479      enetgrp
        line 14:        unnamed input                             HSIO_ENET_PHY_CLK     480      enetgrp
        line 15:        unnamed input                             HSIO_SD_WP            481      sdgrp
        line 16:        unnamed input                             HSIO_SD_XLK           482      sdgrp
        line 17:        unnamed input                             HSIO_SD_CMD           483      sdgrp
        line 18:        unnamed input                             HSIO_SD_CDN           484      sdgrp
        line 19:        unnamed input                             HSIO_SD_DATA0         485      sdgrp
        line 20:        unnamed input                             HSIO_SD_DATA1         486      sdgrp
        line 21:        unnamed input                             HSIO_SD_DATA2         487      sdgrp
        line 22:        unnamed input                             HSIO_SD_DATA3         488      sdgrp
        line 23:        unnamed input                             HSIO_SDIO_WP          489      sdiogrp
        line 24:        unnamed input                             HSIO_SDIO_XLK         490      sdiogrp
        line 25:        unnamed input                             HSIO_SDIO_CMD         491      sdiogrp
        line 26:        unnamed output             power          HSIO_SDIO_CDN         492      hsio_gpio0_26
        line 27:        unnamed input                             HSIO_SDIO_DATA0       493      sdiogrp
        line 28:        unnamed input                             HSIO_SDIO_DATA1       494      sdiogrp
        line 29:        unnamed input                             HSIO_SDIO_DATA2       495      sdiogrp
        line 30:        unnamed input                             HSIO_SDIO_DATA3       496      sdiogrp
...
```

结果解析：

每个引脚的详细信息以以下格式显示：

```bash
line <N>: <GpioName> <Mode> <Status> <PinName> <PinNum> <PinFunc>
```

- `line <N>`：引脚的编号。
- `<GpioName>`： GPIO 引脚的名称（如果未命名则显示为 unnamed）。
- `<Mode>`：引脚模式（如 input 或 output）。
- `<Status>`：引脚状态（如 active-low、 bias=pull-up、 drive=open-drain 等）。
- `<PinName>`：引脚的名称。
- `<PinNum>`：引脚的编号。
- `<PinFunc>`：引脚的复用功能。

### 显示特定 GPIO 芯片的信息

命令：

```bash
root@buildroot:~# hb_gpioinfo -c gpiochip4
```

功能：
仅显示 GPIO 芯片 gpiochip4 的引脚信息。

打印输出：

```bash
root@buildroot:~# hb_gpioinfo -c gpiochip4
gpiochip4 - 32 lines: @34120000.gpio: @379-410
        [Number]                [Mode]  [Status]  [GpioName]       [PinName]          [PinNum]   [PinFunc]
        line  0:        unnamed input                             LSIO_UART7_RX         379      lsio_gpio0_0
        line  1:        unnamed input                             LSIO_UART7_TX         380      lsio_gpio0_1
        line  2:        unnamed input                             LSIO_UART7_CTS        381      lsio_gpio0_2
        line  3:        unnamed input                             LSIO_UART7_RTS        382      lsio_gpio0_3
        line  4:        unnamed input                             LSIO_UART1_RX         383      lsio_gpio0_4
        line  5:        unnamed input                             LSIO_UART1_TX         384      lsio_gpio0_5
        line  6:        unnamed input                             LSIO_UART1_CTS        385      lsio_gpio0_6
        line  7:        unnamed input                             LSIO_UART1_RTS        386      lsio_gpio0_7
        line  8:        unnamed input                             LSIO_UART2_RX         387      uart2grp
        line  9:        unnamed input                             LSIO_UART2_TX         388      uart2grp
        line 10:        unnamed input              scl            LSIO_UART3_RX         389      i2c5grp
        line 11:        unnamed input              sda            LSIO_UART3_TX         390      i2c5grp
        line 12:        unnamed input                             LSIO_UART4_RX         391      lsio_gpio0_12
        line 13:        unnamed input                             LSIO_UART4_TX         392      lsio_gpio0_13
        line 14:        unnamed input                             LSIO_SPI0_SCLK        393      Default
        line 15:        unnamed input                             LSIO_SPI1_SSN_1       394      Default
        line 16:        unnamed input                             LSIO_SPI1_SCLK        395      Default
        line 17:        unnamed input                             LSIO_SPI1_SSN         396      Default
        line 18:        unnamed input                             LSIO_SPI1_MISO        397      Default
        line 19:        unnamed input                             LSIO_SPI1_MOSI        398      Default
        line 20:        unnamed input                             LSIO_SPI2_SCLK        399      spi2grp
        line 21:        unnamed input                             LSIO_SPI2_SSN         400      spi2grp
        line 22:        unnamed input                             LSIO_SPI2_MISO        401      spi2grp
        line 23:        unnamed input                             LSIO_SPI2_MOSI        402      spi2grp
        line 24:        unnamed input                             LSIO_SPI3_SCLK        403      lsio_gpio0_24
        line 25:        unnamed input                             LSIO_SPI3_SSN         404      pinctrl_lpwm1_1
        line 26:        unnamed input                             LSIO_SPI3_MISO        405      lsio_gpio0_26
        line 27:        unnamed input                             LSIO_SPI3_MOSI        406      lsio_gpio0_27
        line 28:        unnamed input                             LSIO_SPI4_SCLK        407      uart5grp
        line 29:        unnamed input                             LSIO_SPI4_SSN         408      uart5grp
        line 30:        unnamed input                             LSIO_SPI4_MISO        409      lsio_gpio0_30
        line 31:        unnamed output             phyreset       LSIO_SPI4_MOSI        410      lsio_gpio0_31
```

### 显示特定引脚的信息

命令：

```bash
root@buildroot:~# hb_gpioinfo -c gpiochip4 line0 line1
```

功能：
仅显示 GPIO 芯片 gpiochip4 中的 line0 和 line1 的信息。

打印输出：

```bash
root@buildroot:~# hb_gpioinfo -c gpiochip4
gpiochip4 - 32 lines: @34120000.gpio: @379-410
        [Number]                [Mode]  [Status]  [GpioName]       [PinName]          [PinNum]   [PinFunc]
        line  0:        unnamed input                             LSIO_UART7_RX         379      lsio_gpio0_0
        line  1:        unnamed input                             LSIO_UART7_TX         380      lsio_gpio0_1
        line  2:        unnamed input                             LSIO_UART7_CTS        381      lsio_gpio0_2
        line  3:        unnamed input                             LSIO_UART7_RTS        382      lsio_gpio0_3
        line  4:        unnamed input                             LSIO_UART1_RX         383      lsio_gpio0_4
        line  5:        unnamed input                             LSIO_UART1_TX         384      lsio_gpio0_5
        line  6:        unnamed input                             LSIO_UART1_CTS        385      lsio_gpio0_6
        line  7:        unnamed input                             LSIO_UART1_RTS        386      lsio_gpio0_7
        line  8:        unnamed input                             LSIO_UART2_RX         387      uart2grp
        line  9:        unnamed input                             LSIO_UART2_TX         388      uart2grp
        line 10:        unnamed input              scl            LSIO_UART3_RX         389      i2c5grp
        line 11:        unnamed input              sda            LSIO_UART3_TX         390      i2c5grp
        line 12:        unnamed input                             LSIO_UART4_RX         391      lsio_gpio0_12
        line 13:        unnamed input                             LSIO_UART4_TX         392      lsio_gpio0_13
        line 14:        unnamed input                             LSIO_SPI0_SCLK        393      Default
        line 15:        unnamed input                             LSIO_SPI1_SSN_1       394      Default
        line 16:        unnamed input                             LSIO_SPI1_SCLK        395      Default
        line 17:        unnamed input                             LSIO_SPI1_SSN         396      Default
        line 18:        unnamed input                             LSIO_SPI1_MISO        397      Default
        line 19:        unnamed input                             LSIO_SPI1_MOSI        398      Default
        line 20:        unnamed input                             LSIO_SPI2_SCLK        399      spi2grp
        line 21:        unnamed input                             LSIO_SPI2_SSN         400      spi2grp
        line 22:        unnamed input                             LSIO_SPI2_MISO        401      spi2grp
        line 23:        unnamed input                             LSIO_SPI2_MOSI        402      spi2grp
        line 24:        unnamed input                             LSIO_SPI3_SCLK        403      lsio_gpio0_24
        line 25:        unnamed input                             LSIO_SPI3_SSN         404      pinctrl_lpwm1_1
        line 26:        unnamed input                             LSIO_SPI3_MISO        405      lsio_gpio0_26
        line 27:        unnamed input                             LSIO_SPI3_MOSI        406      lsio_gpio0_27
        line 28:        unnamed input                             LSIO_SPI4_SCLK        407      uart5grp
        line 29:        unnamed input                             LSIO_SPI4_SSN         408      uart5grp
        line 30:        unnamed input                             LSIO_SPI4_MISO        409      lsio_gpio0_30
        line 31:        unnamed output             phyreset       LSIO_SPI4_MOSI        410      lsio_gpio0_31
```