본문 바로가기

분류 전체보기42

임베디드 시스템 설계 기본이론2 - 태스크의 수, 우선순위 그리고 캡슐화 [태스크는 몇 개가 적당할까?] 임베디드 시스템 설계에서의 1번째 문제는 시스템의 작업들을 RTOS의 태스크로 분배하는 겁니다. 그러면 궁금증이 생기는데 "더 많은 태스크가 좋은 것인가, 더 적은 게 좋은 것인가?"입니다. 대답을 하기 위해서는 많은 수의 태스크를 사용할 때의 장점과 단점을 생각해보면 되겠지요. 우선 장점을 나열해봅시다. - 태스크가 더 많을수록 각각 다른 부분에 있는 시스템의 작업에 대한 응답 시간을 조정하기가 쉬워집니다. 가령 작업을 8개의 태스크로 나누면, 8개의 다른 우선순위 레벨을 할당할 수 있습니다. 더 높은 순위의 태스크에서는 더 좋은 시스템 응답을 얻는 것이 가능합니다. 좋은 응답에 대한 대가는 낮은 순위의 태스크가 대신 치르게 될 것이고요. 모든 같은 작업을 한 태스크에 .. 2020. 6. 11.
임베디드 시스템 설계 기본이론1 - 일반 동작과 짧은 루틴 다양한 분야의 임베디드 시스템 설계에 적용되는 내용들에 대해서 얘기해보겠습니다. [보통의 작동] 일반적으로 임베디드 시스템은 어떤 시간이 되거나 응답이 필요한 외부 이벤트가 발생할 때까지 아무 일도 하지 않고 기다리는 경우가 많습니다. 인쇄할 정보가 오지 않으면, 레이저 프린터는 매분 깨어나서 프린터 드럼을 조금 움직이는 동작 이외에는 아무것도 하지 않습니다. 사용자가 방아쇠를 당기지 않거나 키보드의 버튼을 누르지 않는다면, 무선 바코드 스캐너는 심지어 마이크로프로세서를 꺼버리기도 하지요. 외부 이벤트는 일반적으로 인터럽트를 발생시키고, 하드웨어 타이머를 설정해서 시간이 지날 때마다 인터럽트를 발생시키도록 할 수 있기 때문에, 인터럽트는 임베디드 소프트웨어에 있어서 구동력이라고 여겨집니다. 가장 일반적인.. 2020. 6. 11.
RTOS를 이용한 기본적인 임베디드 시스템 설계 - 개요 그동안 다수의 RTOS가 제공하는 다양한 기능과 적절한 사용 그리고 각 기능들과 관련된 다양한 함정에 대해서 말해왔습니다. 이제는 모두 묶어서 어떻게 효울적으로 임베디드 시스템 소프트웨어를 설계하는지에 대해서 얘기를 이어나가려고 합니다. 혹 내용을 혼동할 수 있으니 OS 서비스에 대한 요약을 복습부터 해보겠습니다. [OS 서비스 살펴보기 총정리] - 태스크는 동작을 제어하거나 데이터를 공유하기 위해서 서로 통신할 수 있어야 함. 대부분의 알토스들은 이런 목적을 위해서 메시지 큐, 메일박스, 파이프 등의 서비스 조합을 제공함. 이런 서비스들의 특정한 성질들은 RTOS 마다 다름. 사용하는 것의 제공 내역을 알기위해서는 메뉴얼을 읽어봐야함. - 버퍼에 대한 포인터를 태스크에서 태스크 큐나 파이프, 메일박스로.. 2020. 6. 9.
RTOS 내에서 인터럽트 루틴 규칙 대부분의 RTOS 환경에서 인터럽트 루틴은 태스크 코드에는 적용되지 않는 두 개의 규칙을 따르게됩니다. 규칙 첫 번째, 인터럽트 루틴은 호출 주체를 대기하도록 만들 수 있는 RTOS의 어떠한 함수도 호출해서는 안 됩니다. 그러므로, 인터럽트 루틴은 세마포어를 얻거나, 아무것도 들어 있찌 않을 수도 있는 큐나 메일박스로부터 메시지를 읽거나, 이벤트를 기다리거나 하는 등의 작업을 해서는 안되죠. 인터럽트 루틴이 RTOS 함수를 호출해서 대기 상태로 된다면 인터럽트뿐만 아니라 인터럽트가 발생할 때 원래 실행되고 있던 태스크 역시 아무리 높은 우선 순위를 가지고 있더라도 같이 대기 상태로 됩니다. 게다가 대부분의 인터럽트 루틴은 다음 인터럽트를 위해 하드웨어가 준비 상태로 되도록 리셋을 완료해야 합니다. 규칙 .. 2020. 6. 9.