2017-01-12 3 views
2

임베디드 응용 프로그램 내부에 저전력 관리 기능을 배치하는 방법에 대한 조언을 찾고 있습니다. 내 생각은 RTOS 정보 + 응용 프로그램 제약 조건을 기반으로 유휴 작업 내에서 활성화 된 WFI를 처리하는 것입니다. 응용 프로그램이 최대 수면 시간을 계산 (작업, 타이머, 세마포어 시간 초과, ...)을 WFI는 RTOS 타이밍에 따라 RTOS에서 WFI를 처리하는 방법

  • 수 있도록 허용하는 경우
    1. 알 수있는 응용 프로그램 기능을 가지고있다.

    2. 은 일부가 이미 이러한 종류의 응용 프로그램을 관리하는 경우 깨울 시스템 (어쩌면 EXTI) 그래서

    을 HW 기능을 사용하여, 나는 어쩌면에 이러한 솔루션을 알고 관심 코드 샘플 얻기

  • +0

    무슨 말씀 이세요? 와이파이? 아니면 WFI? –

    +1

    'WFI' ARM 명령어는 ** "wait for WiFi"를 의미하지 않습니다 **! – Olaf

    +0

    @Olaf 나는 그가 그 뜻이 아니 었 OP에 대한 희망 ... –

    답변

    2

    백그라운드 작업이나 사용자 후크가 처리되지 않으면 WFI를 지원하는 아키텍처 용 RTOS 구현이 기본적으로 유휴 루프에 배치됩니다. FreeRTOS가 다른 것으로 생각하지 않습니다. 시스템은 RTOS 시스템을 포함하여 모든 인터럽트에 대해 웨이크 업하므로 저전력 작동을 지원하기 위해 더 이상 할 일이 없습니다. 유휴 루프에 있지 않으면 작동 중이며 저전력을 입력 할 수 없습니다.

    전력 소비량을 줄이기 위해 일부 RTOS는 RTOS 시스템 인터럽트주기가 가변적이며 가장 긴 활성 남은 시간 초과 또는 지연으로 설정된 틱없는 모드를 지원하고 타이머를 기반으로 시작시 틱 카운터를 수정합니다 실제로 잠 들어있는 진드기의 수. 물론 다른 인터럽트에서는 깨울 수 있습니다.

    tick-less 연산은 상대적으로 큰 인터럽트 및 타이밍 간격 (RTOS 틱 속도와 비교)이있는 시스템에서 유용합니다. 모든 틱에서 작업을한다면, 거의 목적을 이루지 못합니다. 어쨌든 일어날 수 있기 때문입니다.

    FreeRTOS는 Low Power RTOS For ARM Cortex-M MCUs에 설명 된대로 configUSE_TICKLESS_IDLE을 사용하여 ARM Cortex-M에서 tick-less 연산을 지원합니다.

    관련 문제