기본 콘텐츠로 건너뛰기

1월, 2015의 게시물 표시

기본적인 Mutex 초기화 방법들

출처 :  http://hkpco.egloos.com/898623 유닉스 시스템 계열에서 제공되는 pthread에서 동기화를 위하여 mutex라는 것이 자주 사용되는데, mutex 변수 초기화 시에 사용되는 방법이 대표적으로 두 가지 정도가 있습니다. (원래는 더 많지만 "가장" 기본적인 초기화를 기준으로) 그 중 하나가 바로 PTHREAD_MUTEX_INITIALIZER 이며, 해당 mutex를 default 속성으로 초기화 시켜줍니다. pthread.h 헤더에 다음과 같이 정의되어 있습니다. ============================================================== #define PTHREAD_MUTEX_INITIALIZER \   {0, 0, 0, PTHREAD_MUTEX_TIMED_NP, __LOCK_INITIALIZER} ============================================================== 사용법은 다음과 같습니다. ---------------------------------------------------------------------- pthread_mutex_t mutx = PTHREAD_MUTEX_INITIALIZER; int main( void ) {         return 0; } ---------------------------------------------------------------------- PTHREAD_MUTEX_INITIALIZER 사용시 주의할 점은 pthread_mutex_t type이 구조체 형태로 이루어져 있기 때문에 변수 선언 이후에는 사용할 수 없으며(다시말해, 선언과 동시에만 사용이 가능함), static mutex 전용이라는 것입니다. 즉, dynamic mutex 에서는 다른 방법을 사용해야 하는데, 이전에 말한 mutex 변수 초기화의 나머지 방법에 해당됩니다. 다음과 같은 초기화 함수를 사용

I2C (Inter-Integrated Circuit) 버스

출처 :  http://eslectures.blog.me/80137860924 I 2 C 의 개요 I 2 C (Inter-Integrated Circuit) 버스는 마이크로프로세서와 저속 주변 장치 사이의 통신을 위한 용도로 Philips 에서 개발한 규격인데 두 가닥의 선을 사용하므로 TWI (Two Wire Interface) 라고도 불리고 있다 . 특허권 때문인지 잘 모르겠으나 Philips 이외의 회사들은 거의 대부분 TWI 라고 부른다 . I 2 C 버스는 양방향 오픈 드레인 선인 SCL (serial clock) 과 SDA (serial data) 로 이루어져 있으며 매스터 - 슬레이브 형태로 동작한다 . SCL 은 통신의 동기를 위한 클럭용 선이고 SDA 는 데이터용 선이다 . 매스터는 SCL 로 동기를 위한 클럭을 출력하며 슬레이브는 SCL 로 출력되는 클럭에 맞추어 SDA 를 통해 데이터를 출력하거나 입력 받는다 . 단지 SDA 한 선으로만 데이터를 주고 받기 때문에 I 2 C 버스는 반이중 (half duplex) 통신만 가능하다 . SCL 선과 SDA 선은 모두 오픈 드레인므로 두 선에는 각각 풀업 저항을 연결해 주어야 한다 . 다음 그림은 I 2 C 매스터와 슬레이브들 사이의 연결을 보여주고 있다 . 모든 I 2 C 매스터와 슬레이브 장치들의 SCL 은 서로 연결되며 SDA 또한 서로 연결된다 . 모든 장치들이 SCL 과 SDA 를 각각 공유하고 있으므로 매스터가 슬레이브를 개별적으로 지정하기 위한 방법이 있어야 한다 . I 2 C 버스에서 매스터가 각 슬레이브를 구분하는 수단은 슬레이브의 주소이다 . 모든 I 2 C 슬레이브 장치들은 7 비트의 고유한 주소를 가지고 있으며 매스터는 주소로 원하는 슬레이브를 지정한다 . 주소의 길이가 7 비트이므로 매스터는 최대 128 개의 슬레이브 장치들과 연결될 수 있다 . 물론 슬레이브 장치들의 주소는 모두 달라야