작은 임베디드 시스템 프로젝트에서 우리는 스레드에서 실행하고자하는 코드를 가지고 있으므로 임베디드 RTOS (eCos) 위에 빌드하도록 선택합니다.RTOS와 주기적 임원을 섞는 것이 합리적입니까?
이전에는 주 컴퓨터 (state machine)로 구현 된 작업을 수행하는 main()의주기 실행 파일을 사용했습니다. 일부 작업의 경우 작업을 많은 세분화 된 상태로 나누어 코드를 복잡하게 만드는 문제가 발생했습니다.
RTOS로 전환 할 때 각 스레드의 메모리 사용량이 빠르게 증가한다는 것을 알게되었습니다. (우리는 64k 만 가지고 통신 버퍼를위한 메모리가 필요합니다)
우리는 통신 작업에 트레드를 사용하고 주기적으로 임원을 위해 다른 스레드를 사용할 것을 고려하고 있습니다. 주기적 집행은 다른 논리적 인 업무를 이끌 것입니다.
이와 같이 RTOS와 주기적 집행을 혼합하는 것이 합리적입니까?
선점 형 스레딩 기능을 사용하면 통신 작업에 지나치게 복잡한 상태 시스템을 구축하지 않아도됩니다. 통신 부분을위한 스레드를 가짐으로써 코드는 꽤 간단합니다. 우리가 현재 sleep (1000) 타입의 블록을 가지고있는 모든 포인트에서 상태를 깨면 코드는 기본적으로 매우 작은 상태의 스파게티 코드 엉망이 될 것입니다. 그러나 코드를 깨끗하고 유지 보수하기 쉽게 유지할 수 있습니다. 다른 상태 머신은 단순한 것에서 다소 복잡한 것까지 다양합니다 (하나는 15 개 상태).통신 상태 머신은 더 많은 공동 – JeffV