inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

174만명의 커뮤니티!! 함께 토론해봐요.

우선순위역전 상황 질문

미해결

FreeRTOS 프로그래밍

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님, 세마포어 먼저 TAKE한 태스크가 실행된다고 배웠는데요 TASK3이 실행하고 있으니 이것을 GIVE하기 전에는 TASK1이 블락되는것은 이해했습니다. 그런데 TASK2는 왜 갑자기 실행되는 거죠.? TASK3이 GIVE했다면 우선순위가 높은 TASK1이 실행되어야 하고 TASK3이 GIVE하지도 않았는데 TASK2가 실행된 경우는 무슨경우나요.. TASK2는 세마포어와 관련없는 특정 동작이라 선점한 걸로 보면 될까요..? 상황 설명이 부족해서 헷갈립니다.. 저는 오로지 이 강의로만 공부하고 있기 때문에 경험이 많으신 강사님의 설명이 이해가 잘 안되네요 답변 미리 감사합니다.

  • 운영체제
  • 임베디드
  • FreeRTOS
아이스 댓글 1 좋아요 1 조회수 312

세마포어삭제 질문

미해결

FreeRTOS 프로그래밍

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강사님 안녕하세요, vSemaphoreDelete강의에서 (0:29) 세마포어가 삭제되었기때문에 에러메세지가 발생하였다고 하셨는데 xSemaphoreGive error(0) found 세마포어 삭제하지 않아도 xSemaphoreGive error(0) found 출력이 똑같습니다. 잘못 설명하신것 같은데.. 다른 뜻으로 말씀하셨는지요;;? 설명 부탁드립니다.^^

  • 운영체제
  • 임베디드
  • FreeRTOS
아이스 댓글 1 좋아요 1 조회수 332

세마포어,뮤텍스 초기값 질문

해결됨

FreeRTOS 프로그래밍

안녕하세요 강의 수강 후 혼자 복습하는 중인데 세마포어 초기값 관련 이해가 가지 않는 부분이 있어 질문 드립니다. 1번 질문. 05_SEM 실습예제에서 sem_id = xSemaphoreCreateBinary(); -> 초기값 0? --- loops = 10; for(;;) { // 세마포어 대기 if ( xSemaphoreTake(sem_id, portMAX_DELAY) == pdTRUE) { printf("."); fflush(stdout); } sem_val=uxSemaphoreGetCount(sem_id); //printf("sem_val is %d\n", (int)sem_val); if(loops == 0) break; // exit loops--; } 위의 경우 printf 출력되지 않고 세마포어에 의해 바로 태스크가 블럭상태에 빠집니다. 따라서 초기값은 0으로 예상됩니다. 07_MUTEX 실습예제에서 mutex_id = xSemaphoreCreateMutex(); -> 초기값 1? --- int buyTicket(void) { /* TODO #2: MUTEX 을 이용하여 공유변수(tickets)를 보호한다 */ #if 1 // CRITICAL SECTION(ENTER) xSemaphoreTake(mutex_id, portMAX_DELAY); #endif // TODO #2 tickets --; // ticket count #if 1 // CRITICAL SECTION(EXIT) xSemaphoreGive(mutex_id); #endif // TODO #2 return(tickets); } 위의 경우 초기값이 1이어야 해당 함수가 바로 블럭에 빠지지 않고 수행되므로 1로 예상됩니다. 영상에서는 초기값이 1로 수행된다고 이해했는데, 그렇다면 세마포어 예제에서 printf함수가 수행이 되는게 맞는데 되지 않습니다. 초기값이 서로 다르게 입력되는 것인지 궁금합니다. 2번 질문. 05_SEM 실습예제에서 카운트값을 디버깅하고 싶어서 보다가 #if 1 sem_id = xSemaphoreCreateBinary(); if (sem_id == NULL) printf("xSemaphoreCreateBinary error found\n"); sem_val = uxSemaphoreGetCount(sem_id); --- loops = 10; for(;;) { // 세마포어 대기 if (xSemaphoreTake(sem_id, portMAX_DELAY) == pdTRUE) { printf("."); fflush(stdout); } sem_val=uxSemaphoreGetCount(sem_id); //printf("sem_val is %d\n", (int)sem_val); if(loops == 0) break; // exit loops--; } 세마포어 생성 후 uxSemaphoreGetCount 함수를 호출하면 세마포어가 블럭상태에 빠지지 않고 printf함수가 출력이 됩니다. (실제 디버깅 해보면 sem_val 변수값은 0으로 찍힙니다) 위 함수에서 V연산을 하는 행위가 있는 것인가요? 3번 질문. xSemaphoreCreateBinary()와 vSemaphoreCreateBinary()의 차이점이 무엇인지 궁금합니다.

  • 운영체제
  • 임베디드
  • FreeRTOS
ctk103 댓글 1 좋아요 2 조회수 533

fflush질문

미해결

FreeRTOS 프로그래밍

강사님 안녕하세요 틱 인터럽트 기준 1ms동안 버퍼에 문자1000개가 들어가는 속도라 하고 버퍼는 100개까지 채울수 있다는 가정시 fflush함수가 없을 때는 a 100개가 1*10번 / b 100개가 1*10번 번갈아 출력되는거죠? 그런데, fflush함수가 있으면 a 1개가 100*10번나오지 못하다 끝나고 b 1개가 100*10번나오지 못하다 끝나야 하는데 말씀하신 uart로직이 결부되었으나 aaaaaabaaaaaabaaaaaab 이런 패턴은 b 태스크에만 영향을 받는것 처럼 보이는데 제가 질문한 예시로 답변 가능할까요??..

  • 운영체제
  • 임베디드
  • FreeRTOS
아이스 댓글 1 좋아요 1 조회수 326

configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY / configLIBRARY_LOWEST_INTERRUPT_PRIORITY 문의

미해결

FreeRTOS 프로그래밍

다음 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

  • 운영체제
  • 임베디드
  • FreeRTOS
김영선 댓글 1 좋아요 2 조회수 684

섹션 5 <커널소스분석-태스크 스택메모리> 질문 드립니다!

미해결

FreeRTOS 프로그래밍

안녕하세요 강사님 :) 1:12 부근에서 "ARM은 메모리를 높은 주소부터 낮은 방향으로 쓴다" 고 말씀하셨는데, 이것은 리틀 엔디안 방식을 이용한다는 것을 의미하는 것일까요?? 그리고 맞다면 인터넷에 검색해보니 ARM은 리틀 엔디안 or 빅 엔디안 중 선택해서 사용한다고 나와 있는 것을 봤는데 모든 ARM processor가 리틀 엔디안을 쓰는 것이 맞을까요..??

  • 운영체제
  • 임베디드
  • FreeRTOS
madlife9161 댓글 1 좋아요 1 조회수 266

섹션 4 <소스코드 분석 - printf, fflush>1:52 부근에서 질문드릴 것이 있습니다!

미해결

FreeRTOS 프로그래밍

안녕하세요 강사님! 섹션 4 <소스코드 분석 - printf, fflush>1:52 부근에서 질문드릴 것이 있습니다! 강의에서 설명해주신 것을 저는 fflush() 를 주석하면 각 Task에서 UART 통신을 통해 전송한 문자들이 바로 flush되지 않고 버퍼에 쌓이다가 buffer 한계량을 초과할 때마다 출력이 되므로 우리가 생각했던대로인 'a'가 연속적으로 절반 출력되고, 'b'가 연속적으로 절반 출력되는 것이 반복되는 결과가 발생한다고 말씀하신 것으로 이해했습니다. 그러나 제가 이해가 안되는 것이 Task1, 2는 우선순위가 같고, 따라서 Task1 한 번 실행('a' 출력) -> Task2 한 번 실행('b' 출력) -> Task1 한 번 실행('a' 출력) ... 이 과정이 반복되어서 ababababababab가 출력되어야 하는 것이 아닌가요..??

  • 운영체제
  • 임베디드
  • FreeRTOS
madlife9161 댓글 2 좋아요 3 조회수 589

NUCLEO-L152RE 포팅문의

해결됨

FreeRTOS 프로그래밍

안녕하세요. 회사에서 가지고 있는 보드가, NUCLEO-L152RE Board 모델 포팅 가능 한지 문의 드립니다. 감사합니다.

  • 운영체제
  • 임베디드
  • FreeRTOS
고성호 댓글 1 좋아요 1 조회수 327

강의 "소스코드 분석-vTaskSuspend" 관련 질문 드립니다!

미해결

FreeRTOS 프로그래밍

안녕하세요 강사님 :) 스케줄링 관련 질문이 있어 글을 남깁니다. Task2보다 우선 순위가 높은 Task1 이 vTaskDelay(1000)로 1초 동안 blocked 상태였다가 다시 ready상태로 돌아왔을 때, 혹은 vTaskSuspend() 함수로 인해 blocked상태였다가 vTaskResume() 을 통해 다시 ready상태가 됐을 때 만약 자신보다 우선순위가 낮은 Task2가 running 상태라면 우선순위가 더 높은 Task1이 ready상태이니 Task2는 running 상태에서 쫒겨나고, Task1이 running 상태가 되는 것이 맞습니까? 그리고 이 때 Task2는 어떤 작업에 의해 어떤 상태가 되는지(blocked? ready?)도 궁금합니다!!

  • 운영체제
  • 임베디드
  • FreeRTOS
madlife9161 댓글 2 좋아요 1 조회수 444

강의 "수업실습예제의 구성" 2:22부근 질문드립니다!!

미해결

FreeRTOS 프로그래밍

안녕하세요 강사님!! C언어 함수 관련 질문 드릴 것이 있어 질문글을 작성하게 되었습니다. 강의 2:22부근에 나오는 USER_THREADS() 함수는 task.c에 정의되어 있고 그 함수를 다른 .c 파일인 main.c에서 호출하고 있습니다. 보통 함수의 정의를 task.h 등의 헤더파일에 작성하고, 이후 main.c에서 #include "task.h"를 한 후 다른 .c파일의 함수를 사용할 수 있는 것 아닌가요?? 어떠한 헤더파일의 인클루드도 없이 바로 main.c에서 다른 .c파일인 task.c 파일 속 함수를 사용할 때 왜 오류가 발생하지 않는 것인가요..??

  • 운영체제
  • 임베디드
  • FreeRTOS
madlife9161 댓글 2 좋아요 1 조회수 311

실습환경 구축 STM32CubeIDE 시작하기. 따라하다가 에러 발생

미해결

FreeRTOS 프로그래밍

안녕하세요. 선생님 실습환경 구축 STM32CubeIDE 시작하기 영상을 보다가 TASKMAN 인포트까지는 했는데, 그 이후 영상처럼 디버깅을 하면 에러가 납니다. 어떤 조치를 해야 하는지요? 빌드 조차도 되지 않으니 문제가 있는듯한데요. 처음 하는 것이라서 가이드가 좀 필요합니다. 답변 주시면 감사하겠습니다.

  • 운영체제
  • 임베디드
  • FreeRTOS
박철훈 댓글 2 좋아요 1 조회수 939

포팅부탁드립니다.

미해결

FreeRTOS 프로그래밍

직접 해봤는데 자꾸 오류가 나네요 ------------------------------------------------- - 사용하고 싶은 ST 보드명: NUCLEO_G431RB, NUCLEO_F446RE - 사용하시는 컴파일러(stm32cubeide) 버젼: 1.13.1 - 기타: 직접 포팅했을 때에는 멀티프로세스에서 2가 돌아가다가 1(우선순위 2보다 낮게)이 돌아가면 멈춰버립니다. ------------------------------------------------- 감사합니다.

  • 운영체제
  • 임베디드
  • FreeRTOS
오상현 댓글 1 좋아요 0 조회수 219

섹션 4 : 소스코드분석-vTaskSuspend 관련 질문있습니다.

미해결

FreeRTOS 프로그래밍

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. task.c에서 xTaskCreate를 통해 Task1을 생성 시 word를 128 로 설정하면 향후 Task1이 Suspend하고 TaskMain을 Delete해도 Task2가 실행 되지 않습니다. 그런데, Task1의 word크기를 256으로 TaskMain과 똑같이 맞춰주면 Suspend가 잘 작동합니다. 혹시, Suspend 시 TaskMain 256에 Task1 128이 올라가고 Suspend하면 남아있는 메모리 128 + Task2 메모리 128로 해서 앞에 Task2가 메모리 맨 앞으로 못와서 실행이 안되는 개념인가요?? 처음 시작해서 모르는게 많은 것 같습니다!

  • 운영체제
  • 임베디드
  • FreeRTOS
오상현 댓글 1 좋아요 0 조회수 353

포팅 부탁드립니다.

미해결

FreeRTOS 프로그래밍

- 사용하고 싶은 ST 보드명: NUCLEO-H723ZG - 사용하시는 컴파일러(stm32cubeide) 버젼: 1.13.1

  • 운영체제
  • 임베디드
  • FreeRTOS
YEH 댓글 1 좋아요 0 조회수 259

포팅작업 요청드립니다.

해결됨

FreeRTOS 프로그래밍

- 사용하고 싶은 ST 보드명: open746I-C package B (MCU: STM32F746IGT6) - 사용하시는 컴파일러(stm32cubeide) 버젼: STM32CubeIDE Version: 1.12.1 Build: 16088_20230420_1057 (UTC)

  • 운영체제
  • 임베디드
  • FreeRTOS
댓글 1 좋아요 0 조회수 380

FreeRTOS 사용 중 EIRQ 사용여부

미해결

FreeRTOS 프로그래밍

FreeRTOS를 사용하면 EIRQ 부분이 작동을 안 하는데 당연한 건가요?? 제 환경은 spc5studio라서 stm32IDE와는 조금 다릅니다. 다른 OS를 작동해서 원래 환경에 외부 인터럽트는 작동하지 않는 것인지 궁금합니다. 만약 작동하지 않는 게 맞다면.. FreeRTOS include 시에는 어떤 함수로 외부인터럽트를 처리해야할까요 감사합니다!

  • 운영체제
  • 임베디드
  • FreeRTOS
wjdtjr123 댓글 1 좋아요 1 조회수 418

포팅부탁드립니다.

미해결

FreeRTOS 프로그래밍

- 사용하고 싶은 ST 보드명 : NUCLEO H743ZI2 - 사용하시는 컴파일러(stm32cubeide) 버젼: 1.12.1

  • 운영체제
  • 임베디드
  • FreeRTOS
IT초보 댓글 1 좋아요 1 조회수 414

인터럽트 벡터 테이블의 시작 위치에 관하여 질문이 있습니다.

미해결

FreeRTOS 프로그래밍

안녕하세요 강의를 듣던 중 질문이 있습니다. 섹션 10. 세마포어, 소스코드 분석 - 부트의 원리 강의에서 6:42 초 쯤에 보드에 버튼을 누르면 Startup 폴더에 있는 startup_stm32f103rbtx.s 파일에 .word EXTI15_10_IRQHandler 라는 이 인터럽트 핸들러 부터 실행된다고 하셨는데 인터럽트 벡터 테이블 안에서 어떤 인터럽트 핸들러부터 실행되는지는 어떻게 알 수 있는건가요? 감사합니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

  • 운영체제
  • 임베디드
  • FreeRTOS
신동윤 댓글 1 좋아요 1 조회수 630

Task 별 cpu 사용량

미해결

FreeRTOS 프로그래밍

Task를 여러 개 생성 후, 우선 순위의 변화에 따라 cpu 사용량이 어떻게 변하는지 보고 싶어 "osGetCPUUsage" 함수를 통해 CPU 사용량을 측정하였습니다. 그런데 위의 함수는 전체 CPU 사용량을 측정하는 것으로 알고 있습니다. 저는 우선순위를 랜덤으로 준 후, 각 Task별 cpu 사용량을 알아 보고 싶은데, 혹시 각 Task의 cpu 사용량을 볼 수 있는 방법은 없을까요?

  • 운영체제
  • 임베디드
  • FreeRTOS
refwfa15y 댓글 1 좋아요 1 조회수 680

태스크 별 주기 주는 방법

미해결

FreeRTOS 프로그래밍

안녕하세요 task 1, task 1, task 1 이 있다고 가정할때 각각 100 200 500ms마다 한번씩 해야한다고 가정할 경우 어떻게 주기를 관리하나요? 예를 들어 단순하게 osdelay(100); 한다면 단순히 0.1초만 보장하기 때문에 나중에는 누적되어서 오차가 생길거라고 생각되어집니다.

  • 운영체제
  • 임베디드
  • FreeRTOS
이상민 댓글 1 좋아요 1 조회수 931

인기 태그

인프런 TOP Writers

주간 인기글