BeagleBone Black LED 제어하기는 보드가 살아 있는지 빠르게 확인할 수 있는 제일 쉬운 테스트 중 하나다. 그냥 켜고 끄는 수준 같아 보여도, 실제로는 디바이스 파일과 sysfs를 만지는 기본을 익히는 작업이다.
처음엔 echo로 trigger를 바꾸는 방법도 있지만, 여기서는 C로 직접 제어하는 흐름을 봤다. 그러면 open, write, close 같은 기본 파일 동작도 같이 익힐 수 있다.
무엇을 하는가
이 예제는 BeagleBone Black의 USER LED를 brightness나 trigger로 제어하는 내용을 다룬다. 디렉토리는 보통 /sys/class/leds 아래에 있고, 거기서 해당 LED 노드를 찾아서 접근한다.
이 글은 BeagleBone 리눅스 빌드하기와 같이 보면 더 좋다. 시스템이 올라와 있어야 LED도 제어할 수 있으니까.
코드 흐름
- 입력 인자를 확인한다.
- 제어할 LED 디렉토리를 만든다.
- brightness 또는 trigger 경로를 고른다.
- open으로 디바이스 파일을 연다.
- write로 값을 넣고 닫는다.
경로 문자열은 snprintf로 조립하면 편하다. 디바이스 파일을 직접 열어서 값을 쓰는 구조라서, 파일 I/O 감각을 익히기에도 좋다.
실습할 때 보는 포인트
LED가 안 바뀌면 경로부터 다시 봐야 한다. BeagleBone 계열은 /sys/class/leds 아래 이름이 보드마다 조금 다를 수 있다. 그리고 trigger가 걸려 있으면 brightness가 바로 안 먹는 경우도 있다. 이럴 때는 trigger를 먼저 꺼야 한다.
네트워크나 부팅이 잘 되는지도 보고 싶다면 비글본 블랙 TFTP 부팅하기도 같이 보면 연결이 된다.
주의할 점
권한이 없으면 파일을 열지 못한다. 그리고 led trigger가 다른 값으로 잡혀 있으면 원하는 대로 안 움직인다. 이건 코드 문제가 아니라 시스템 상태 문제인 경우가 많다.
정리
BeagleBone Black LED 제어하기는 작지만 꽤 중요한 예제다. 보드가 정상인지 확인하고, sysfs로 파일 제어하는 구조를 익히는 데 좋다.
실행 체크
LED 제어는 단순해 보여도 보드 상태를 빠르게 보는 데 꽤 유용하다. sysfs 경로가 맞는지 확인하고, trigger가 걸려 있지 않은지 보는 것만으로도 문제를 꽤 많이 줄일 수 있다.
여기서 LED가 잘 움직이면 기본 파일 I/O도 잘 이해한 거다. 다음에는 TFTP나 NFS처럼 보드가 실제로 동작하는 흐름으로 넘어가면 된다.
- sysfs 경로 확인
- trigger 상태 확인
- 다음은 부팅 흐름 보기
LED가 바로 반응하면 파일 경로와 sysfs 제어가 맞다는 뜻이다. 이런 단순한 예제에서 막히면 보드 문제인지 코드 문제인지 구분이 쉬워진다. 그래서 이 예제는 생각보다 유용하다.