WinCE(윈도우 CE) 메모리 아키텍처와 메모리 구조 데스크탑용 윈도우 프로그래머는 윈도우 CE를 접할 때 넘어야 할 산이 조금 있다. WinCE는 다양한 마이크로프로세서와 시스템 아키텍처를 지원하므로 1984년, IBM PC/AT 이래로 계속 유지되어온 IBM/인텔 호환 디자인에 의존한 개발을 할 수 없다. WinCE는 다양한 장치에서 실행된다. 각 장치는 CPU, 메모리 구조가 다르고 주변 장치가 부분적으로 유사하다는 점을 제외하면 완전히 다른 디자인인 경우가 많다. 하드웨어도 다르지만 윈도우 CE 자체도 이식되는 플랫폼에 따라 달라진다. 어떤 윈도우 모바일 장치들은 버전만 같은 함수 모음을 사용하지만 WinCE는 설정에 따라서 달라질 수도 있다. 또한, 윈도우 CE는 제조업체에서 사용할 수 있는 ..
WinCE 저전력 모드 프로그래밍 주의 사항 (윈도우 CE 스케줄링) WinCE 금지 사항 아래 코드는 좋지 않은 습관이다. CPU 파워와 배터리 소모를 유발하여 저전력을 위배한다. 여기서 윈도우 CE 전원 관리를 잠깐 살펴보자. 윈도우 CE는 운용시간의 90% 이상 모든 스레드가 블록 된 상태다. 이때는 WinCE OEM 추상 레이어(OAL, OEM Abstraction Layer로서 MS-DOS에서의 BIOS와 같다)를 호출해 저전력 대기 상태로 진입한다. 스레드 기반 환경에서 다음과 같은 코드를 사용하면 절대 안 된다. 1234while (bFlag == FALSE) { // 플래그에 새 값을 읽음}// 수행 계속cs 일반적으로 저전력 상태는 명령어 실행을 중단하는 CPU 정지(halt)를 뜻한다...
윈도우 CE 시스템 스케줄링에 대해 (WinCE Scheduler 스케줄러) 윈도우 CE의 스레드 스케줄링은 선점형 방식이다. 스레드는 퀀텀(quantum)이나 타임 슬라이스(time slice)라고 부르는 시간 동안 실행된다. 해당 시간이 지난 후 스레드가 실행 중인 상태라면 그 스레드는 일시 중단되고 다른 스레드가 실행된다. 예외적으로 실행을 마칠 때까지 계속되는 스레드도 있다. 윈도우 CE는 우선순위 스키마(scheme)에 따라 실행할 스레드를 고른다. 높은 우선순위 스레드는 낮은 우순선위 스레드 이전에 스케줄링 된다. 윈도우 CE가 스레드 간에 시간을 배분하는 규칙은 다른 윈도우 운영체제와는 꽤 다르다. 윈도우 CE 프로세스에는 우선순위 클래스가 없다. 데스크탑용 윈도우에서는 스레드 우선순위와 부..
[윈도우API] WinCE DIB 섹션 프로그래밍 (tagRGBQUAD) 앞서 설명한 것(▶DIB 섹션 포스팅 1)처럼 이미지가 픽셀당 8비트 이하인 경우 BITMAPINFOHEADER 구조체 다음에는 RGBQUAD 구조체의 배열이 이어진다. RGBQUAD 구조체는 다음과 같다. 123456typedef struct tagRGBQUAD { /* rgbq */ BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved;} RGBQUAD;cs 이 구조체는 256단계의 적, 녹, 청 색상을 표현한다. 물론 이 구조체의 색상들은 디스플레이 장치의 사양에 따라서 표현되지 않을 수도 있다. RGBQUAD 구조체 배열은 DIB 팔레트를 기술한다. 팔레트란 비트맵에 사용된..