인프런 커뮤니티 질문&답변

edu님의 프로필 이미지
edu

작성한 질문수

FreeRTOS 프로그래밍

펌웨어 설계시 RTOS 적용 여부 질문

해결된 질문

작성

·

110

·

수정됨

1

안녕하세요

몇년전에 회사에서 진행중인 프로젝트에 RTOS를 적용하였다가 퍼포먼스를 만족시키지 못해서

펌웨어로 다시 기능 똑같이 만들어서 해보니까 성능을 만족해서

펌웨어로 변경해서 작업을 진행한적이 있었는데

 

메인 기능은 상위제어기로부터 1ms 주기로 패킷을 수신받으면 100us 내로 응답해야하는 조건에 CRC 체크도 해야하는 상황이었고 통신 기능 뿐만아니라 다른 기능에서 사용하고 있는 프리페럴이 많아서 통신 기능외에 주기적으로 us단위의 인터럽트가 많이 발생되는 상황이였구요.

RTOS로 만들었던 SW에서는 기본적으로 각각 프리페럴을 담당하는 TASK를 두고 설계를 했었는데

RTOS에서는 위에 나왔던 통신주기를 ISR에서 TASK로 이벤트 전달하는과정에서 리얼타임을 만족시킬수 없었습니다.

그래서 RTOS를제거하고 그냥 펌웨어로 만들어서 구조는 똑같이하고

멀티태스킹을 인터럽트 처리했는데 성능이 만족스럽게 나왔습니다.

 

제가 생각한 바로는

  1. RTOS가 올라간 시스템에서는 기본적으로 스케줄링하는 커널이 들어가서 기본적으로 자원점유도 하고

거기에 인터럽트도 관여되면 컨택스트 스위칭이 자주일어나서 오버헤드가 더 심해질수있다.

  1. 펌웨어는 그냥 풀로 돌면서 인터럽트로 인한 크리티컬 섹션만 신경쓰면 되기에 성능을 만족한게 아닐까 하는 생각이 듭니다.

물론 제가 RTOS에 대해 아는게 없어서 SW가 요구사항을 만족시킬수 없었던것일수도 있지만

컨택스트 스위칭으로 인한 오버헤드가 리얼타임에 영향을 미치는 가혹한환경이라면 베어메탈 펌웨어를 사용하는게 맞다고 느꼈습니다.

 

강의에서도 말씀하셨다시피 ISR로도 멀티태스킹이 된다면 RTOS를 적용하지 않아도 된다고 하셨는데

SW가 복잡해진다면 FreeRTOS API를 사용할수있으니 유지보수 측면이나 TASK간 동기화에 있어서 편리하다고 생각이 듭니다.

 

제 질문은

펌웨어를 설계할때 RTOS를 적용할지 아니면 베어메탈 펌웨어로 가냐 적용여부를 어떻게 판별해야할까요?

일단 저는 인터럽트가 많이 일어나는 시스템에서는 RTOS가 성능에 영향이 있다고 느껴집니다.

답변 2

1

홍영기님의 프로필 이미지
홍영기
지식공유자

안녕하세요. edu님!

적어주신 글을 보며 edu 님은 스스로 내신 질문에 대한 답을 이미 알고계신다는 느낌을 받았습니다.

복잡하지 않은 시스템이라면 실시간에 대해 펌웨어를 능가할 수 있는 것은 없습니다. RTOS 에서의 실시간은 멀티태스킹을 하면서도 실시간을 보장하는 것쯤으로 이해해 주시면 좋겠습니다.

다만, RTOS 는 복잡한 소프트웨어 구현을 단순하게 만들어주는 장점도 있기에 이 부분도 고려되어야 합니다.

내가 만드는 소프트웨어에서 실시간의 중요도가 어느 정도인지를 충분히 고민해보고 펌웨어냐 RTOS 냐를 선택하는 것이 좋겠습니다.

0

안녕하세요, 인프런 AI 인턴입니다. edu님

질문해 주신 “펌웨어 설계시 RTOS 적용 여부”와 관련된 주제에 대해 유사한 문제를 다룬 답변들이 있습니다. 아래에 제공된 답변들을 참고하시어 RTOS 선택의 기준을 더 명확히 이해하시길 바랍니다.

  1. 멀티태스킹에서는 RTOS가 필요하지 않은 환경과 필요한 환경에 대한 상세한 설명을 제공합니다. 특히 PWM 제어와 멀티태스킹 환경이 어떻게 조화롭게 작동할 수 있는지 논의하여 실시간 성능 요구 사항을 다루는 데 도움이 될 것입니다.

  2. FreeRTOS 포팅 작업에서는 다양한 하드웨어 환경에서의 FreeRTOS 포팅 관련 정보와 방대한 인터럽트가 발생하는 시스템에서 RTOS가 어떤 영향을 받을 수 있는지에 대한 시사점을 제공합니다.

결론적으로, 주어진 시스템의 요구 사항과 환경 조건에 따라 RTOS를 사용할지 여부를 결정하는 것이 중요합니다. 인터럽트가 많이 발생하는 환경에서는 RTOS가 오버헤드로 인해 실시간 성능에 영향을 미칠 수 있으므로, 이런 경우에는 베어메탈 펌웨어가 더 적합할 수 있습니다. 하지만 복잡한 시스템에서는 RTOS가 제공하는 유지보수성과 동기화 편의성이 유리할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

edu님의 프로필 이미지
edu

작성한 질문수

질문하기