본문 바로가기
C++ 200제/코딩 IT 정보

WinCE 저전력 모드 프로그래밍 주의 사항 (윈도우 CE 스케줄링)

by vicddory 2018. 3. 18.

WinCE 저전력 모드 프로그래밍 주의 사항 (윈도우 CE 스케줄링)


WinCE 금지 사항


아래 코드는 좋지 않은 습관이다. CPU 파워와 배터리 소모를 유발하여 저전력을 위배한다. 여기서 윈도우 CE 전원 관리를 잠깐 살펴보자. 윈도우 CE는 운용시간의 90% 이상 모든 스레드가 블록 된 상태다. 이때는 WinCE OEM 추상 레이어(OAL, OEM Abstraction Layer로서 MS-DOS에서의 BIOS와 같다)호출해 저전력 대기 상태로 진입한다.


스레드 기반 환경에서 다음과 같은 코드를  사용하면 절대 안 된다.


1
2
3
4
while (bFlag == FALSE) {
    // 플래그에 새 값을 읽음
}
// 수행 계속
cs


일반적으로 저전력 상태는 명령어 실행을 중단하는 CPU 정지(halt)를 뜻한다. CPU가 어떤 명령도 실행하지 않으므로 CPU를 실행하기 위하며 메모리를 읽고 쓰는 전력 소모도 없다. 램 내용과 화면 백라이트를 유지하는 데 사용하는 전력만이 필요하다. 잘 설계된 시스템이라면 저전력 모드에서 소모하는 전력이 스레드를 실행할 때의 1% 정도다.


WinCE 저전력 모드 프로그래밍[WinCE 저전력 모드 프로그래밍 주의 사항 (윈도우 CE 스케줄링)]

간단한 예


완전히 충전된 상태에서 10시간 운영 가능한 윈도우 모바일 제품을 생각해보자. 이 시스템을 사용하지 않고 몇 분이 흐르면 자동으로 꺼지게 설계하면 이 10시간은 몇 주로 늘어날 수도 있다. (90% 이상을 WinCE 저전력 상태에 있다고 가정하면)


제대로 된 블록 방식 코드를 사용하지 않은 불량한 애플리케이션을 돌린다면 시스템이 저전력 모드로 들어갈 일이 없을 것이다. 이때는 시스템이 계속 전략을 다 해 실행될 것이며 애초 가정했던 평균 10시간은 커녕 한 시간도 제대로 실행될 수 없을 것이고, 운이 좋아야 하루 정도 사용할 수 있을 것이다.


이처럼 WinCE 저전력 상태에 대한 고려는 매우 중요하다. 다행히도 윈도우 애플리케이션들은 대부분 GetMessage를 호출하면서 거의 모든 시간을 블록 된 상태에서 소모한다. 따라서 시스템 전원 관리는 기본적으로 이뤄진다. 그러나 멀티스레드를 사용할 때는 동기화 객체를 사용해 대기 중인 스레드를 블록 시켜야 한다.


윈도우 CE 스케줄링 저전력[WinCE 저전력 모드 프로그래밍 주의 사항 (윈도우 CE 스케줄링)]


<< 저전력, Winodws CE 더보기>>


- MCU 저전력 (전력 소비) 회로 설계 방안과 기법

- MCU 설계, 임베디드 시스템 저전력/저소모 에너지 기법

- 임베디드 OS란, 특징 핵심사항 4가지 (저비용, 저전력, 소형, 경량)

- [MFC강좌] 메모리 맵 파일 소스, WinCE(windows embedded compact)

- WinCE(윈도우 CE) 메모리 아키텍처와 메모리 구조


출처 : 윈도우 임베디드 CE 6.0 프로그래밍, 더글라스 볼링

WinCE 저전력 모드 프로그래밍 주의 사항 (윈도우 CE 스케줄링)

댓글