실험 1 - 실험 장치에 장착된 LED ON/OFF

● 브레드 보드에 LED 10개 장착됨

toy_system 커맨드라인에서 ‘n’ 입력 시 좌측 4개 LED가
ON/OFF를 반복한다.
– ‘n exit’ 누르면 실행을 종료한다

  • 명령에 테이블에 n 커맨드 추가

  • n커맨드 입력 => toy_simple_io function 호출
    => 277

  • insmod시 /dev/toy_simple_io_driver node가 생김. dev를 통해서 컨트롤.

  • 2번째 arg가 exit이면 버퍼에 숫자 2를 write

  • n 입력시 exit이 아니기 때문에 else로 , buffer에 1

토이 커널 드라이버

  • LED 8개 = GPIO

  • 좌 4 우 4

  • 0 : Wait , default

  • 1 : Wake up interruptable => wait queue를 깨우는 코드,

    • wait queue key : 컨디션
  • 2 : next : 다음동작으로 넘어가기 위해 exit함

  • user app에서 1,2를 통해 wake up 하고 플래그 값을 설정하도록 만듦

  • wait even interrutible 로 기다리고 있고 wait queue를 flag에 의해서 일어나는 코드가 있다.

  • probe 함수
  • 320과 연결
  • gpio request , gpio direction
  • n exit를 치면 1 =>2 ... =>6로 간다.

example_1

  • 왼쪽 LED가 n커맨드 입력시 켜졌다 꺼졌다

실험 2 - 실험 장치에 장착된 LED ON/OFF

● 오른쪽 LED도 같은 방법으로 구현해 본다.

실험 3 - 실험 장치에 장착된 LED ON/OFF

● 왼쪽 오른쪽 LED를 ‘n’을 누를 때마다 번갈아 구동해 본다.

실험 4 - 실험 장치에 장착된 LED ON/OFF

● usleep_range() 함수를 사용하여 시간을 조절하여 저절로
왼쪽 LED, 오른쪽 LED가 번갈아가며 켜지는 깜빡이를
만들어 본다.

실험 5 - 입력 스위치를 이용한 LED ON/OFF

● 입력 스위치(INPUT GPIO 16)을 이용
● 포트 값이 1이면 왼쪽 LED를 ON, 오른쪽 LED는 OFF
● 포트 값이 0 이면 반대

실험 6 - 입력 스위치를 이용한 LED ON/OFF

● 입력 스위치가 떼는 순간에 LED 불이 바뀌도록 한다.
● 스위치를 떼면 왼쪽 LED ON, 오른쪽 LED OFF, 다시 한번
스위치를 떼면 왼쪽 LED OFF, 오른쪽 LED ON 하는
프로그램을 작성한다.

실험 7 - 채터링 방지

● 스위치 종류의 입력 장치는 채터링 현상을 유발한다.
채터링 현상을 없애는 방법을 연구하자.
● 간단한 방법은 입력을 한번 읽어들이고 일정 시간 후 한번
더 읽어서 그 값이 이전 값과 같다면 인정하는 방법이다.

사진출처 : 수업 내용

0개의 댓글

관련 채용 정보