• 카테고리

    질문 & 답변
  • 세부 분야

    임베디드 · IoT

  • 해결 여부

    미해결

configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY / configLIBRARY_LOWEST_INTERRUPT_PRIORITY 문의

23.10.19 16:13 작성 조회수 327

2

 

다음 4가지 우선순위 설정에 관해서 기존 시스템에 freertos 포팅시 기존시스템의 인터럽트와 충돌하지 않기 위해 설정하는거 같아 보입니다.

기존 시스템 configPRIO_BITS = 5 인 상태이며

사용하던 uart interrupt priority 1인 상태에서 freertos 를 포팅하고싶은데

다음에 값들이 어떤 관계가 있는지 모르겠습니다.

configLIBRARY_LOWEST_INTERRUPT_PRIORITY

configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY

configKERNEL_INTERRUPT_PRIORITY

configMAX_SYSCALL_INTERRUPT_PRIORITY

 

 

답변 1

답변을 작성해보세요.

1

안녕하세요. 김영선님!

수백 단어의 글보다는 한장의 그림이 때로는 이해하기 더 쉬울때가 많습니다.

시간을 들여 표를 그려보았습니다. 도움이 되셨으면 합니다 ^^

표에서 보이는 5, 15 등의 우선순위 값 설정은 제 강의에서의 디폴트 값이면서 동시에 STM32CubeIDE 디폴트 값이기도 합니다. 참고해주세요

image

자세한 내용을 위의 표를 참고해주시고 핵심만 간추려 보겠습니다. 열거하셨던 4가지 상수 값 중에 가장 중요한 상수는 2가지(configKERNEL_INTERRUPT_PRIORITY, configMAX_SYSCALL_INTERRUPT_PRIORITY) 입니다. 이 상수값이 주로 사용되는 곳은 freeRTOS 소스 중에서 'port.c' 입니다

이 상수값은 각각 FreeRTOS 에서 지원하는 인터럽트 우선순위의 하방(bottom)과 상방(top)을 결정짓는 역할이죠. 그렇다고 해서 이 구간내의 우선 순위만 사용할 수 있는 것은 아닙니다.

NON-RTOS HW Interrupts 범주의 인터럽트들은 RTOS 에서 관리하는 대상이 아니기 때문에 장점과 단점을 함께 가집니다.

장점을 먼저 말씀드리자면, 언제든지 RTOS 을 선점할 수 있습니다. 여기에는 사용자 코드 뿐만 아니라 커널도 해당됩니다. 이 장점은 언제든지 단점으로 돌변할 수도 있는데, 인터럽트 실행 시간을 최적화 하지 않은 상태에서 사용하면 RTOS 실행의 안정성을 해칠 수 있습니다.

 

uart interrupt 의 우선순위를 1로 사용한다고 말씀하셨습니다.

uart 인터럽트를 RTOS awareness 인터럽트나 NON RTOS 인터럽트 중에서 선택하시면 됩니다.

이 또한 표를 참고해서 이해해주시면 될 것 같습니다.

추가적인 궁금한 점 있으시면 다시 글 남겨주세요

 

김영선님의 프로필

김영선

질문자

2023.10.25

감사합니다. 표로 보내 이해가 잘되네요^^