주변기기 및 통신 I/O
데이터 통신은 범위로 구분할 때 내부 통신과 외부 통신으로 나누어 볼 수 있다.
프로세서 입장에서 볼때 내부 통신은 CPU와 서브 모듈, 예를 들어 내장메모리(internal memory)간의 데이터 교환이 될 수 있다. 또한 이는 CPU 입장에서 볼 때는 외부 통신이 된다.
이렇듯 주체를 어디에 두느냐에 따라, 안과 밖은 바뀔수밖에 없지만, 임베디드 디바이스의 경우는 해당 기기를 중심으로 해서 내부 통신과 외부 통신을 나누는게 적절하다.
즉, CPU와 주변기기(peripheral device)간의 통신이 한 분류이고, 독자적인 외부의 다른 디바이스와의 통신이 외부 통신이다. 이더넷(Ethernet), 와이파이(WiFi), 블루투스(Bluetooth) 등이 대표적인 외부 통신방식으로 볼 수 있다. 이 챕터에서는 임베디드 소프트웨어 개발에서 주로 사용되는 내부 통신방식들과 대표적인 외부 통신 방식에 대해 알아볼 것이다.
그 전에 데이터가 어떻게 전달되느냐에 따른 분류를 먼저 살펴보자. 다음 4가지만 기본적으로 알면 된다.
1) 직렬 전송(serial transmission)
데이터 통신라인이 하나다. 각 비트(0 or 1)이 해당 라인을 통해 순차적으로 전송되는 방식이다. 송수신간의 약속된 프로토콜이 필요하다. 하나의 통신라인만 사용하므로 비용상 유리하다. 대표적인 직렬 통신으로 RS232C가 있다.
2) 병렬 전송(parallel transmission)
데이터를 여러 라인을 사용해서 한번에 일정단위의 데이터를 전송하는 방식이다. 통상 1바이트의 데이터가 한번에 전송된다. 다시 말해 한번에 8비트의 데이터가 전송되므로 데이터라인은 8개가 필요하다. 직렬 전송에 비해 빠르지만(8개를 한번에 전송하니 당연한 얘기다) 비용상 불리하다. 프로세서의 내부 통신에서 주로 사용된다.
3) 비동기식 전송(asynchronous transmission)
비동기식은 동기(synchronization)이 없다는 말이다. 그 말은 송신과 수신간에 서로 공통으로 맞추는 시간값에 의거해서 데이터를 처리하지 않는다는 것이다. 공통으로 맞추는 시간값은 레퍼런스 신호(reference signal), 클럭(clock), 타임스탬프(time stamp) 등이 구성요소다. 비동기식 전송은 이런 것들이 없이 송수신간에 주고 받는 데이터만으로 데이터 순서를 파악가능하다. 비동기식 전송은 데이터 전송의 시작과 끝을 알리는 start / stop 비트를 가지고 데이터의 동기를 맞춘다. 불규칙한 데이터전송에 적합하다. UART가 대표적인 비동기식 전송 방식이다.
4) 동기식 전송 (synchronous transmission)
동기식 전송은 비동기 전송과 달리 송수신 사이에 사전에 정해진 시간 기준값(Clock)이 존재한다. 이 시간 기준값을 가지고 데이터 전송이 처리된다. 따라서 데이터의 연속적인 전송에 용이하다.
졸저 <개발자 오디세이아> 가 책으로 나왔습니다. 개발자들의 애환과 희망을 담으려 최선을 다했습니다. 많은 사랑 부탁드립니다^^