본문 바로가기
반응형

FreeRTOS9

[FreeRTOS] 임계구역 설정 taskENTER_CRITICAL(), taskEXIT_CRITICAL() FreeRTOS에서 임계구역을 설정하여 자원 혹은 Task의 CPU 등이 선점되지 않게 하여 자원의 불일치 혹은 중단 없는 안전한 작업을 수행하는 방법이다. ※ 임계구역이란?2024.05.21 - [소프트웨어 공학 용어 정리] - [SW 용어] 동기화(Synchronization), 임계 영역(Critical Section) [SW 용어] 동기화(Synchronization), 임계 영역(Critical Section)동기화(Synchronization)1. 동기화는 시스템을 동시에 작동시키기 위해 여러 사건들을 조화시키는 것을 의미한다.2. 병행성과 관련해서 공유되는 자원에 대한 이해와 공유자원 사용과 관련해서 생길kfdd663.. 2024. 9. 12.
[FreeRTOS] Task 전환 제어 vTaskSuspendAll(), xTaskResumeAll()태스크 스케줄링을 일시 중지하여 현재 태스크가 다른 태스크로 전환되지 않도록 한다.사용예제vTaskSuspendAll();// 태스크 전환 없이 실행해야 하는 코드부xTaskResumeAll(); 특징1. 인터럽트는 계속 발생한다.2. 인터럽트 내에서 FreeRTOS API를 호출하면 안 된다.3. 임계 구역보다 시스템에 미치는 영향이 적다. 2024. 9. 11.
[FreeRTOS] 인터럽트 비활성화 및 활성화하는 방법 portDISABLE_INTERRUPTS(), portENABLE_INTERRUPTS()FreeRTOS에서 인터럽트에 의해 선점되면 안되는 중요한 로직을 실행하는 함수를 보호하는 방법이 있다.portDISABLE_INTERRUPTS() 기능1. 이 매크로는 전역적으로 시스템 전체에 모든 인터럽트를 비활성화한다.2. 시스템의 모든 마스킹 가능한 인터럽트를 비활성화한다.3. 이 함수를 호출하면 즉시 모든 인터럽트가 비활성화되어, 인터럽트 서비스 루틴(ISR)이 실행되지 않도록 한다. 주의 사항1. 모든 인터럽트를 비활성화하기 때문에, 시스템의 다른 기능들이 일시적으로 중단될 수 있다.2. 다른 인터럽트 기반 기능(예: 타이머, 통신 등)이 영향을 받을 수 있다.3. 인터럽트를 오랫동안 비활성화하면 시스템 응.. 2024. 9. 10.
[FreeRTOS] Critical Section(임계 영역), 공유자원 보호하기 FreeRTOS에서 Critical Section(임계 영역), 공유자원 보호하기 임계 영역이란?2024.05.21 - [소프트웨어 공학 용어 정리] - [SW 용어] 동기화(Synchronization), 임계 영역(Critical Section) [SW 용어] 동기화(Synchronization), 임계 영역(Critical Section)동기화(Synchronization)1. 동기화는 시스템을 동시에 작동시키기 위해 여러 사건들을 조화시키는 것을 의미한다.2. 병행성과 관련해서 공유되는 자원에 대한 이해와 공유자원 사용과 관련해서 생길kfdd6630.tistory.com 임계 영역을 보호하는 4가지 방법1. 인터럽트 중단(taskENTER_CRITICAL(), taskEXIT_CRITICAL() .. 2024. 6. 10.
[FreeRTOS] Task의 Stack 최적의 사이즈 설정 FreeRTOS에서 Task의 적절한 Stack Size 설정1. 작업은 xTaskCreate() 또는 xTaskCreateStatic() API 함수를 사용하여 생성할 수 있다.2. 함수의 usStackDepth 매개변수는 생성 중인 작업에 할당될 스택의 크기를 지정한다.  - 이떄 단위는 byte가 아니고 word이다.3. 필요한 스택 양은 다음 애플리케이션별 매개변수에 따라 달라진다.4. 스케줄러가 다른 작업을 실행하기 위해 작업 실행을 일시적으로 중지할 때마다 프로세서 컨텍스트가 작업 스택에 저장된다.5. 저장된 프로세서 컨텍스트는 다음에 작업이 실행될 때 작업 스택에서 제거된다.6. 프로세서 컨텍스트를 저장하는 데 필요한 스택 공간은 RTOS 자체에서 발생하는 작업의 스택 요구 사항에 추가되는 .. 2024. 5. 30.
[FreeRTOS] Task의 우선순위와 선점 FreeRTOS에서 Task의 우선순위와 선점, Task간 흐름제어1. 우선순위가 다를 때우선순위가 다른 두 Task를 만든다.우선순위의 숫자가 클 수록 더 우선순위가 높다.xTaskCreate((TaskFunction_t)Task1, "Task1", 128, NULL, 10, &xHandle1);xTaskCreate((TaskFunction_t)Task2, "Task2", 128, NULL, 9, &xHandle2 ); 알파벳 ‘a’를 1초마다 한 번씩 출력하는 우선순위 10의 Task1을 만든다.알파벳 ‘b’를 1초마다 한 번씩 출력하는 우선순위 9의 Task2를 만든다.Task1과 Task2의 vTaskDelay()를 주석처리 해보면서 두 Task가 어떻게 작동하는지 확인한다.  1. Task1, .. 2024. 5. 18.
[FreeRTOS] FreeRTOS의 Task 및 관련 함수 FreeRTOS의 Task 및 관련 함수 xTaskCreate(), vTaskDelay(), vTaskDelayUntil(), vTaskSuspend(), vTaskResume(), vTaskPrioritySet() 1. Task란?FreeRTOS에서 태스크 (Task)란 어느 한 시점에서 Running, Suspended, Waiting되어 있는 함수이다. 프로세스(process)나 스레드(thread)와 비슷하게 동작한다.   2. Task의 특징  - Task의 특징과 생김새 각 Task에는 우선순위를 할당하며 숫자가 높을수록 큰 우선순위를 의미한다.   - 우선순위는 0부터 configMAX_PRIORITIES까지 할당이 가능하다.   - 우선순위가 높은 Task는 낮은 Task를 선점(preem.. 2024. 5. 10.
[FreeRTOS] FreeRTOS 네이밍 규칙 FreeRTOS에서 네이밍 규칙RTOS 커널 및 데모 애플리케이션 소스 코드는 다음 규칙을 사용한다.1. Variables (변수)1. 접두사 u, l, s, c unsigned 타입의 변수는 추가 접두사 u를 갖는다. 변수 이름은 CamelCase 대소문자를 사용하고 명확하게 설명하며 전체 단어(일반적으로 사용되는 약어 제외)를 사용한다.유형 uint32_t의 변수는 접두사로 ul이 붙는다.  - 여기서 'u'는 ' unsigned '을 의미하고 'l'은 'long'를 의미한다.유형 uint16_t의 변수는 접두사로 us가 붙는다.  - 여기서 'u'는 ' unsigned '을 의미하고 's'는 'short'를 의미한다.유형 uint8_t의 변수는 접두사로 uc가 붙는다.  - 여기서 'u'는 ' un.. 2024. 5. 7.
[FreeRTOS] FreeRTOS란? FreeRTOS란? 이를 알기 전 RTOS(실시간 운영체제)에 대해 알아보자.1. RTOS란?1. RTOS(Real Time Operating System)는 실시간 응용 프로그램을 위해 개발된 운영체제임2. 운영체제의 기능 중 CPU 시간 관리 부분에 초점을 맞추어 설계되었음3. 실시간 운영체제는 프로그래머가 프로세스 우선 순위에 더 많은 제어를 할 수 있게 함4. 응용 프로그램의 우선 순위가 시스템 프로그램의 우선 순위를 넘어설 수도 있음5. 시스템 코드의 임계 구역을 최소화하였으며, 이를 통하여 응용 프로그램의 처리 요청을 정해진 시간 안에 처리해 줄 수 있음 - 실시간 운영체제의 핵심은 응용 프로그램 Task처리에 걸리는 시간을 일관되게 유지할 수 있는 정도에 있음- 처리 시간의 변동폭은 지터(j.. 2024. 5. 6.
반응형