타겟보드를 이용하여 디바이스 드라이버를 배워보자!(8)



안녕하세요 이우영 입니다.


오늘도 인터럽트에 대해서 알아 보도록 하겠습니다.


1. EZ-S3C6410의 GPIO



GPIO란 General Purpose Input/Output 입니다. 일반적인 목적의 I/O 핀입니다.


GPIO는 핀하나에 설정에 따라 Input, Output으로 사용가능하고 또한 인터럽트나 다른 목적으로 사용이 가능합니다.


그럼 S3C6410의 GPIO를 알아 보겠습니다.


6410_GPIO.PNG


S3C6410는 17개의 그룹으로 이루어져 있습니다. 그룹마나 목적이 다르고 핀 수도 다릅니다.


보시면 겹치는 역활을 하는 그룹도 보입니다. 이것은 보드를 만드는 사람이 여러 목적으로 설계가 가능하도록 만는 것입니다.


예를 들어서 LCD는 I그룹과 J그룹에 연결되도록 만들어야 겠죠.


그러나 우리는 만들어진 보드를 쓰기 때문에 보드의 회로도를 보고 찾아야 합니다.


우선 우리가 필요한 인터럽트가 가능한 GPIO 그룹을 알아 보겠습니다.


보시면 EINT가 인터럽트를 지원하는 그룹입니다. 대부분 포함하고있죠?


우리가 필요한 핀을 찾기 위해서는 EZ-S3C6410 보드의 회로도를 보고 찾아야 합니다


하지만 지금 회로도가 없기때문에 오늘은 간단하게 핀을 제어하는 방법만 알아 보도록 하겠습니다.

(회로도가 어디로 사라졌내요ㅠㅠ 요건 다음시간에..)


그럼 예시로 GPN을 살펴 보겠습니다.


GPN은 16개의 핀으로 구성되어 있습니다.


그리고 이 N 그룹에 대한 레지스터가 


GPNCON - 설정 레지스터

GPNDAT - data 레지스터 

GPNPUD - 풀업/다운 저항 레지스터


3가지가 있습니다. 각 레지스터는 32비트로 구성되어 있습니다.


GPN.PNG


먼저 핀을 사용하기 위해서는 어떤 핀으로 쓰겠다는것을 GPNCON에 정의해야 합니다.


GPNCON의 기본 값은 0x00입니다. 모두 Input으로 설정 되어있습니다.


만약 우리가 GPN0 핀을 인터럽트로 사용하기 위해서는 


GPNCON에 0x10 값을 넣어 주시면 GPN0 핀은 인터럽트로 동작합니다.

(소스 코드에서는 예로 GPNCON = (1<<1) 이런식으로 사용 할 것입니다.)


지금은 이게모야!!! 할실지도 모르지만 소스코드를 보시면 금방 이해가 되실 겁니다.


준비가 미흡해서 오늘도 소스코드는 패스입니다... ㅎㅎㅎ 


다음시간에 회로도 까지 설명을 끝내고 간단하게 핀을 설정하고 활용해보는 프로그램을 짜보도록 하겠습니다.


그럼 다음시간에 만나요~~


빠른만남을 원하시면 http://ms-osek.org/ 여기로 찾아오세요~