본문 바로가기
반응형

임베디드 관련17

[FreeRTOS] log파일 출력 FreeRTOS에서 log파일 출력하는 방법 env의 monitor_filters 영역에서 time뿐만아니라 log2file으로 설정해줘야 한다.아래는 platformio.ini의 한 예시이다.[env:your_environment]platform = espressif32 ; 사용 중인 플랫폼에 따라 변경board = esp32dev ; 사용 중인 보드에 따라 변경framework = arduino ; 사용 중인 프레임워크 (예: freertos, arduino 등)monitor_speed = 115200 ; 모니터링 속도 설정monitor_filters = time, log2file주요 설정monitor_filters - time: 각 로그 메시지 앞에 타임스탬프를 추가한다. -.. 2024. 11. 29.
Raspberry Pi Pico 저전력 모드 함수 정리 Raspberry Pi Pico 저전력 모드 함수 정리1. Raspberry Pi Pico는 다양한 저전력 모드를 지원해 배터리 수명 연장에 유리함2. 아래는 라즈베리 파이 피코의 RP2040 SDK 내에서 사용할 수 있는 주요 전력 관리 함수들이다.1. sleep_ms(uint32_t ms) 함수#include "pico/stdlib.h"sleep_ms(1000); // 1초 동안 슬립설명: 지정된 밀리초 동안 시스템을 슬립 상태로 전환함용도: 짧은 대기 시간을 줄 때 주로 사용하며, 특정 작업 대기 시 전력 소모를 줄이는 데 유용함  2. sleep_us(uint32_t us) 함수#include "pico/stdlib.h"sleep_us(100); // 100 마이크로초 동안 슬립 설명: 지정된 마.. 2024. 11. 10.
라즈베리파이 피코(Raspberry Pi Pico)에서의 딥슬립 라즈베리파이 피코(Raspberry Pi Pico)에서의 딥슬립라즈베리파이 피코(Raspberry Pi Pico)는 RP2040 마이크로컨트롤러 칩을 사용전력 절감을 위한 다양한 기능을 지원하지만 딥슬립 모드는 없음RP2040은 라이트슬립이나 아이들 상태와 같이 전력을 줄이는 저전력 모드를 제공함1. 라즈베리파이 피코에서는 다음과 같은 전력 절감 기능을 주로 사용함 1. 라이트슬립 (lightsleep)CPU와 주변 장치 일부가 중지되며, 타이머나 인터럽트를 통해 깨어날 수 있음저전력 상태에서 빠르게 깨어나야 할 때 주로 사용 2. 아이들 모드 (idle)CPU가 유휴 상태로 진입해 전력 소모를 줄임프로세서가 필요할 때 즉시 다시 활성화됨반복 대기나 짧은 대기 시간에 적합 3. 클럭 및 주변 장치 제어필.. 2024. 11. 9.
[ESP32] 주요 딥슬립함수 ESP32에서 주요 딥슬립함수ESP32에서 제공하는 딥슬립 관련 함수는 esp_sleep.h 라이브러리에 포함되어 있으며, Arduino와 ESP-IDF 환경에서 사용할 수 있다.  1. esp_deep_sleep_start()  - 딥슬립모드를 시작하는 함수이다. - 호출 시 ESP32가 딥슬립 상태에 들어가며, 이후에는 리셋되기 전까지 실행이 멈춘다. 사용 예제esp_deep_sleep_start(); 2. esp_sleep_enable_timer_wakeup(uint64_t time_in_us) - 타이머를 통해 깨어나는 기능을 설정한다. - 설정된 시간이 지나면 ESP32가 자동으로 깨어난다. - time_in_us는 마이크로초(µs) 단위로 지정한다.사용 예제esp_sleep_enable_tim.. 2024. 11. 4.
[FreeRTOS] 동기화 xSemaphoreTake(), xSemaphoreGive() (뮤텍스 또는 세마포어)특정 자원을 보호하기 위해 세마포어 또는 뮤텍스를 사용하여 태스크 간 동기화를 위한 수단이다.※ 동기화란?2024.05.21 - [소프트웨어 공학 용어 정리] - [SW 용어] 동기화(Synchronization), 임계 영역(Critical Section) [SW 용어] 동기화(Synchronization), 임계 영역(Critical Section)동기화(Synchronization)1. 동기화는 시스템을 동시에 작동시키기 위해 여러 사건들을 조화시키는 것을 의미한다.2. 병행성과 관련해서 공유되는 자원에 대한 이해와 공유자원 사용과 관련해서 생길kfdd6630.tistory.com 세마포어는 하나의 태스크만 자원에.. 2024. 9. 15.
[FreeRTOS] 이진 세마포어, 뮤텍스 사용법 및 비교 세마포어(Semaphore)와 뮤텍스(Mutex)1. FreeRTOS에서 여러 태스크 간의 동기화와 공유 자원 보호를 위한 주요 동기화 도구이다.2. 이 두 개념은 태스크들이 동시에 접근할 수 없는 공유 자원(예: 하드웨어, 변수)을 안전하게 사용할 수 있도록 제어한다.3. 세마포어는 태스크 간의 동기화를 제공하고, 다수의 태스크가 자원에 접근할 수 있는지를 관리한다.4. 뮤텍스는 상호 배제를 통해 한 번에 하나의 태스크만 특정 자원에 접근할 수 있도록 한다.1. 세마포어(Semaphore)1. 세마포어는 특정 자원을 여러 태스크가 동시에 사용하지 못하도록 제어하는 데 사용된다.2. FreeRTOS에서 세마포어는 주로 이진(Binary) 세마포어와 카운팅(Counting) 세마포어로 나뉜다. 1.1. 이.. 2024. 9. 14.
[FreeRTOS] ISR 내에서 임계구역 설정 portSET_INTERRUPT_MASK_FROM_ISR(), portCLEAR_INTERRUPT_MASK_FROM_ISR()인터럽트 서비스 루틴(ISR) 내에서 임계 구역을 설정한다.사용예제UBaseType_t uxSavedInterruptStatus;uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();// ISR 내에서 보호되어야 하는 코드부portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus); 특징1. ISR에서 사용하도록 설계되었다.2. 임계 구역을 설정하여 다른 인터럽트가 중첩되지 않도록 한다. 2024. 9. 13.
[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.
반응형