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

김영선님의 프로필 이미지
김영선

작성한 질문수

FreeRTOS 프로그래밍

task status 확인 방법 문의드립니다.

해결된 질문

작성

·

266

1

질문이 두가지 입니다.
1.
예제 1번에서
Task1 information 출력 부분 보면
printf("task1 status = %d \n",eTaskGetState( xHandle1 )); 주석처리 되어있습니다.
eTaskGetState 함수를 사용하기 위해서는
INCLUDE_eTaskGetState 를 1로 선언해야 한다고 되어있는데
#define INCLUDE_eTaskGetState 1 선언하고 진행하니 출력이 되었습니다.
uart log 결과
-------  Task1 information -------
task1 name = Task1
task1 priority = 6
task1 status = 0
 
 
궁금한점은 보통 이런 define을 해주는 위치는 어디서 해야하는지 궁금합니다.
저같은 경우
FreeRTOS 폴더내의 task.c 파일 중 #define이 몰려있는 부분에 임의로 했습니다.
 
특정 함수를 사용할때 정의가 필요하게 되면 #define 할때 정해진 암묵적인 규칙이 있을까요?
 
2. -------  Task1 information -------
task1 name = Task1
task1 priority = 6
task1 status = 0

여기서 priority = 6으로 되어있는데 10이 아니라 왜 그런걸까요

TASK_1_PRIO = 10으로 되어있고

TASK_1_PRIO 를 다른값으로 변경해도 6으로 출력됩니다.

답변 2

0

김영선님의 프로필 이미지
김영선
질문자

2번 질문에 대해서 원인을 찾아서 공유드리고자 글남깁니다. 

.ioc 설정 middleware쪽 freertos 관련 설정에 MAX_PRIORITES 설정에서 MAX값이 기본 7로되어있어서

소스코드에서 설정한 값인 10을 출력을 못하는 상황입니다.  MAX값 32MAX로 해놓으면 됩니다. 

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

가급적 ioc 파일의 수정은 비추드립니다. 수정하면 안되는 이유는 다음 강좌 참고 소스코드 분석-FreeRTOSConfig

ioc 파일에 변경을 가하면 말씀하셨던 상수값이 아래와 같이 'FreeRTOSConfig.h' 파일내에 자리하게 됩니다. 

#define configTICK_RATE_HZ                       ((TickType_t)1000)

#define configMAX_PRIORITIES     ( 7 ) <--- 요기

#define configMINIMAL_STACK_SIZE                 ((uint16_t)128)

#define configTOTAL_HEAP_SIZE                    ((size_t)3072)

 

그렇게되면 말씀하셨던것처럼 우선순위의 표현에 제약 사항(PRIO 6 까지 가능)이 발생하게되죠.

기타 궁금한 점 있으시면 글 남겨주세요.

 

0

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

안녕하세요. 김영선님!

제 영상을 시청해주셔서 감사드립니다 :)

두 가지 질문 주셨네요. 하나씩 설명드리겠습니다.

ANS1) FreeRTOSConfig.h 파일이나 FreeRTOSConfig_base.h 파일에 원하시는 내용(e.g. INCLUDE_eTaskGetState) 을 추가하시면 됩니다.

FreeRTOS 는 이와 같은 헤더 파일을 통해서 사용자가 RTOS 을 커스터마이징 할 수 있도록 돕고 있습니다.

 

ANS2) 제가 실습 예제(01_TASKMAN) 을 실행해보면 아래와 같이 출력됩니다.

-------  Task1 information -------

task1 name = Task1

task1 priority = 10

task1 status = 0

 

아래와 같이 동일 실습 예제의 정답지로 실행해보시고 비교해보시면 좋을 것 같습니다.

STM32freeRTOS-answer

    |---- 01_TASKMAN

 

이처럼 해보시고, 그래도 문제가 발생하면 제 이메일 주소(guileschool@gmail.com)로 파일을 보내주시면 확인해 보겠습니다.

 

김영선님의 프로필 이미지
김영선

작성한 질문수

질문하기