inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

FreeRTOS 프로그래밍

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

해결된 질문

374

김영선

작성한 질문수 7

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으로 출력됩니다.

etaskgetstate FreeRTOS 운영체제 임베디드

답변 2

0

김영선

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

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

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

0

홍영기

가급적 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)로 파일을 보내주시면 확인해 보겠습니다.

 

만약에 포팅을 할때 1년에 한번 잡는 치명적인 문제를 해결하는 코드가 들어갔다고 가정하면

0

59

2

STM32 포팅할 때 STM32 Project가 없음

0

176

2

FreeRTOS 멀티코어 지원안됨?

0

90

2

[소스코드 분석-configUSE_TIME_SLICING] TASK1,2의 우선순위가 동일할 때, configUSE_TIME_SLICING값 변경에 따른 출력 변화

0

87

2

포팅 부탁드립니다!

0

61

1

포팅 부탁드립니다. <NUCLEO-G071RB>

0

67

2

상호배제 후 되지를 않아서 질문드립니다.

0

62

1

수료증 발급 기준 수정 요청

1

74

1

재진입가능여부에 관한 질문

1

68

1

01_TASKMAN프로젝트 디버깅 모드 실패

1

77

2

그러면 malloc/free가 아닌 동적할당자를 써서 메모리를 할당했기떄문에

1

72

2

실행순서

1

77

2

uart 전송중에는 스위칭이 금지되나요?

1

75

2

스택오버플로우 실습 중 stack size 설정 질문

0

84

2

포팅 원합니다.

2

77

2

코루틴 실습질문

1

101

2

TODO 2번 문제

1

141

4

10. 선점형 커널 그림 설명중 우선순위가 반대인 경우에도 Task B가 먼저 수행되나요?

1

82

2

디버거모드에 진입이 안됩니다.

0

177

2

prvExampleTaskHook 함수 호출 부분에 대해 문의드립니다.

0

121

2

보드 STM32H735IG와 강의 호환 여부 문의

1

153

3

[ L152RE ] 원샷 소프트타이머 실행 잘 되시나요?

1

159

2

Deferred Interrupt Processing 샘플 예제 문의 드립니다.

1

121

2

포팅 서비스 부탁드립니다

1

125

2