You are not allowed to add pages
Direct Link
Direct Link
No | Name | GPIO | pin | out |
---|---|---|---|---|
1 | WORK_LED/LED1 | GPIO0_C0 | 16 | ✔ |
2 | USER_LED/LED2 | GPIO0_C4 | 20 | ✔ |
3 | FANS | GPIO1_A4 | 36 | |
4 | BACKLIGHT | GPIO0_C3 | 19 |
* number = group * 8 + X = 3 * 8 + 5 = 29
* pin = bank*32 + number= 4 * 32 + 29 = 157
LED1 @ pin 16 : echo 16 > /sys/class/gpio/export # 申请 GPIO cat /sys/class/gpio/gpio16/direction # 查看默认引脚方向 echo out > /sys/class/gpio/gpio16/direction # 配置成输出方向 echo 1 > /sys/class/gpio/gpio16/value # 输出高电平为点亮LED echo 0 > /sys/class/gpio/gpio16/value # 输出低电平为熄灭 LED
LED2 @ pin 20 : echo 20 > /sys/class/gpio/export # 申请 GPIO cat /sys/class/gpio/gpio20/direction # 查看默认引脚方向 echo out > /sys/class/gpio/gpio20/direction # 配置成输出方向 echo 1 > /sys/class/gpio/gpio20/value # 输出高电平为熄灭LED echo 0 > /sys/class/gpio/gpio20/value # 输出低电平为点亮 LED
-
Key | GPIO | PIN | in | out |
---|---|---|---|---|
1 | GPIO3_C3 | 115 | ✔ | |
2 | GPIO3_C4 | 116 | ✔ | ✔ |
3 | GPIO4_D2 | 154 | ✔ | ✔ |
4 | GPIO3_C2 | 114 | ✔ | |
5 | GPIO3_B5 | 109 |
* number = group * 8 + X = 3 * 8 + 5 = 29
* pin = bank*32 + number= 4 * 32 + 29 = 157
echo 115 > /sys/class/gpio/export echo 116 > /sys/class/gpio/export echo 154 > /sys/class/gpio/export echo 114 > /sys/class/gpio/export echo 109 > /sys/class/gpio/export echo in > /sys/class/gpio/gpio109/direction echo in > /sys/class/gpio/gpio114/direction echo in > /sys/class/gpio/gpio115/direction echo in > /sys/class/gpio/gpio116/direction echo in > /sys/class/gpio/gpio154/direction cat /sys/class/gpio/gpio109/value # 读KEY状态, 0 按下 1 释放 cat /sys/class/gpio/gpio114/value cat /sys/class/gpio/gpio115/value cat /sys/class/gpio/gpio116/value cat /sys/class/gpio/gpio154/value
#!/bin/bash pins=(115 116 154 114 109) for pin in ${pins[@]}; do echo ${pin} > /sys/class/gpio/export echo in > /sys/class/gpio/gpio${pin}/direction echo falling > /sys/class/gpio/gpio${pin}/edge done # Pullup # GPIO3_C2 GPIO3_C3 GPIO3_C4 io -4 -w 0xfdc600a8 0x03F00150 # GPIO3_D2 io -4 -w 0xfdc600bc 0x00300010 # GPIO3_B5 io -4 -w 0xfdc600a4 0x0c000400
io -v -1|2|4 -r|w [-l <len>] [-f <file>] <addr> [<value>] -v Verbose, asks for confirmation -1|2|4 Sets memory access size in bytes (default byte) -l <len> Length in bytes of area to access (defaults to one access, or whole file length) -r|w Read from or Write to memory (default read) -f <file> File to write on memory read, or to read on memory write <addr> The memory address to access <val> The value to write (implies -w) Examples: io 0x1000 Reads one byte from 0x1000 io 0x1000 0x12 Writes 0x12 to location 0x1000 io -2 -l 8 0x1000 Reads 8 words from 0x1000 io -r -f dmp -l 100 200 Reads 100 bytes from addr 200 to file io -w -f img 0x10000 Writes the whole of file to memory Note access size (-1|2|4) does not apply to file based accesses.
# Read 4 bytes (32bits) io -4 -r 0xfdcb0010 # Write 4 bytes (32bits) io -4 -w 0xfdcb0010 0xffff0055
RK3568的寄存器可以通过芯片的TRM手册进行查询。
寄存器的地址是由 Operational Base + offset组成
寄存器的基地址在TRM的Address Mapping章节中描述(《RKRK3568 TRM-Part1》 p.11)
Module | Start Address | Size | Module | Start Address | Size |
---|---|---|---|---|---|
PCIe3x2_S | 0xF0000000 | 32MB | Reserved | 0xFE290000 | 64KB |
PCIe3x1_S | 0xF2000000 | 32MB | GMAC0 | 0xFE2A0000 | 64KB |
PCIe2x1_S | 0xF4000000 | 32MB | SDMMC0 | 0xFE2B0000 | 64KB |
PCIe3x2_DBI | 0xF6000000 | 4MB | SDMMC1 | 0xFE2C0000 | 64KB |
PCIe3x1_DBI | 0xF6400000 | 4MB | Reserved | 0xFE2D0000 | 192KB |
PCIe2x1_DBI | 0xF6800000 | 4MB | FSPI | 0xFE300000 | 64KB |
Reserved | 0xF6C000008 | 4MB | EMMC | 0xFE310000 | 64KB |
SATA0 | 0xFC000000 | 4MB | Reserved | 0xFE320000 | 64KB |
SATA1 | 0xFC400000 | 4MB | NANDC | 0xFE330000 | 64KB |
SATAx2 | 0xFC800000 | 4MB | Reserved | 0xFE340000 | 128KB |
USB3_0 | 0xFCC00000 | 4MB | KEYLADDER_S | 0xFE360000 | 64KB |
USB3_1 | 0xFD000000 | 4MB | TRNG_S | 0xFE370000 | 64KB |
GIC600 | 0xFD400000 | 4MB | CRYPTO_NS | 0xFE380000 | 32KB |
USB20HOST0 | 0xFD800000 | 512KB | TRNG_NS | 0xFE388000 | 16KB |
USB20HOST1 | 0xFD880000 | 512KB | OTP_NS | 0xFE38C000 | 16KB |
DAPLITE | 0xFD900000 | 512KB | Reserved | 0xFE390000 | 64KB |
Rreserved | 0xFD980000 | 512KB | OTP_S | 0xFE3A0000 | 32KB |
QSGMII_PCS | 0xFDA00000 | 2MB | DCF_S | 0xFE3A8000 | 32KB |
PMU_SGRF | 0xFDC00000 | 64KB | Reserved | 0xFE3B0000 | 32KB |
Reserved | 0xFDC10000 | 64KB | KEY_READER | 0xFE3B8000 | 32KB |
PMU_GRF | 0xFDC20000 | 64KB | WDT_S | 0xFE3C0000 | 64KB |
CPU_GRF | 0xFDC30000 | 64KB | SEC_TRNG_CHK | 0xFE3D0000 | 64KB |
DDR_GRF | 0xFDC40000 | 64KB | JBG_USR | 0xFE3E0000 | 64KB |
PIPE_GRF | 0xFDC50000 | 64KB | JBG_OTP | 0xFE3F0000 | 64KB |
SYS_GRF | 0xFDC60000 | 64KB | I2S0_8CH | 0xFE400000 | 64KB |
PIPE_PHY_GRF0 | 0xFDC70000 | 64KB | I2S1_8CH | 0xFE410000 | 64KB |
PIPE_PHY_GRF1 | 0xFDC80000 | 64KB | I2S2_2CH | 0xFE420000 | 64KB |
PIPE_PHY_GRF2 | 0xFDC90000 | 64KB | I2S3_2CH | 0xFE430000 | 64KB |
USBPHY_U3_GRF | 0xFDCA0000 | 32KB | PDM | 0xFE440000 | 64KB |
USBPHY_U2_GRF | 0xFDCA8000 | 32KB | VAD | 0xFE450000 | 64KB |
EDP_PHY_GRF | 0xFDCB0000 | 32KB | SPDIF_8CH | 0xFE460000 | 64KB |
PCIE30_PHY_GRF | 0xFDCB8000 | 32KB | AUDPWM | 0xFE470000 | 32KB |
SYSTEM_SRAM(64K) | 0xFDCC0000 | 64KB | DIG_ACODEC | 0xFE478000 | 32KB |
PMU_MEM | 0xFDCD0000 | 128KB | SDMMC_BUF | 0xFE480000 | 64KB |
USB_GRF | 0xFDCF0000 | 64KB | Reserved | 0xFE490000 | 448KB |
PMU_CRU | 0xFDD00000 | 64KB | Reserved | 0xFE500000 | 64KB |
CRU_S | 0xFDD10000 | 32KB | DMAC0_S | 0xFE510000 | 64KB |
SYS_SGRF | 0xFDD18000 | 16KB | Reserved | 0xFE520000 | 64KB |
Stimer | 0xFDD1C000 | 16KB | DMAC0_NS | 0xFE530000 | 64KB |
CRU_NS | 0xFDD20000 | 64KB | DMAC1_S | 0xFE540000 | 64KB |
PMU_CRU_S | 0xFDD30000 | 64KB | DMAC1_NS | 0xFE550000 | 64KB |
I2C0 | 0xFDD40000 | 64KB | SCR | 0xFE560000 | 64KB |
UART0 | 0xFDD50000 | 64KB | CAN0 | 0xFE570000 | 64KB |
GPIO0 | 0xFDD60000 | 64KB | CAN1 | 0xFE580000 | 64KB |
PWM0 | 0xFDD70000 | 64KB | CAN2 | 0xFE590000 | 64KB |
PVTM_PMU | 0xFDD80000 | 64KB | I2C1 | 0xFE5A0000 | 64KB |
PMU_NS | 0xFDD90000 | 64KB | I2C2 | 0xFE5B0000 | 64KB |
Reserved | 0xFDDA0000 | 128KB | I2C3 | 0xFE5C0000 | 64KB |
DDR_SCRAMB_LE_KEY | 0xFDDC0000 | 32KB | I2C4 | 0xFE5D0000 | 64KB |
OSC_CHK | 0xFDDC8000 | 32KB | I2C5 | 0xFE5E0000 | 64KB |
Reserved | 0xFDDD0000 | 192KB | TIMER_NS | 0xFE5F0000 | 64KB |
PVTM_CORE | 0xFDE00000 | 64KB | WDT_NS | 0xFE600000 | 64KB |
Reserved | 0xFDE10000 | 128KB | SPI0 | 0xFE610000 | 64KB |
GIC600 | 0xFDE30000 | 0KB | SPI1 | 0xFE620000 | 64KB |
SPINLOCK | 0xFDE30000 | 64KB | SPI2 | 0xFE630000 | 64KB |
NPU | 0xFDE40000 | 128KB | SPI3 | 0xFE640000 | 64KB |
MALIG52 | 0xFDE60000 | 128KB | UART1 | 0xFE650000 | 64KB |
PVTM_GPU | 0xFDE80000 | 64KB | UART2 | 0xFE660000 | 64KB |
PVTM_NPU | 0xFDE90000 | 64KB | UART3 | 0xFE670000 | 64KB |
VDPU | 0xFDEA0000 | 64KB | UART4 | 0xFE680000 | 64KB |
RGA | 0xFDEB0000 | 64KB | UART5 | 0xFE690000 | 64KB |
EBC | 0xFDEC0000 | 64KB | UART6 | 0xFE6A0000 | 64KB |
JPEG_DEC | 0xFDED0000 | 64KB | UART7 | 0xFE6B0000 | 64KB |
JPEG_ENC | 0xFDEE0000 | 64KB | UART8 | 0xFE6C0000 | 64KB |
IEP | 0xFDEF0000 | 64KB | UART9 | 0xFE6D0000 | 64KB |
Eink | 0xFDF00000 | 128KB | PWM1 | 0xFE6E0000 | 64KB |
Reserved | 0xFDF20000 | 128KB | PWM2 | 0xFE6F0000 | 64KB |
RKVENC | 0xFDF40000 | 128KB | PWM3 | 0xFE700000 | 64KB |
Reserved | 0xFDF60000 | 128KB | TSADC | 0xFE710000 | 64KB |
RKVDEC | 0xFDF80000 | 128KB | SARADC | 0xFE720000 | 64KB |
CSI_RX_CTRL0 | 0xFDFA0000 | 64KB | Reserved | 0xFE730000 | 64KB |
CSI_RX_CTRL1 | 0xFDFB0000 | 64KB | GPIO1 | 0xFE740000 | 64KB |
Reserved | 0xFDFC0000 | 64KB | GPIO2 | 0xFE750000 | 64KB |
VICAP0 | 0xFDFD0000 | 64KB | GPIO3 | 0xFE760000 | 64KB |
VICAP1 | 0xFDFE0000 | 64KB | GPIO4 | 0xFE770000 | 64KB |
ISP | 0xFDFF0000 | 64KB | Mailbox | 0xFE780000 | 64KB |
SDMMC2 | 0xFE000000 | 64KB | MCU_INTC | 0xFE790000 | 64KB |
GMAC1 | 0xFE010000 | 64KB | Reserved | 0xFE7A0000 | 384KB |
Reserved | 0xFE020000 | 128KB | DDR_PHY | 0xFE800000 | 64KB |
VOP | 0xFE040000 | 64KB | Reserved | 0xFE810000 | 64KB |
HDCP_AHB | 0xFE050000 | 64KB | PIPE_PHY0 | 0xFE820000 | 64KB |
DSITX0 | 0xFE060000 | 64KB | PIPE_PHY1 | 0xFE830000 | 64KB |
DSITX1 | 0xFE070000 | 64KB | PIPE_PHY2 | 0xFE840000 | 64KB |
HDCP_APB | 0xFE080000 | 128KB | DSI_TX_PHY0 | 0xFE850000 | 64KB |
HDMI | 0xFE0A0000 | 128KB | DSI_TX_PHY1 | 0xFE860000 | 64KB |
eDP | 0xFE0C0000 | 64KB | CSI_RX_PHY | 0xFE870000 | 64KB |
HDCP_KEY | 0xFE0D0000 | 64KB | OTP_PHY | 0xFE880000 | 64KB |
Reserved | 0xFE0E0000 | 128KB | CPU_BOOST | 0xFE890000 | 64KB |
Reserved | 0xFE100000 | 1024KB | USB2PHY_U3OTG | 0xFE8A0000 | 64KB |
FIREWALL_DDR | 0xFE200000 | 64KB | USB2PHY_U2HOST | 0xFE8B0000 | 64KB |
Reserved | 0xFE210000 | 64KB | PCIE30_PHY | 0xFE8C0000 | 128KB |
DMA2DDR | 0xFE220000 | 64KB | PCIe2x1_S | 0x300000000 | 1024MB |
DFIMON | 0xFE230000 | 64KB | PCIe3x1_S | 0x340000000 | 1024MB |
DFICTRL | 0xFE240000 | 64KB | PCIe3x2_S | 0x380000000 | 1024MB |
UPCTL2 | 0xFE250000 | 64KB | PCIe2x1_DBI | 0x3C0000000 | 4MB |
PCIe2x1_APB | 0xFE260000 | 64KB | PCIe3x1_DBI | 0x3C0400000 | 4MB |
PCIe3x1_APB | 0xFE270000 | 64KB | PCIe3x2_DBI | 0x3C0800000 | 4MB |
LED | GPIO | Base Address | GPIO IOMUX control |
---|---|---|---|
1 | GPIO0_C0 | PMU_GRF:0xFDC20000 | PMU_GRF_GPIO0C_IOMUX_L(0x0010) PMU_GRF_GPIO0C_IOMUX_H(0x0014) |
2 | GPIO0_C4 |
# Check pin function io -4 0xfdc20010 io -4 0xfdc20014 # Set pin function: GPIO io -4 -w 0xfdc20010 0x00070000 io -4 -w 0xfdc20014 0x00070000
KEY | GPIO | Base Address | GPIO IOMUX control | GPIO PU/PD control | Open drain |
---|---|---|---|---|---|
1 | GPIO3_C3 | SYS_GRF:0xFDC60000 | GRF_GPIO3C_IOMUX_L(0x0050) GRF_GPIO3C_IOMUX_H(0x0054) | GRF_GPIO3C_P(0x00A8) | GRF_GPIO3C_OPD(0x0128) |
2 | GPIO3_C4 | ||||
4 | GPIO3_C2 | ||||
3 | GPIO4_D2 | GRF_GPIO4D_IOMUX_L(0x0078) | GRF_GPIO4D_P(0x00BC) | GRF_GPIO4D_OPD(0x013C) | |
5 | GPIO3_B5 | GRF_GPIO3B_IOMUX_H(0x004C) | GRF_GPIO3B_P(0x00A4) | GRF_GPIO3B_OPD(0x0124) |
# Check pin function io -4 0xfdc60050 io -4 0xfdc60054 io -4 0xfdc60078 io -4 0xfdc6004C
# Set pin function: GPIO # GPIO3_C2 GPIO3_C3 io -4 -w 0xfdc60050 0x77000000 # GPIO3_C4 io -4 -w 0xfdc20054 0x00070000 # GPIO4_D2 io -4 -w 0xfdc20078 0x07000000 # GPIO3_B5 io -4 -w 0xfdc2004C 0x00700000
# Pullup # GPIO3_C2 GPIO3_C3 GPIO3_C4 io -4 -w 0xfdc600a8 0x03F00150 # GPIO3_D2 io -4 -w 0xfdc600bc 0x00300010 # GPIO3_B5 io -4 -w 0xfdc600a4 0x0c000400
Module | Start Address |
---|---|
GPIO0 | 0xFDD60000 |
GPIO1 | 0xFE740000 |
GPIO2 | 0xFE750000 |
GPIO3 | 0xFE760000 |
GPIO4 | 0xFE770000 |
Name | Offset | Size | Reset Value | Description |
---|---|---|---|---|
GPIO_SWPORT_DR_L | 0x0000 | W | 0x00000000 | Port Data Register (Low) |
GPIO_SWPORT_DR_H | 0x0004 | W | 0x00000000 | Port Data Register (High) |
GPIO_SWPORT_DDR_L | 0x0008 | W | 0x00000000 | Port Data Direction Register (Low) |
GPIO_SWPORT_DDR_H | 0x000C | W | 0x00000000 | Port Data Direction Register (High) |
测试GPIO指令与寄存器操作
使用IO:GPIO0_C4
序号: 20
GPIO3基地址:0xFDD60000
GPIO(0)_SWPORT_DR_H: 0xFDD60004
GPIO(0)_SWPORT_DDR_H: 0xFDD6000C
cd /sys/class/gpio echo 20 > export cd gpio20 # Write sysfs and check registers cat direction # output: in io -4 0xFDD6000C # output : fdd6000c: 00007001 bit5:0, input echo out > direction io -4 0xFDD6000C # output : fdd6000c: 00007011 bit5:1, output cat value # output: 0 io -4 0xFDD60004 # output : fdd60004: 00007000 bit5:0 echo 1 > value io -4 0xFDD60004 # output : fdd60004: 00007010 bit5:1
# Write register and check sysfs io -4 -w 0xFDD60004 0x00100000 cat value # output: 0
io -4 -w 0xFDD60004 0x00100010 cat value # output: 1
# 查看GPIO信息 cat /sys/kernel/debug/gpio # 查看pin状态 cat /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl/pinconf-pins