(1) GPIO
: GPIO는 General Purpose Input/Output이라고 합니다.
일반적인 목적으로 하는 I/O라 불리는 군요.
  대개는 CPU에 달려 있어 일반적인 목적을 위해 사용됩니다. (꼭 CPU뿐 아니라 micom 및 여러 칩에도 gpio는 존재합니다.)

즉, 다른 칩으로부터 데이터를 읽어오거나 다른 칩을 제어하기 위해 쓰거나 합니다.
때로는 혼자서 동작하기도 하고 또 때로는 그룹을 지어 같이 움직여야 읽어오거나 쓰여지게 됩니다.

좀 더 하드웨어적인 지식을 잘 정리한 글이 있네요.

쉽게 이해하기 위해 Input과 Output을 예로 들어보지요.


(2) Input
CPU가 다른 칩에 상태를 읽어오면 됩니다.

○ key별 gpio
   만드는 기기가 상,하,좌,우키가 존재한다고 합시다.
   각각 gpio로 4개가 연결되어 있으면 CPU는 이 키값을 각각 모니터링 하면 됩니다.
 

key interrupt gpio
   요즘 나오는 CPU의 gpio는 interrupt가 가능한 gpio입니다.
   즉, 해당 gpio가 falling edge이거나 rasing edge일 때 interrupt를 trigger해 두면
   kernel 단에서 interrupt가 가능하도록 합니다.

   key값은 I2C로 가져오게 됩니다. 계속해서 가져오도록 polling을 돌아도 되지만
   interrupt가 발생할때 마다 가져오게 되면 CPU가 바쁘지 않고 사용자가 값을 입력했때만 동작하게 디자인 할 수 있습니다.


(3)
Output
CPU가 중앙처리장치인 만큼 주로는 다른 칩을 제어하기 되지요.

LED점멸
   간단하게는 LED 점멸이 있습니다. 대부분의 device driver관련 책이 쉽게는 LED를 점등합니다. 가장 직관적이지요.
   켰다 껐다 할 수 있는건 gpio를 까딱까딱 해주면 되지요.


mux IC 제어
   최종적으로 C라는 라인으로 들어가게 될 path를 gpio가 A soure와 B source로 변경해 줍니다.
   gpio가 low면 A source가, 반대로 high면 B source가 들어갑니다.
 

LCD ON, IC reset등 


(4) Input/Output
칩간 통신 방법 중에는 양방향 통신을 가능하게 합니다. 대개는 이와 같이 통신하기 위해서
여러 gpio를 한 쌍으로 사용합니다.

SPI 통신(4개의 gpio사용)
   chip에서 SPI통신을 지원한다면 굳이 gpio를 사용해서 SPI통신을 안해도 됩니다만, 지원하지 않을 경우
   gpio를 통해서 SPI통신을 해야 합니다.
   간략하게 Wikipedia에서 SPI 통신을 이해 하시고,
   이를 도식화 해 봅니다.


I2C 통신(2개의 gpio사용)
   chip에서 I2C를 지원하지만 slave모드와 master모드를 모두 사용해야 할 상황이 된다면 할 수 없이 I2C통신을 gpio로 해야 합니다.
   간략하게 다시 Wikipedia에서 I2C 통신을 이해하시고,
   이를 도식화 해 봅니다.
 

이런 gpio를 읽어오거나 쓰는 제어 루틴은 CPU마다 틀립니다.
이는 CPU 제조사에서 release한 databook을 참고하여 코딩하시면 됩니다.



※ 출처 : http://musart.tistory.com/74
by 민트앤라떼 2011. 10. 17. 16:10