1. led 응용프로그램을 수정하여 0,2,4,6과 1,3,5,7이 번갈아 점멸하는 프로그램 제작
타겟시스템의 장치들을 이용하기 위해서는 드라이버를 작성해야 한다.
크게 알아본 드라이버 작성법은 4가지가 있었는데,
여기선 타겟시스템의 'dev' 폴더 안에 드라이버가 정리되어 있다.
그래서 가져다가 쓰면 된다.
- 'led.c' 코드파일 작성
- dev, i, data : 장치와 반복문 변수 선언, data는 led 출력을 위한 값
- #define led "/dev/led" : dev 폴더의 led라는 파일을 'led' 라는 이름으로 사용하겠다고 선언
- dev = open(led, O_RDWR); : dev라는 변수에 led 장치를 읽고 쓸 수 있게 불러오는 것
(장치 안의 /dev/led 폴더, 파일 != 작성한 코드의 dev, led 선언된 변수, 이름만 같은거니까 헷갈리지 말길) - write(dev, &data, sizeof(unsigned char)); : dev 변수에 data 값을 출력하게 만드는 명령
- usleep(); : sleep() 함수는 초단위, usleep() 함수는 micro second 기준이어서 1/1,000,000 단위
결론은 세세한 설정 시 사용
그 후 data 값을 홀수 값, 짝수 값이 나올 수 있게 작성하고 출력하면 된다.
※ 참고로 장치의 led는 8자리(0~7)의 2진수(ex : 00000001)로 작동한다.
그리고 그 2진수를 16진수로 변환하고 작성해야 한다.
(2진수나 10진수로 시도는 안해봤어요. 코드 사용법에서 16진수로 적길래)
근데 진짜로 주의할 점이 0 -> LED가 켜짐, 1 = LED가 꺼짐이라는 점.
(헷갈리면 코드 더 작성해서 바꾸면 되기야 하겠는데, 귀찮은 점)
그리고 0번째, 7번째 LED를 동시에 켜기 위해서는
0의 자리 값 1, 7의 자리 값 128이 더해 1 + 128 = 129가 작성되어야 한다.
이런 것 하나하나가 시간을 많이 잡아먹었기 때문에 누군가가 사용한다면 참고하기 바랍니다.
그 후 리눅스 환경에서 ‘led.c’를 컴파일한다.
‘/opt/gnueabi/opt/ext-toolchain/bin/arm-linux-gnueabihf-gcc [파일명].c –o [실행파일명]’
명령으로 컴파일을 진행할 수 있다.
사진에서 'led.c' 컴파일 결과물은 ‘led’ 파일이다.
- ‘TeraTerm’을 이용하여 컴파일한 ‘led’ 파일을 타겟시스템에 전송
- ‘chmod 777’ 명령으로 모든 권한을 준 다음 실행
- 실행 결과