'blackjack'에 해당되는 글 6건

  1. 2007.10.27 Windows Mobile 에서 assert 사용하기
  2. 2007.10.27 Data Abort 에러 발생시에 에러확인 및 중단하기 (2)
  3. 2007.10.18 Windows Mobile 5.0 기기에서 백라이트 꺼지지 않도록 하기
  4. 2007.09.30 WM 개발환경을 블랙잭과 유사하게 만드는 방법 (1)
  5. 2007.09.30 삼성전자의 블랙잭 (M620, M6200) 언락하기
  6. 2007.09.26 Windows Mobile 6 버전별 비교

Windows Mobile 에서 assert 사용하기

프로그래밍/개발/Blackjack(SPH-M6200) 2007.10.27 00:27

블랙잭으로 프로그램을 작성하며 값을 검증하기 위해 MFC 에서 제공하는 ASSERT() 매크로를 사용하였다.

하지만 수많은 시행착오 끝에 ASSERT() 매크로는 제대로 작동하지 않는다는 것을 알았고, 대신 기본으로 제공되는 assert() 매크로는 제대로 작동한다는 사실을 알게 되었다.

다음과 같이 이용하자.

C++

#include <cassert>

assert(expression);

간단히 테스트하기 원한다면

assert(false); 라고 수행하면 원하는 결과를 얻을 수 있다.

사용자 삽입 이미지


Trackback 0 : Comment 0

Write a comment


Data Abort 에러 발생시에 에러확인 및 중단하기

프로그래밍/개발/Blackjack(SPH-M6200) 2007.10.27 00:12

블랙잭을 이용하여 프로그램을 작성하던 도중 특정 구문을 수행할시에 Data Abort 에러가 발생하는 것을 확인하였다.

평소 Win32 용 프로그램만 작성해 보다가 처음 하고 있는 Windows Mobile 디바이스 작업이기 때문에 처음 보는 에러였는데, 구글을 통해 검색해 보니 대충 윈도의 잘못된 연산 수행이나, 리눅스의 Segmentation fault 와 비슷한 것이라는 얘기가 나왔다.

그런데 이상한 점이, 분명히 윈도용 프로그램을 개발할 때에는 잘못된 연산을 수행하면 즉시 그 부분에 브레이크가 걸리고 무엇이 잘못되었는지 표시가 되는데 여기서는 그렇지가 않다는 것이었다.

사용자 삽입 이미지

멈추지 않고 에러가 계속 발생한다.

나같은 초보 프로그래머들은 저 에러메시지만 보고서는 대체 무슨 에러인지도 모르겠고, 소스에도 의심가는 부분이 없게 된다면 무척이나 당황하게 된다.

결국 Trace 를 통해 문제가 되는 부분을 찾았는데, 전혀 이상이 없다.
해답을 찾아 삼만리..

결국 발견한 것은 다음과 같은 방법이다.

Debug>Exceptions 메뉴를 실행한다.
다음과 같은 창이 뜬다.

사용자 삽입 이미지

Win32 Exceptions

주의해서 봐야 할 부분은 여기 Win32 Exceptions 부분이다.

여기 체크된 예외만이 디버거 실행을 멈추게 되어있다. 기본값은 위와 같고 (물론 항목은 더 많다.) 잘 보면 기본적인 Access violation 이나 Illegal Instruction, Datatype misalignment 가 체크되어 있지 않은 것을 알 수 있다.

위 항목을 체크하고 OK를 눌러주자

사용자 삽입 이미지

멈추길 바라는 항목들을 체크

다시 프로그램을 실행하면 결과가 아까와는 조금 달라진다.

사용자 삽입 이미지

뭐가 달라졌을까?

과연 어떤점이 다를까.

아까는 볼 수 없었던 줄이 하나 추가 된것을 볼 수 있다.
First-chance exception at 0x00028048 in xxxxxxxx.exe: 0x80000002: Datatype misalignment.


그리고 훌륭하게 디버거는 문제가 발생한 지점에서 실행을 중단하고 메시지 창을 띄운다.

사용자 삽입 이미지

Datatype misalignment

Data Abort 를 일으킨 장본인은 바로 Datatype misalignment 에러였다.

자! 문제가 무엇인지 좀 더 분명해 졌다.
왜 이런 Exception 들을 기본으로 체크해 놓지 않았는지 의문이 생기지만, 어쨌든 해결하게 된 것 만으로도 기쁘게 생각한다.
이제 문제가 무엇인지 알았으니 이제 문제를 해결하기만 하면 된다! (아직 해결 안됐음)

참고: datatype alignment 참고자료



Trackback 0 : Comments 2
  1. dawnsea 2007.12.17 17:14 신고 Modify/Delete Reply

    리퍼러 보고 왔어요 ㅋㅋ

    CE .NET 에서도 역시 무조건 4의 배수 얼라인을 하라는 듯?
    일단 아키텍쳐들이.. 임베디드에서 쓰는 코어들은 하드웨어 얼라인을 지원 안 하거든요..


    어.. 근데 수원멤이네요 -_-;
    저 수원멤 13기 -_-;; 애매모호한 낙오자 있습니다 ㅋㅋ -_-;

    • mahalo 2007.12.31 01:35 신고 Modify/Delete

      핫.. 방문해주셔서 감사합니다 ^^;
      수원멤 13기시면 한참 선배님이시네요~
      저는 16기랍니다.. 13기는 거의 모르는데.. OB와의 만남 오셨으면 한번쯤 뵈었을지도 모르겠습니다 ^^

Write a comment


Windows Mobile 5.0 기기에서 백라이트 꺼지지 않도록 하기

프로그래밍/개발/Blackjack(SPH-M6200) 2007.10.18 02:48

Windows Mobile 용 프로그램은 자체 전원관리에 의하여 백라이트가 꺼지고 화면이 꺼지는 작동을 하게 된다.

만약 동영상 플레이어나 기타 프로그램을 만들 경우 백라이트가 꺼지지 않는 것을 원할 수 있는데, 다음과 같은 코드를 이용하면 된다.

//  IN BOOL fBacklightOn - TRUE to keep the backlight on.
void SetBacklightRequirement(BOOL fBacklightOn)
{
    // The name of the backlight device.
    TCHAR tszBacklightName[] = TEXT("BKL1:");

    static HANDLE s_hBacklightReq = NULL;
   
    if (fBacklightOn)
    {
        if (NULL == s_hBacklightReq)
        {
            // Turn the backlight on by setting the requirement that the backlight device
            // must remain in device state D0 (full power). Replace D0 with D4 (zero power) to
            // turn the backlight off.
            s_hBacklightReq = SetPowerRequirement(tszBacklightName, D0, POWER_NAME, NULL, 0);

            if (!s_hBacklightReq)
                RETAILMSG(1, (L"SetPowerRequirement failed: %X\n", GetLastError()));
        }
    }
    else
    {
        if (s_hBacklightReq)
        {
            if (ERROR_SUCCESS != ReleasePowerRequirement(s_hBacklightReq))
                RETAILMSG(1, (L"ReleasePowerRequirement failed: %X\n", GetLastError()));

            s_hBacklightReq = NULL;
        }
    }
}

출처: Program Applications to Turn the Smartphone Backlight Off and On (MSDN)


Trackback 0 : Comment 0

Write a comment


WM 개발환경을 블랙잭과 유사하게 만드는 방법

프로그래밍/개발/Blackjack(SPH-M6200) 2007.09.30 02:20

블랙잭은 Windows Mobile 5.0 for Smartphone 운영체제를 이용하고 Landscape QVGA, QWERTY 사양을 가진 제품이다.

블랙잭용 프로그램 개발은 Windows Mobile 5.0 SDK for Smartphone (이하 SDK) 을 통해 Visual Studio 2005 로 하게 된다.
SDK 를 설치하고 개발환경을 구축하고 보면 SDK 에서 에뮬레이터를 제공한다는 사실을 알게 되는데
각각 Smartphone, Smartphone QVGA 라고 밖에 되어있지 않다는 것을 볼 수 있다.

WM5.0 Smartphone QVGA 는 Landscape 모드를 찾을수도 없고 모양새도 아래와 같이 블랙잭과는 전혀! 딴판이다.

사용자 삽입 이미지

숫자판이 핸드폰과 동일하다.



이 상태에서 Landscape 를 찾아도 별 볼일 없음은 당연할 것이다.

이 상황에서 블랙잭과 같은 환경을 만들어 보려고 수차례 애를 썼으나 별 소득은 없었고, 다음과 같은 설정을 통해 블랙잭과 거의(!) 동일한 환경을 구축하는데 성공하였다.

1. Windows Mobile 5.0 SDK for Smartphone 을 깐다.
 - 블랙잭 (SPH-M6200) 은 WM5.0 Smartphone 운영체제이기 때문에 일반 WM 5.0 SDK를 깔면 안된다.
2. Windows Mobile 6 Professional and Standard Software Development Kits Refresh 로 간다.
 - 이 중에서 Windows Mobile 6 Standard SDK를 깔면 Smartphone (WM6 에서는 Windows Mobile Standard 로 이름이 변경) 용 SDK를 설치할 수 있다. (실제로 쓰지는 않을 것임)
 - 원래 사이트에는 WM6 SDK 를 통해 WM5 용 응용 프로그램도 개발할 수 있다고 써있으나 실험결과는 꽝
3. Windows Mobile 6 Localized Emulator Images  를 설치한다.
 3-1. (이것이 핵심. 2번과 순서를 바꾸면 안됨)
 3-2. 여기서 KOR Standard 이미지를 받아서 설치
 3-3. 모두 설치하고 나면 Device Emulator Manager 설정이 아래와 같이 된다.

사용자 삽입 이미지

WM 5.0 Smartphone 에뮬레이터와 WM 6 에뮬레이터가 모두 다 깔린 모습


4. 프로젝트 설정
 4-1. 프로젝트 설정은 아래와 같이 하면 된다.
사용자 삽입 이미지

Windows Mobile 5.0 Smartphone SDK 로 해야함.

 4-2. 즉, 컴파일 설정은 Windows Mobile 5.0 Smartphone SDK (ARMV4I) 로 하고,  디바이스는 에뮬레이터로 할때는 KOR Windows Mobile 6 Landscape QVGA Emulator (한글이 나오기 때문), 실제 디바이스로 할 때는 Windows Mobile 6 Standard Device / Windwos Mobile 5.0 Smartphone 아무거나 해도 잘 돌아간다.

사용자 삽입 이미지

여기서 Windows Mobile 6 Standard Landscape QVGA Emulator 를 골라야 한다. 한글을 보고싶다면 앞에 KOR 이 붙은걸 고르면 된다.

설정을 다 하고 Windows Mobile 6 에뮬레이터를 실행하면 아래와 같이 뜬다.

사용자 삽입 이미지

한글 WM6 가 뜬 모습. 블랙잭과 거의 동일한 구성이다.


 Windows Mobile 6는 Windows Mobile 5 에 대한 호환성을 기본적으로 갖추고 있기 때문에 우리가 빌드한 WM5 용 응용프로그램이 전혀 무리 없이 돌아가게 되며 구성또한 블랙잭과 동일하기 때문에 WM5 SDK 로 힘겹게 개발하는 것 보다 정신 건강에도 이롭다.

Windows Mobile 6 SDK를 까는 이유.

하드가 낭비되는 아주 안좋은 것이지만 핵심은 다음과 같다.

Windows Mobile 6 SDK를 설치하고 나면 Device Emulator Manager에 Windows Mobile 6 (Normal/Landscape QVGA/QVGA) Emulator 가 설치 된다.

Windows Mobile 5 Smartphone  Emulator 에는 블랙잭과 동일한 환경을 제공하는 Emulator가 없다. 즉 Landscape QVGA를 지원하는 환경이 없다는 말이다.

그리고 꼭 필요하지는 않지만 QWERTY 키보드 역시 에뮬레이터에 포함되어있지 않다.

참고로 컴파일 설정을 Windows Mobile 6 로 하면 절대로 블랙잭에서 돌아가지 않는다. 그렇기 때문에 Windows Mobile 5 SDK for Smartphone을 꼭 깔아야 WM6 에뮬레이터와 블랙잭 모두에서 돌아가는 이미지를 만들 수 있다.



Windows Mobile Localized Emulator Images를 까는 이유

블랙잭은 한글로 로컬라이징된 WM5 Smartphone 환경이다. 기본적으로 제공되는 에뮬레이터는 영문 이미지이기 때문에 영문 윈도가 가동된다.

이를 한글 환경으로 하기 위해 로컬라이즈드 이미지를 설치하는 것이다. 이를 설치하고 나면

KOR Windows Moble 6 Standard Emulator

KOR Windows Moble 6 Standard Landscape QVGA Emulator

KOR Windows Moble 6 Standard Emulator QVGA Emulator

의 세가지 항목이 추가된다.

그런데, Windows Mobile 6 SDK를 안깔고 Localized Emulator 만 깔면 Device Emulator Manager 에 WM6 이미지가 들어가지 않기 때문에 실제 개발환경에 이용할 수가 없게 된다.




Trackback 1 : Comment 1
  1. ash84 2008.10.15 14:43 신고 Modify/Delete Reply

    좋은글 감사합니다. ㅋㅋㅋ^^

Write a comment


삼성전자의 블랙잭 (M620, M6200) 언락하기

프로그래밍/개발/Blackjack(SPH-M6200) 2007.09.30 01:38

시중에서 구할 수 있는 블랙잭은 일반인들에게 판매되는 제품이기 때문에 프로그램을 만들어서 넣는 다거나 다른 사람이 만든 프로그램을 실행하기가 불편하도록 되어 있다.

이는 각종 기능이 막혀있기 때문인데 다행히도 MS 의 개발킷과 기타 인터넷 글들에서 이들을 언락할 수 있는 기능을 제공하고 있어서 알아보았다.

1. 개발용 언락. (프로그램 실행만 하기 위한 언락은 이 항목을 뛰어넘고 2번 항목만 하면 됨)

일단 블랙잭용으로 프로그램 개발을 하기 위해 Windows Mobile 5.0 SDK for Smartphone 이 깔려 있는 상태에서 프로그램을 빌드하게 되면 빌드 후 Deployment 과정에서 아래와 같은 오류가 발생한다.

1>All attempts to connect to the deployment target at port 5655 have failed. Addresses attempted:
1> 127.0.0.1. 
1>The device security configuration may have disallowed the connection. Ensure that you have the appropriate certificates on your device for development. Review your SDK documentation for proper security settings for connecting to this device.
1>
========== Build: 0 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
========== Deploy: 0 succeeded, 1 failed, 0 skipped ==========

이는 RAPI(Remote API) 언락이 되지 않아서 발생하는 에러인데 이는 개발 편의를 위해 Microsoft 에서 간단한 방법으로 언락을 할 수 있도록 하고 있다.

일단 Windows Mobile 5.0 SDK for Mobile 이 깔려 있다는 전제 하에 아래와 같이 입력하면 간단히 개발용 언락을 할 수 있다,

C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Smartphone SDK\Tools
>RapiConfig.exe /p SdkCerts.xml
Config results written to output file RapiConfigOut.xml.
Config succeeded.

참고: http://blogs.conchango.com/stuartpreston/archive/2005/11/10/2376.aspx

사용자 삽입 이미지

SPH-M6200 의 초기상태. RAPI가 Restricted 로 막혀있는 것을 볼 수 있다.



사용자 삽입 이미지

TEST 용 인증서가 추가되었다.


위와 같이 하면 RAPI에 관한 락이 풀리고 테스트용 인증서가 설치된다.
그리고 VS 2005 를 통해 어플리케이션을 빌드해서 실행하면 블랙잭에서 잘 실행되는 것을 확인할 수 있다.
하지만 처음 어플리케이션이 설치 및 실행할 때는 인증되지 않은 프로그램이니 실행할 것이냐는 창이 계속 뜨게 된다.

왜 이런일이 발생하는가 하면, 3rd party 의 어플리케이션을 이용할 수 없도록 락을 걸었기 때문이다.
블랙잭은 Smartphone 이라는 특성상 프로그램 설치가 이통사의 수익과 연결되어 있어서 3rd party 의 어플리케이션을 이용할 수 있도록 쉽게 허용하지 않고 있다. (외국보다 폐쇄적인 우리나라의 경우는 정도가 더 심한것 같다.)

그래서 필요한 것이 어플리케이션 언락이다.

2. 어플리케이션 언락
블랙잭에서 기본으로 실행할 수 있는 프로그램은 M2M (Mobile 2 Market), KTF (SKT), Microsoft, Samgung 의 인증을 받은 프로그램 뿐이고 유저가 ActiveSync 나 WMDC(Windows Mobile Device Center) 를 통해 설치한 프로그램은 확인 메시지를 거친 다음 실행할 수 있다.

이 블랙잭에 자신이 직접 개발하거나 다른 사용자가 빌드한 프로그램을 경고 메시지 없이 돌리고 싶다면 어플리케이션 언락을 할 필요가 있다.

어플리케이션 언락은 인터넷에 타 스마트폰을 언락하는 방법을 참고하여 동일한 방법으로 언락할 수 있다.

Howto: Application Unlock Motorola Q for Telus


위 글의 요지는 위의 sepolicies.cab 을 M6200 으로 전송한 뒤 설치하고 PC에는 Device Security Manager PowerToy for Windows Mobile 5.0 을 다운 받아 설치한 뒤 실행, Security Off 를 선택한 뒤 Provision 을 클릭하면 언락이 완료 된다는 얘기이다.


사용자 삽입 이미지

Device Security Manager PowerToy for Windows Mobile 5.0 를 실행한 초기 화면


Provision 을 클릭하면!

사용자 삽입 이미지

언락 완료!

이런 다이얼 로그가 뜬 뒤 화면이 아래와 같이 변한다.

사용자 삽입 이미지

언락 완료. 오른쪽에 Security Off 가 보인다.


위와 같이 표시가 되면 모든 프로그램을 무제한으로 설치, 실행할 수 있는 모드로 변한 것이고 이제 자유롭게 프로그램을 이용할 수 있다.
다만 인증받지 않은 프로그램을 설치하여 이용하는 것이기 때문에 프로그램의 잘못된 실행으로 인한 기기 오류는 무조건 사용자의 책임이라는 것이다. 그러므로 주의하여 실행하도록 하자.



Trackback 1 : Comment 0

Write a comment


Windows Mobile 6 버전별 비교

프로그래밍/개발/Blackjack(SPH-M6200) 2007.09.26 21:53

Windows Mobile 버전 비교

  • Windows Mobile for Smartphone = Windows Mobile Standard (download the Windows Mobile 6 Standard SDK)
  • Windows Mobile for Pocket PC = Windows Mobile Classic (download the Windows Mobile 6 Professional SDK)
  • Windows Mobile for Pocket PC Phone Edition = Windows Mobile Professional (download the Windows Mobile 6 Professional SDK)

Windows Mobile 6 Standard SDK

  • Windows Mobile 6 Standard (176x220 pixels - 96 dpi)
  • Windows Mobile 6 Standard Landscape QVGA (240x320 pixels - 131 dpi)
  • Windows Mobile 6 Standard QVGA (320x240 pixels - 131 dpi)

Windows Mobile 6 Professional SDK

  • Windows Mobile 6 Classic (240x320 pixels - 96 dpi)
  • Windows Mobile 6 Professional (240x320 pixels - 96 dpi)
  • Windows Mobile 6 Professional Square (240x240 pixels - 96 dpi)
  • Windows Mobile 6 Professional Square QVGA (320x320 pixels - 128 dpi)
  • Windows Mobile 6 Professional Square VGA (480x480 pixels - 192 dpi)
  • Windows Mobile 6 Professional VGA (480x640 pixels - 192 dpi)

From Overview of Windows Mobile 6 Professional and Standard Software Development Kits Refresh

Windows Mobile 6은 Windows Mobile 5.0 에서 쓰이던 Phone Edition, Smartphone, Pocket PC 등의 이름을 버리고 Classic, Standard, Professional 과 갈은 보다 Windows 스러운 이름으로 갈아탔다.

물론 그런다고 해서 기능 자체가 달라지거나 명확한 변화가 있는 것은 아니지만 기종이 나올 때마다 새로 이름을 지어서 난잡해진 명칭들을 정리하려는 듯한 인상을 준다.


하지만!


Classic, Standard, Professional이라는 이름과 Pocket PC, Smartphone, Pocket PC등의 이름을 비교할 때, 전자가 후자에 비해 명시적으로 나아지는 점이 뭔지 모르겠다.


아무튼 Windows Mobile 5.0 개발에서 Windows Mobile 6 개발로 옮겨갈 때 필요한 SDK를 설치하기 위해서는 위와 같은 상황을 알아야 하니 참고.



Trackback 0 : Comment 0

Write a comment