RTOS 다이어그램 사용

RTOS를 이용해 응용프로그램(즉, 제품)을 설계할 때, 이 응용프로그램을 여러 작업(즉, 스레드)으로 분할해 각 응용프로그램의 일부를 처리해야 한다. 필자가 RTOS를 사용하기 시작했을 무렵, 그림 1에 표시된 것과 유사한 다이어그램을 사용하여 작업과 ISR의 관계를 나타내는 기술에 대해 배웠다. 이러한 다이어그램을 통해 필자는 응용프로그램에 대해 개략적으로 이해하고 중요한 상호 작용을 표시할 수 있었다. 본 논문에서 이와 관련한 몇 가지 개념을 공유하고자 한다.

그림 1. 혈압 모니터에서 작업과 ISR 간 상호 작용

 

이 다이어그램은 의료용 응용프로그램과 Kinetis ARM Cortex-M4 MCU(ISBN 978-0-9823375-2-3)를 다루는 μC/OS-III 책에서 발췌한 것이다. 이 도서의 무료 PDF 버전은 웹사이트 https://www.weston-embedded.com/micrium-books에서 다운받거나 Amazon.com에서 인쇄본을 구입할 수 있다.

이 다이어그램에서 작업은 원으로, ISR은 타원으로, 외부 하드웨어는 직사각형 상자로, MCU에 대한 내부 하드웨어는 둥근 직사각형으로 표시된다. 또한 정보 흐름은 화살표를 비롯해 원하는 작업을 수행하는 데 사용되는 일부 함수 및 변수와 함께 표시된다. 모래시계는 RTOS API 호출의 시간 초과 또는 시간 지연(예: 절전)을 나타낸다. 또한 괄호 안에 숫자가 표시된다. 이 괄호는 다이어그램을 설명하기 위해 별도로 제공되는 텍스트 설명을 참조하는 데 사용된다. 이 다이어그램에서 제공하는 정보의 양은 사용자마다 다르다. 이 다이어그램을 기반으로 응용프로그램을 설계해야 한다면 필자의 목표는 원하는 만큼 많은 세부 정보를 제공하는 것이다.

예를 들어, 그림 2는 작업 이름, 우선 순위, 작업에 필요할 것으로 생각되는 스택 공간 크기 등의 정보를 포함할 수 있음을 보여준다. 여기서 필자는 관례상 작업 이름 위에 작업의 우선 순위를 배치하고 그 아래의 괄호 안에 스택 크기를 배치했다. 대괄호는 스택이 배열임을 나타낸다. 이러한 다이어그램의 첫 번째 단계에서는 작업 우선순위의 실제 값과 스택 크기를 표시해 초기 아이디어를 제공할 수 있다. 이를 통해 우선순위가 어떻게 분배되는지, 필요한 스택 공간(즉, RAM)이 얼마나 되는지에 대한 아이디어를 얻을 수 있다. 그러나 필자는 바이트 대신 스택 요소로 스택 크기를 나타내는 것을 선호한다. 스택 요소는 사용 중인 CPU에 따라 1바이트, 2바이트, 4바이트 또는 8바이트일 수 있다. 따라서 32비트 CPU에서 [256]은 1024바이트를 나타낸다!

그림 2, 작업 표현(매직 넘버 사용)


최종적으로 그림 3과 같이 이러한 매직 번호를 #define 상수로 대체할 수 있다. 작업 이름에 접미사를 사용해 작업 코드 자체(즉, NameTask())와 TCB(즉, NameTCB) 및 작업 스택(즉, NameStk[])과 같은 작업과 관련된 개체를 식별하는 것이 좋다. 예를 들어(μC/OS-III 가정):

 

#define   NAME_TASK_PRIO   10

 

OS_TCB    NameTCB;

CPU_STK   NameStk[NAME_STK_SIZE];

 

void  NameTask (void *p_arg)

{

    // Task initialization

    while (1) {

        // Task Body

    }

}

그림 3. 작업 표현(식별자 사용)

 

마찬가지로 ISR의 경우 ISR의 이름과 같은 정보는 물론 하드웨어 우선 순위와 그림 4에 표시된 것과 같은 인터럽트 장치와 관련된 벡터 번호를 제공할 수도 있다. 다시 말하지만, 전체 응용프로그램을 잘 이해하고 나면 이러한 상수를 #defines로 바꿀 수 있다.

그림 4. ISR 표현

 

위에서 작업과 ISR을 수행한 것처럼 코드 객체를 색상화 하면 훨씬 더 많은 정보를 전달할 수 있다. 그림 5는 다이어그램에서 사용할 수 있는 RTOS 개체에 대한 추가 예를 보여준다. 물론 색 구성표는 선택 사항이며 RTOS가 추가 개체를 제공하는 경우 추가 아이콘이 필요하다:

그림 5. 추가 RTOS 개체

필자는 보통 큰 종이, 연필, 지우개로 시작해서 초본을 작성한다. 또는 iPad와 Apple Pencil을 이용해 추가 도면 및 도면 기능을 제공할 수 있다. 처음에는 I/O 장치, ISR 및 작업을 배치했다. 전기 다이어그램과 마찬가지로 입력과 ISR은 왼쪽에 있고 출력은 오른쪽에 있다. 흐름은 왼쪽에서 오른쪽으로, 위에서 아래로 진행한다. 다이어그램과 함께 제공되는 텍스트는 응용프로그램을 잘 이해하고 나면 생성되며 다이어그램을 보완하는 데 사용된다.

세부사항이 너무 많지 않도록 균형을 맞춰야 한다. 이 작업을 더 많이 수행하면 자신과 팀에 가장 적합한 것을 알 수 있다. 대상 사용자(자신 또는 팀만 해당)에 따라 손으로 그린 버전을 문서로 사용하거나 장기 사용을 위해 꾸미기를 할 수도 있다. 이 중 일부는 간단하지만 코드를 작성할 때 이러한 다이어그램을 참조하고 업데이트할 수 있다.

저자 소개

본 기사는 RTOS 개발 애플리케이션에 관한 시리즈의 일부입니다.

Jean Labrose는 높은 인지도를 가진 uC/OS-II와 uC/OS-III 커널의 저자이자 Micrium의 설립자로, 임베디드 소프트웨어의 uC/라인의 발전에 적극적으로 관여하고 있습니다.

Jean은 풍부한 경험과 임베디드 시스템 시장에 대한 깊은 이해를 바탕으로 Weston Embedded Solutions의 수석 조언자 및 컨설턴트로 재직하고 있으며, 현재 RTOS 제품의 향후 보다 발전된 제안을 마련하는데 기여하고 있습니다. Weston Embedded Solutions는 Micrium 코드베이스에서 파생된 매우 안정적인 Cesium RTOS 제품군의 지원 및 개발을 전문으로 합니다. 

Jean.Labrosse@Weston-Embedded.com.

jean_labrosse.jpg

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.