임베디드 레시피

Egloos | Log-in





WINCE에서 어플리케이션과 DLL을 만드는 방법은?

409 WINCE에서 어플리케이션과 DLL을 만드는 방법은?
 
뭘 알아야 이해를 하지
# Application 개발
Visual Studio 2005을 실행해서 메뉴에서 File -> New -> Project -> Visual C++ -> Smart Device -> Win32 Smart Device Project -> Project name 입력합니다. Selected SDK에서는 BSP 이름인 "ARM11"을 선택하고, Windows application 선택하고 나면 project.cpp 파일 이름으로 에디터를 할 수 있도록 제공된답니다.간단하게 프로그램을 만들어 보죠.
Project의 solution tab에서 Source files의 project.cpp 파일을 열고, WndProc 함수를 찾아보죠.
그리고 switch 문에서 WM_CREATE와 WM_COMMAND에다 간단하게 아래와 같이 입력해 보아요.

 이제 프로그램을 만들었으니 컴파일을 해 보죠.
컴파일을 하기 전에 빌드모드르 Release 모드로 선택을 하고요, 메뉴에서 Build -> Build Solution을 선택합니다. 에러가 없다면 컴파일이 끝났다는 메시지를 확인해 볼 수 있어요. 컴파일이 끝났으니 파일이 생성된 곳을 찾아보죠. 프로젝트 명을 입력하실 때 선택한 경로에 파일들이 있답니다. project.exe 파일 및 기타 파일들이 생성되어 있답니다.
 

# 타겟에서 실행
개발 보드와 호스트 피시를 USB로 연결해서 개발자가 만든 어플리케이션을 간편하게 다운로더해서 실행을 해 볼 수가 있답니다. 그러기 위해서는 호스트 피시에 Active Sync라는 프로그램을 설치해 주세요. 그리고 프로그램을 실행하고 개발 보드와 호스트 피시를 USB로 연결을 하면 연결이 됐다는 표시와 함께 호스트 피시에 모바일 장치라는 폴더가 열리게 된답니다. 그 폴더에 project.exe를 복사해 주세요.
그럼 이제 개발 보드에서 바탕화면에 있는 "My device" 아이콘을 더블 클릭해서 실행을 해 보면 방금 복사한 project.exe 파일이 있답니다. 이제 실행을 해 보시고 정상 동작되는지 확인해 보면 된답니다. 하지만 개발 보드를 리부팅하면 없어지기 때문에 매번 Active Sync 프로그램을 다운로더를 할 수 없으니 NK.BIN에 포함을 시켜 버리죠.
 
 


 
# NK.BIN에 포함
Release 폴더에 보면 NK.bin 파일이 있답니다.
(C:\WINCE600\OSDesigns\OSDesignARM11\OSDesignARM11\RelDir\ARM11_ARMV4I_Release)
이 폴더에 project.exe와 project.pdb 파일을 복사한답니다. 그리고 이 폴더에 platform.bib 파일을 찾아 열어보도록 하죠.


이제 다시 컴파일을 해 보도록 하죠.
메뉴에서 Build -> Make Run-Time Image 선택하면 된답니다. 여기서 주의하실 사항은 Build Solution이나 Build OSDesignARM11을 선택하면 안됩답니다. 왜냐하면 이 메뉴들은 Release 폴더에 있는 모든 파일을 삭제하고 다시 생성되는데, 중요한 것은 platform.bib 파일이 새롭게 만들어 진다는 것입니다. 그렇게 되면 방문 수정한 내용이 의미가 없어지겠죠? Make Run-Time Image는 전체를 컴파일하는 것이 아니기 때문에 컴파일 속도가 굉장히 빠르답니다.
 
# DLL 개발
DLL은 nk에 포함되기 때문에 BSP 폴더에 드라이버 관련 폴더를 만들어 프로그램 하면 된답니다. 간단하게 LED ON/OFF 하는 DLL을 만들어 보아요.
C:\WINCE600\PLATFORM\ARM11\Src\Drivers\LED 라는 폴더를 만들고, 다음과 같은 파일을 준비해 주세요.

led.h 파일을 살펴보죠.

 
다음으로는 led.c 파일입니다.

 
led 드라이버 심볼록은 정의해 보도록 하죠.

 
led 드라이버 컴파일 및 링크 옵션 지정을 하죠.

 
마지막으로 makefile 입니다.

 이제 소스 준비는 끝났고, NK.BIN 파일에 포함을 시키기 위해서 platform.bib와 platform.reg 파일에 다음과 같이 추가를 해 주세요.


 
 
모든 준비가 끝났으니 컴파일을 해 보죠.
OSDesigns를 열고 추가된 LED에서 마우스 오른쪽 버튼을 눌러서 Build를 선택하면 됩니다. Release 폴더에 led.dll과 ded.pdb 파일이 자동으로 복사가 되고, platform.bib와 platform.reg 파일에 지정한 것처럼 nk.bin 파일에 모두 추가가 되어 있답니다.
 
# Application과 DLL 연동
Application과 DLL 개발하는 방법에 대해 각각 알아 봤는데, 두 개를 연동시켜 동작하는 프로그램은 어떻게 개발하면 될까요?
위의 방법과 크게 다르지는 않지만 그래도 조금 다른 부분이 있으니 지금부터 알아보아요.
우선 어플리케이션을 만들어 보죠.
OSDesign의 BSP에서 Subprojects 항목에서 마우스 오른쪽 클릭해서  Add New Subproject 선택해 주세요. WCE Application 선택하고, LEDTest 라고 입력을 해 보도록 할게요. 다음 항목에서는 A typical "Hello World" application을 선택해 주세요. 그럼 이제 Subprojects에 LED Test라는 폴더와 함께 디폴트로 파일이름들이 만들어 진답니다.
LEDTest.cpp 파일에 다음과 같은 소스를 넣어 주세요.


 여기서 중요한 포인터는 바로 CreateFile 함수랍니다. Application만 동작하기 위한 거라면 필요가 없지만 DLL과 연동하기 위해서는 dll에 대한 핸드러(Handle) 값을 얻어야 하기 때문에 반드시 이용해야 하는 API랍니다. 여기서 CreateFile함수는 platform.reg에 등록한 LED.DLL 을 찾아 실행한답니다.

 
이제는 Button에 대한 이벤트 처리하는 부분을 추가하도록 하죠.

 
WriteFile 함수는 led.c 파일에서 정의한 LED_Write 함수로 연결이 된답니다.



이제 Subprojects의 LED Test 메뉴에서 마우스 오른쪽을 선택하여 Build를 해 보세요. NK.BIN파일에 Application인 LEDTest.exe 파일과 LED.DLL 파일이 모두 포함되었답니다.
 
여기까지 해서 WINCE에 대한 모든 과정이 끝났어요.
 

by 히언 | 2011/06/05 19:46 | SOTO Story | 트랙백 | 핑백(1)

Linked at 친절한 임베디드 시스템 개발자.. at 2011/06/06 14:19

... WINCE에서 어플리케이션과 DLL을 만드는 방법은? ... more

◀ 이전 페이지          다음 페이지 ▶