임계영역?여러 스레드가 동기화되지 않은 상태로 공유 자원에 동시에 접근한다면, 당연하게도 문제가 발생한다. atomic한 연산은 어셈블리 코드 한 줄이다. 그런데 우리가 사용하는 C언어에서 거의 모든 연산은 어셈블리 코드 한 줄로 끝나지 않는다. 단순히 a에 1을 더하는 행위도 a의 값을 메모리에서 꺼내와 레지스터에 로드하고, 1을 더하고, 다시 메모리에 저장하는 과정을 거친다. 만약 여러 스레드에서 동시에 1을 더하려고 시도한다면? A스레드에서 a를 로드한 시점에 B스레드에서도 a를 로드하고, 각자 1을 더하고 저장하면 의도 상으로는 2가 더해져 있어야 하지만 같은 값에 1을 더하고 저장한 것이므로 1이 더해져 있을 뿐일 것이다. 따라서 우리는 공유 자원에 대한 임계 영역 관리가 필요하다. FreeR..
현생/임베디드
FreeRTOS 특징먼저 RTOS에 대해서는 이전 포스팅을 참고하자. FreeRTOS는 오픈소스로, 누구나 무료로 사용 및 수정할 수 있고 많은 반도체 제조사와 마이크로 컨트롤러 플랫폼에서 FreeRTOS를 공식적으로 제공한다. 또 커뮤니티가 활발하고 다양한 상용 지원 옵션이 있어 개발이 용이하고 오랜 기간 사용되어 안정성과 신뢰성을 제공한다. 공식 웹 사이트 FreeRTOS™ - FreeRTOS™ freertos.org 네이밍 규칙FreeRTOS에서는 특정 네이밍 규칙을 사용한다. ccharsint16_t (short)iint32_t (int)xBaseType_tuunsignedppointer먼저 변수는 타입에 따라 접두어를 위와 같이 설정한다. vvoidxBaseType_tpvvoid*prvpriv..
RTOS?RealTime Operation System, 애플리케이션의 수행 마감 시간을 정할 수 있는 운영체제이다. 운영체제론 시간에 다루는 Soft Realtime - Hard Realtime 과 같은 개념이 내재되어 있는 OS인 것이다. 주로 임베디드에 쓰이는 OS인 만큼, Scalability하다. 즉, 사용자가 원하는 기능을 추가하거나 제거하여 크기를 조절할 수 있다. 또한 Preemptive - 선점(우선순위가 높은 task가 리소스를 가져감)을 허용하고, Multitasking이 가능하며, Robustness, 즉 견고하다. 왜 써야 하는가범용 PC OS를 사용하는 범용 컴퓨터, 예를 들어 Windows를 사용하는 데스크탑에서는 보통의 경우 0.1초만에 끝낼 수 있는 프로세스가 다른 프로세..
SW 개발자가 왜 알아야 하는가?가장 중요한 이유로는 아무래도 기판을 만지는 직종이고, 컴퓨터 옆에 널부러져 있는 기판엔 전기가 흐르며, 만약 DC가 아닌 고압의 AC 전류가 흐르는 환경에서 전기를 잘 모른다면 좀 빨리 가버릴 수도 있다. (AC220V, 즉 311V짜리 전압이 초당 120번 극성이 바뀐다. 이에 감전되면 근육이 수축된 상태로 경직되어 움직이지 못하는데, 궁금하면 콘센트에 젓가락 꽂...진 말자) DC라 하더라도 역전류나 쇼트가 발생하면 기판은 물론 연결된 컴퓨터까지 태워먹을 수 있다. 물론 여기에 감전돼도 꽤 많이 아프다. 또한 당연하게도 회로도를 보며 여러 단자를 연결해야 하는데, 기초적인 전기 상식이 없으면 이도 쉽지 않다. 전기 기초 상식전압두 점 사이의 전위차를 의미한다. 이는 ..
임베디드 SW란?임베디드 SW는 특정 하드웨어 시스템 내에서 실행되도록 설계된 소프트웨어이다. 다시 말해, 하드웨어가 특정 기능을 수행하거나 특정 장치를 제어하도록 한다. 범용 컴퓨터와 달리 제한된 리소스 내에서 한정된 기능을 효율적으로 수행하는데 최적화되어 있다. 제품군으로는 가전 제품, 자동차, 의료기기, 통신기기 등에 적용되며, 형태로는 펌웨어, 디바이스 드라이버, 미들웨어, (특정 하드웨어에 종속되는) 애플리케이션 소프트웨어, 부트로더, 네트워크 스택, 실시간 제어 소프트웨어 등 굉장히 많은 분야가 임베디드 SW에 속해있다. 필요한 하드웨어 지식임베디드 SW에 관심을 가지는 하드웨어 전공자도 많겠지만, 소프트웨어 전공자도 꽤나 많을 것이다. (실제로, 임베디드 SW 직종의 70%는 소프트웨어 ..