작성
·
119
·
수정됨
답변 2
1
안녕하세요, 김소명님!
제 의견을 정리해서 전달하기 위해 시간이 좀 필요했습니다. 답변드리겠습니다.
솔직히 말씀드리면, 제가 이 강의를 준비하면서 이 부분에 대해서 크게 의식하지 않았던 것은 확실합니다.
그 이유는 간단합니다. CORTEX-M 의 systick 은 그 이름 속에서 잘 드러나 있듯이 TICK 전용 타이머인것입니다. 그리고, 과거부터 FREERTOS 에서 줄곧 사용해왔던 타이머이기도 합니다. 마이크로씨 오에스에서도 십수년간 사용해오던 타이머 이기도 합니다. 그래서 저는 팝업 경고 메시지에 크게 의미를 두지 않았던 것 같습니다. 그리고, ST 직원이 만들어낸 그 경고 메시지도 그리 아름답지 못합니다(강력히 추천한다니? 어쩌라는 거지? 쓰라는 말인가 말라는 것인가) .
이미 오랜동안 낮은 우선순위(15)을 사용해 온 RTOS 틱 인터럽트의 우선순위를 정 반대의 논리인 높은 우선순위(0)로 바꾸려면 보다 강력한 분명한 이유가 있어야 하겠습니다.
우선순위가 높아야 한다는 주장
그들의 주장은 이렇습니다. 1초에 1000번 빠른 속도?로 발생하는 타이머 인터럽트가 다른 하드웨어 인터럽트보다 우선순위가 낮을 경우 인터럽트를 놓칠 수 있는 위험으로인해 시간 베이스에 오차가 발생한다. 따라서 우선순위를 높여서 이 문제를 예방할 필요가 있다.
하지만,
FREERTOS 제작자와 마이크로씨 오에스의 제작자인 리처드베리와 쟝제이 라브로쉐 모두 OS 용 타이머 틱 인터럽트의 우선순위는 오히려 낮아야 한다고 말했습니다. 그런데요 이들의 논리가 더 힘 있어보입니다. 한번 쟝제이의 오래전 글을 함께 보시죠.
우선순위가 낮아야 한다는 주장
출처: https://www.iar.com/knowledge/learn/programming/6-misconceptions-about-the-rtos-tick
마무리 결론입니다.
SysTick 우선순위 설정은 정답이 있는 문제가 아니라, 사용하는 RTOS의 특성과 애플리케이션 요구사항에 따라 다릅니다. 그러므로 두 가지 주장을 참고하되, 자신의 프로젝트와 경험을 바탕으로 판단해야 합니다.
RTOS 제작자들의 권고(FreeRTOS, μC/OS 제작자)는 오랜 현장 경험을 바탕으로 하였으므로 이를 신뢰할 수 있습니다. 그러나 ST의 문서를 통해 제안된 방식 역시 특정 응용 사례에 유효할 수 있습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 김소명님
Stm32 프로젝트에서 FreeRTOS를 사용하실 때 timebase source를 systick timer로 설정하는 이유와 그렇지 않은 경우에 대한 궁금증을 해결해드리겠습니다.
Systick Timer의 장점: Systick 타이머는 Cortex-M 프로세서에 내장된 시스템 타이머로, 일관된 타이머 동작과 인터럽트를 제공하여 간단한 시스템 시간 관리와 운영체제 스케줄링에 효과적입니다. 따라서 외부 타이머 없이도 손쉽게 RTOS Ticks를 구현할 수 있습니다.
경고 메세지의 이유: stm32CubeMX를 통해 FreeRTOS를 추가하면 다른 타이머로 설정하라는 경고가 나오기도 합니다. 이는 특정 프로젝트 구조나 타임 크리티컬 애플리케이션에서, Systick 타이머를 다른 시스템 속성과 독립적으로 사용하려는 권장 사항일 수 있습니다.
다른 타이머를 사용하는 이유: 모든 프로젝트에서 Systick 타이머가 적합한 것은 아닙니다. 특히, 정확하게 미세한 시간 간격을 측정하거나 타이머 리소스를 다른 용도로 사용해야 하는 경우, 별도의 타이머를 사용하는 것이 더 나을 수 있습니다.
관련하여 더 깊이 있는 설명을 원하신다면 유사한 질문에 대한 답변을 확인하시기 바랍니다:
FreeRTOS 사용시 us 단위의 측정이 가능한가요?: 이 게시물에서는 Systick 설정에 대한 논의를 포함하여 다양한 측정 단위와 관련된 도구를 어떻게 사용할지를 설명합니다.
FreeRTOS Tick 관련 문의 드립니다.: 여기서는 FreeRTOS의 Tick 활용 및 타이머 설정에 대한 다양한 옵션을 제시하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
자세히 설명해주셔서 감사합니다 ^^ 덕분에 많은 배움 얻게 되었습니다