테스트 환경
- AGX ORIN Devit
- JETPACK 6.1
JETPACK6부터 GPIO sysfs가 linux 4.8 Linux 커널부터 더 이상 사용되지 않기 때문에 아래 링크에서 사용하던 sysfs 방식이 사용이 불가능해졌다. JetPack 5에서는 여전히 사용가능하지만 JetPack 6에서는 커널 버전의 변경으로 인해 더 이상 사용할 수 없게 되었다.
JETPACK 6에서 gpio를 제어하기 위해서는 libgpiod 라이브러리가 필요하다. gpiod는 libgpiod 라이브러리를 사용하는 linux GPIO 문자 장치와 상호 작용하기 위한 도구로써 아래 명령어로 설치 가능하다.
sudo apt install gpiod
명령어 옵션은 아래와 같습니다.
* gpiodetect - list all gpiochips present on the system, their names, labels
and number of GPIO lines
* gpioinfo - list all lines of specified gpiochips, their names, consumers,
direction, active state and additional flags
* gpioget - read values of specified GPIO lines
* gpioset - set values of specified GPIO lines, potentially keep the lines
exported and wait until timeout, user input or signal
* gpiofind - find the gpiochip name and line offset given the line name
* gpiomon - wait for events on GPIO lines, specify which events to watch,
how many events to process before exiting or if the events
should be reported to the console
설치 후 사용하고자 하는 GPIO의 설정을 확인해야 한다. 먼저 Pinmux 스프레드시트에서 사용하려는 핀이 output 또는 bidirectional로 설정되어 있는지 확인한다.
libgpiod 라이브러리의 gpioset명령을 사용합니다(예: gpioset PAC.06=1핀 7의 경우).
GPIO 칩은 핀이 아닌 오프셋으로 제어해야 한다.
사용 가능한 오프셋을 확인하기 위해서는 아래 gpiodetect 명령어를 사용하여 확인한다.
nvidia@tegra-ubuntu:~$ sudo gpiodetect
gpiochip0 [tegra234-gpio] (164 lines)
gpiochip1 [tegra234-gpio-aon] (32 lines)
또한 오프셋 안에 gpio 상태 값을 확인하기 위해서는 아래 명령어를 사용하여 확인한다.
nvidia@tegra-ubuntu:~$ sudo gpioinfo tegra234-gpio-aon
gpiochip1 - 32 lines:
line 0: "PAA.00" unused input active-high
line 1: "PAA.01" unused input active-high
line 2: "PAA.02" unused input active-high
line 3: "PAA.03" unused input active-high
line 4: "PAA.04" unused input active-high
line 5: "PAA.05" unused input active-high
line 6: "PAA.06" unused input active-high
line 7: "PAA.07" unused input active-high
line 8: "PBB.00" unused input active-high
line 9: "PBB.01" unused input active-high
line 10: "PBB.02" unused input active-high
line 11: "PBB.03" unused output active-high
line 12: "PCC.00" unused input active-high
line 13: "PCC.01" unused input active-high
line 14: "PCC.02" unused input active-high
line 15: "PCC.03" unused input active-high
line 16: "PCC.04" unused input active-high
line 17: "PCC.05" unused input active-high
line 18: "PCC.06" unused input active-high
line 19: "PCC.07" unused input active-high
line 20: "PDD.00" unused input active-high
line 21: "PDD.01" unused input active-high
line 22: "PDD.02" unused input active-high
line 23: "PEE.00" unused input active-high
line 24: "PEE.01" unused input active-high
line 25: "PEE.02" unused input active-high
line 26: "PEE.03" unused input active-high
line 27: "PEE.04" "Power" input active-low [used]
line 28: "PEE.05" unused input active-high
line 29: "PEE.06" unused input active-high
line 30: "PEE.07" unused input active-high
line 31: "PGG.00" unused input active-high
단일 gpio 핀의 상태 값을 확인하기 싶으면 아래 gpiofind, gpioget 명령어를 이용하여 확인 가능하다.
nvidia@tegra-ubuntu:~$ sudo gpiofind "PAC.06"
gpiochip0 144
nvidia@tegra-ubuntu:~$ sudo gpioget gpiochip0 24
0
이제 예를 들어, AGX Orin에서 핀 18(PAC.06)로 테스트한다고 하면, 위에서 확인한 것처럼 아래 gpiofind 명령어를 통해 실제 오프셋 값을 확인할 수 있다.
nvidia@tegra-ubuntu:~$ sudo gpiofind PAC.06
gpiochip0 144
해당 핀을 HIGH 값으로 변경하려면 gpioset 명령어를 통해 변경하고자 하는 오프셋 값의 1을 입력하면 된다.
nvidia@tegra-ubuntu:~$ sudo gpioset 0 144=1
반대로 핀을 LOW 값으로 변경하려면 0을 입력하면 된다.
nvidia@tegra-ubuntu:~$ sudo gpioset 0 144=0
하지만 위의 명령어로 진행 시 일시적으로 값이 변화한 후 다시 기본 상태로 되돌아 간다. 이를 방지하기 위해서는 mode 옵션을 설정해주어야 한다.
--mode=wait 옵션을 사용하면 사용자가 ENTER를 입력할 때 까지 해당 신호를 유지한다.
nvidia@tegra-ubuntu:~$ sudo gpioset --mode=wait 0 144=1
gpiofind 명령어를 gpioset 실행 할 때 명령 줄로 실행시키면 핀 이름으로도 설정이 가능하다.
sudo gpioset --mode=wait `gpiofind "PAC.06"`=1
--mode=time 옵션을 사용하면 사용자가 지정한 시간동한 해당 신호를 유지한다.
sudo gpioset --mode=time --sec=1 gpiochip0 144=0
*option
-s, --sec=SEC: specify the number of seconds to wait (only valid for --mode=time)
-u, --usec=USEC: specify the number of microseconds to wait (only valid for --mode=time)
참고 :
https://lloydrochester.com/post/hardware/libgpiod-intro-rpi/
'NVIDIA > Jetson' 카테고리의 다른 글
Jetson dynamic overlay (0) | 2024.11.26 |
---|---|
Jetson Fan Control (0) | 2024.11.18 |
JETSON UEFI DEBUG (0) | 2024.07.15 |
JETPACK 6 Flash (0) | 2024.06.23 |
Jetson Sytem Upgrade (0) | 2024.05.11 |