2009년 7월 30일 목요일

Fwd: 사무실 전화 및 팩스 번호

전화와 팩스가 생겼음,,,

---------- Forwarded message ----------
From: Younghwan Oh <pooh.yhoh@gmail.com>
Date: Jul 30, 2009 8:12 PM
Subject: 사무실 전화 및 팩스 번호
To: 박선호 <sunho6810@gmail.com>, 최으뜸 <euddeum.choi@gmail.com>, 김재석copgom <copgom@gmail.com>, 전종인 <icanjji@gmail.com>

사무실 전화 031-701-5057
팩스 031-731-5024

--
Pooh, Oh Younghwan
pooh.yhoh@gmail.com
yhoh@naver.com
82-16-730-2124
 

2009년 3월 23일 월요일

[잡담] LDO냐 DC / DC conv erter냐? 이것이 문제로다 ^^

[잡담] LDO냐 DC / DC conv erter냐? 이것이 문제로다 ^^
♬ 자유게시판 putsalgu99(설렁설렁)
대충대충 회로 설계하던 시절 부터, evaluation용으로 보드 만들 때,
아무 생각 없이 편하다는 이유로...또 코일이나 이런 부품 수배하기도 귀챦고 해서...
Linear Reguator나 LDO 등을 써서 프로세서나 메모리로 가는 전원을 많이 만들었었는데...
간 크게도 입력 DC 전원은 대충 5V도 좋고, 9V도 좋고, RS232C 필요 할 때는 아무 생각 없이 12V도 쓰고...
이렇게 해도, 레귤레이터에서 열은 좀 많이 나서 잘 못하면 델 정도이기도 하지만,
그럭저럭 동작은 하니까 좋았던 시절이 많았네요...
그런데 요즘 와서, 이렇게 해서 조금 동작하다가 죽는데, 어떡하면 되냐는 질문들이 조금씩 있습니다.
옛날에는, 작은 마이컴 종류의 CPU나 메모리 등이 대략 3.3V 정도에서 동작하고, 전류도 별로 안 먹었기 때문에 문제가 없었지만,
요즘 고속의 arm core 같은 놈들은 1.2V 근처에서 동작하고,
전류도 몇백 mA 이상 먹기 때문에 linear regulator를 사용할 때는 발열로 인해 많은 문제가 생길 수 밖에 없습니다.
Linear Regulator는 간단하게 말해서, FET나, Transistor의 linear 영역에서 동작하는데,
결국, 가변 저항 비슷한 역할을 해서, 입력 전압을 출력 전압으로 내려 주는 것인데...
즉, 입력 전압이 Vin, 출력이 Vout이고 전류가 I라면,
이놈이 R = (Vin - Vout) / I 정도의 저항치를 가진다는 말이지요...
따라서 이놈들이 소비하는 전력(손실전력이라 합니다.)은,
P = 전압차 * 전류 = (Vin - Vout) * I 정도가 되고,
12V에서 1.2V로 다운시킬 경우, 손실전력 P = (12V - 1.2V) * I = 10.8 * I (Watt)
전류가 100mA만 흘러도 regulator에서 10.8V * 100mA = 1080mW = 1.08Watt...
정작 CPU가 소비하는 전력은 100mA * 1.2V = 120mW...
즉, 입력 전력의 90% 정도가 regulator에서 소모되고 이에 따라 엄청난 열이 발생하게 됩니다.
그러니 얼마 못 버티고 동작을 멈추게 되겠지요...
이에 반해 DC/DC는 대부분의 경우 100mA 정도의 영역에서는 90% 이상의 효율을 보이므로,
출력이 100mA 일때 12V 입력 측의 전류는, 100% 효율일 때, 1.2/12 * 100 = 10mA
90%의 효율이라도 11mA 정도이며, 이 중 1mA 정도만 손실되는 것이므로,
12mW 정도의 손실만 있어 발열이 거의 없고, 잘 동작하게 되지요...
보드 설계할 때, 특히 외부 입력 전원을 내부 3.3V나 1.8V로 바꿔 주는 부분 만이라도,
DC/DC를 사용한다면, 발열 및 기타 문제를 많이 줄일 수 있습니다.
그럼에도 불구하고 굳이 linear regulator를 사용하고 싶다면, 방열에 엄청난 노력을 기울여야 하는데,
이렇게 하더라도, CPU쪽에서 몇백 mA씩 사용한다면, 한두번 손을 데는 사고는 감수해야 합니다...

[잡담] 강압형 DC / DC converter의 효율...

[잡담] 강압형 DC / DC converter의 효율...
CQ출판사의 "트랜지스트 기술"을 뒤적거리다 보니,
8월호에 휴대기기 전원 IC에 대한 내용이 많이 나와 있는데,
그중 강압형 DC/DC conveter (Buck regulator)에 대해서 짤막하게 나온 부분이 있네요...
강압형 컨버터는 간단히 말하면,
PWM 방식의 square wave로 스위치를 구동하고, 이때 흐르는 전류가 inductor의 자장으로 축적되어,
switch-off시에서 연속적인 전류가 흐르게 하여 고효율의 컨버팅 기능을 제공하는 제품인데,
문제는 항상 일정 주파수로 스위칭하기 때문에, 스위칭에 의한 전류 소모가 수mA까지 올라가게 되는 것이다.
특히, inductor와 capacitor의 용량을 작게 하여 실장 면적을 줄이려면,
switching 주파수를 높게 하여야 하는게 이때 더욱 큰 전류를 소모하게 된다.
따라서, 부하전류(출력전류)가 수mA수준으로 낮을 때는, 효율이 급격히 떨어지게 되는데,
이 경우 효율을 높히기 위해서는 낮은 전류에서 스위칭 주파수를 낮춰주는 PFM (Pulse Frequency Modulation) 모드를 사용하여야 한다.
따라서 휴대기기의 전원을 디자인할 때, Buck regulator 등의 강압형 DC/DC 컨버터를 선택할 때,
PWM /PFM 모드의 자동 전환이 이루어 지는지, 혹은 PFM 모드를 선택할 수 있는지 반드시 확인해야,
sleep등 대기 상태에서의 전력 소모를 최소화 할 수 있고 이에 따라 대기 시간을 늘일 수 있게 된다.
요즘 휴대전화 등의 휴대기기는 최장 400시간 까지의 대기 시간도 요구하게 되는데,
800mAh의 배터리를 사용할 경우 2mA 이하의 대기 전류를 소모해야 하므로, 전원 선택에 더욱 주의하여야 하는 것이다.

2009년 3월 4일 수요일

LDO와 DC/DC 컨버터

[잡담] LDO냐 DC / DC conv erter냐? 이것이 문제로다 ^^
♬ 자유게시판 putsalgu99(설렁설렁)

대충대충 회로 설계하던 시절 부터, evaluation용으로 보드 만들 때,
아무 생각 없이 편하다는 이유로...또 코일이나 이런 부품 수배하기도 귀챦고 해서...
Linear Reguator나 LDO 등을 써서 프로세서나 메모리로 가는 전원을 많이 만들었었는데...
간 크게도 입력 DC 전원은 대충 5V도 좋고, 9V도 좋고, RS232C 필요 할 때는 아무 생각 없이 12V도 쓰고...
이렇게 해도, 레귤레이터에서 열은 좀 많이 나서 잘 못하면 델 정도이기도 하지만,
그럭저럭 동작은 하니까 좋았던 시절이 많았네요...

그런데 요즘 와서, 이렇게 해서 조금 동작하다가 죽는데, 어떡하면 되냐는 질문들이 조금씩 있습니다.
옛날에는, 작은 마이컴 종류의 CPU나 메모리 등이 대략 3.3V 정도에서 동작하고, 전류도 별로 안 먹었기 때문에 문제가 없었지만,
요즘 고속의 arm core 같은 놈들은 1.2V 근처에서 동작하고,
전류도 몇백 mA 이상 먹기 때문에 linear regulator를 사용할 때는 발열로 인해 많은 문제가 생길 수 밖에 없습니다.

Linear Regulator는 간단하게 말해서, FET나, Transistor의 linear 영역에서 동작하는데,
결국, 가변 저항 비슷한 역할을 해서, 입력 전압을 출력 전압으로 내려 주는 것인데...

즉, 입력 전압이 Vin, 출력이 Vout이고 전류가 I라면,
이놈이 R = (Vin - Vout) / I 정도의 저항치를 가진다는 말이지요...
따라서 이놈들이 소비하는 전력(손실전력이라 합니다.)은,
P = 전압차 * 전류 = (Vin - Vout) * I 정도가 되고,
12V에서 1.2V로 다운시킬 경우, 손실전력 P = (12V - 1.2V) * I = 10.8 * I (Watt)
전류가 100mA만 흘러도 regulator에서 10.8V * 100mA = 1080mW = 1.08Watt...
정작 CPU가 소비하는 전력은 100mA * 1.2V = 120mW...
즉, 입력 전력의 90% 정도가 regulator에서 소모되고 이에 따라 엄청난 열이 발생하게 됩니다.
그러니 얼마 못 버티고 동작을 멈추게 되겠지요...

이에 반해 DC/DC는 대부분의 경우 100mA 정도의 영역에서는 90% 이상의 효율을 보이므로,
출력이 100mA 일때 12V 입력 측의 전류는, 100% 효율일 때, 1.2/12 * 100 = 10mA
90%의 효율이라도 11mA 정도이며, 이 중 1mA 정도만 손실되는 것이므로,
12mW 정도의 손실만 있어 발열이 거의 없고, 잘 동작하게 되지요...

보드 설계할 때, 특히 외부 입력 전원을 내부 3.3V나 1.8V로 바꿔 주는 부분 만이라도,
DC/DC를 사용한다면, 발열 및 기타 문제를 많이 줄일 수 있습니다.
그럼에도 불구하고 굳이 linear regulator를 사용하고 싶다면, 방열에 엄청난 노력을 기울여야 하는데,
이렇게 하더라도, CPU쪽에서 몇백 mA씩 사용한다면, 한두번 손을 데는 사고는 감수해야 합니다...

2009년 3월 3일 화요일

[Mango Story - WINCE #2-4] Windows CE 이미지 퓨징하기

[Mango Story - WINCE #2-4] Windows CE 이미지 퓨징하기
§ MANGO Story 2009.01.12 01:05 다바꼬꼬(dechoi96) 카페 스탭
http://cafe.naver.com/embeddedcrazyboys/1267

2.4 Windows CE 이미지 퓨징하기
이 제 Windows CE의 부트로더 EBOOT을 이용하여 타겟 시스템에 이미지를 퓨징하는 방법에 대해 알아본다. 부트로더를 퓨징하는 방법은 다음장에서 따로 설명된다. 이미지를 퓨징하기 위해선 우선 호스트 피씨와 타겟 시스템을 연결해야 한다. 망고 보드(S3C2443)의 경우엔 시리얼 케이블과 USB 케이블을 각각 연결하여야 한다.
호스트 피씨에서 다운로드 프로그램(C:\WINCE500\PLATFORM\Cb2443\Dnw\dnw.exe)을 실행시킨다.
DNW의 "Configuration -> Option" 을 클릭하고 아래와 같이 설정한다.
Baud Rate : 115200
COM Port : 시리얼 케이블이 연결된 COM port를 설정해야 함.
Download Address : 0x30038000
DNW의 "Serial Port -> Connect"를 클릭하여 시리얼 포트를 연결한다. 이제 망고 보드를 켜면 아래와 같은 메시지가 나오는데 3초 이내에 [Space] 키를 입력해야 한다.
만약 USB 드라이버가 설치되어 있지 않았으면 하드웨어 추가 마법사가 뜰테니 아래 과정으로 드라이버를 설치하면 된다.
"아니오, 지금 연결 안함"을 선택하고 "다음"을 클릭한다.
"목록 또는 특정 위치에서 설치(고급)" 를 선택하고 "다음"을 클릭한다.
"검색할 때 다음 위치 포함" 을 선택하고 "찾아보기"를 클릭한 다음 "C:\WINCE500\PLATFORM\CB2443\DNW"를 선택해 준다. 이 디렉토리에 USB 드라이버가 포함되어 있다.
아래와 같이 설치가 진행되고 완료 화면이 뜨면 "마침"을 클릭한다.
USB 드라이버가 설치되면 DNW의 화면 상단에 [USB:X] 가 [USB:OK] 로 변한다.
EBOOT 메뉴에서 다음과 같이 셋팅한다.
"5) Startup image: LAUNCH EXISTING"
"6) Program disk image into SmartMedia card:
Enable"
"W) Write Configuration Right Now"
다음과 같이 "F"와 "9"를 차례로 입력하여 NAND를 포맷한다.
"F) Low-level format the Smart Media card"
"9) Format Boot Meida for BinFS"
"U" 를 입력하고 DNW의 "USB Port->UBOOT(WINCE500)->UBOOT" 클릭 후, "C:\WINCE500\PBWorkspaces\CB2443\RelDir\CB2443_ARMV4I_Release" 디렉토리에서 NK.bin을 선택한다.(주의: NK.nb0가 아님)

이제 Windows CE 이미지가 망고 보드의 메모리로 올라가고 이것을 NAND에 퓨징하고 부팅을 시작한다.
kimgp71
참조> USB 연결후 "USB... " 메뉴선택되지않고, NK.BIN다운로드 자동부팅안되서 약간 당황....... http://cafe.naver.com/embeddedcrazyboys/393 확인후 하세요,,, | 신고
다바꼬꼬
USB 2.0이 둘 이상 붙으면 DNW의 USB 통신이 안됩니다. 삼성 USB 드라이버 문제라고 들었는데, 어디서도 명쾌한 답을 들을 수 없으니 저도 답답하네요... | 신고
kimgp71
문제점을 최대한 피해가야죠.. 망고보드 잘못도 아니고 ㅎㅎㅎㅎㅎ 걍 참조하셔서 고생하지마시고 해보시라는 덧글입니다.

[Mango Story - WINCE #2-2] BSP 설치

[Mango Story - WINCE #2-2] BSP 설치
§ MANGO Story 2009.01.04 22:54 다바꼬꼬(dechoi96) 카페 스탭
http://cafe.naver.com/embeddedcrazyboys/1217

2.2 BSP 설치
Windows CE 플랫폼 빌더를 설치하면 아래와 같이 _PLATFORMROOT(WINCE가 설치된 디렉터리 하위의 Platform 디렉터리, 예들들어 C:\WINCE500\PLATFORM)에 설치된 BSP를 볼 수 있다. 망고보드(S3C2443) BSP 개발을 위해선 설치 시 "ARMV4I"를 선택해 주어야 하는데 이때 설치되는 BSP는 SMDK2410이다. 망고보드의 BSP는 SMDK2443 BSP에 기반을 두고 있고, SMDK2443은 SMDK2410 BSP를 필요로 한다.
망고 보드 용 Windows CE BSP 설치 파일(CB2443.msi)을 실행하고 다음 화면에서 "Next" 를 클릭
다음 화면에서 "Install" 을 클릭하면 설치가 진행된다.
설치 진행 후 "Finish"를 클릭하면 설치가 완료된다.
망고 보드 용 Windows CE BSP는 _PLATFORMROOT(C:\WINCE500\PLATFORM) 아래의 CB2443이란 디렉토리에 설치된다.
그리고 PBWORKSPACEROOT(C:\WINCE500\Pbworkspaces\CB2443)에 CB2443.pbxml 파일이 설치된다.
만 약 망고 보드 용 BSP를 압축 파일로 받았다면 압축을 풀어 _PLATFORMROOT(C:\WINCE500\PLATFORM) 아래에 복사하고 _WINCEROOT(C:\WINCE500) 아래에 Pbworkspaces\CB2443 디렉토리를 생성한 다음 CB2443.pbxml 파일을 여기에 복사해야 한다.
이제, BSP를 설치했으니 플랫폼 빌더를 실행하여 Windows CE 이미지를 만들어 보도록 한다.
PBWORKSPACEROOT(C:\WINCE500\Pbworkspaces\CB2443)에 가서 CB2443.pbxml를 더블 클릭하면 아래와 같이 플랫폼 빌더가 뜬다.
Catalog (CB2443.cec) 파일이 제대로 설치되었는지 확인하기 위해 "File->Manage Catalog Items..."를 클릭하고 아래 화면에서 CB2443.cec 파일을 찾아 본다. Catalog 파일은 소프트웨어 컴포넌트들의 구성 요소를 정의하는데, 망고 보드 용 Catalog 파일에는 S3C2443에 추가된 드라이버 등의 컴포넌트에 대한 정보가 정의되어 있다. 따라서, 망고 보드 용 Windows CE 이미지를 빌드하기 위해선 Catalog(CB2443.cec) 파일이 반드시 임포트(Import)되어야 한다.
BSP 를 설치할 때 Catalog 파일이 자동 등록되지만 임포트되지 않았거나, 압축 파일로 배포된 BSP를 풀어서 복사한 경우엔 다음과 같이 Catalog 파일을 임포트해야 한다. "File->Manage Catalog Items..." 클릭 후, "Import..." 클릭하고 C:\WINCE500\PLATFORM\Cb2443\CB2443.cec 파일을 선택한다.

Catalog 파일이 임포트 되었으면 아래와 같이 Catalog 창에서 확인할 수 있다.

[Mango Story - WINCE #2-3] Windows CE 이미지 만들기
§ MANGO Story 2009.01.08 01:10 다바꼬꼬(dechoi96) 카페 스탭
http://cafe.naver.com/embeddedcrazyboys/1244

2.3 Windows CE 이미지 만들기
플랫폼 빌더와 타겟 보드용 BSP 설치가 끝났으면 Windows CE 이미지를 빌드해 보도록 한다.
PBWORKSPACEROOT(C:\WINCE500 \Pbworkspaces\CB2443)에 가서 CB2443.pbxml를 더블 클릭하여 플랫폼 빌더를 실행시킨 후, 메뉴의 "Build OS->Sysgen"을 클릭하면 빌드가 시작된다.
Sysgen은 시스템마다 차이가 있지만 대개 10여분 내외가 걸린다. 빌드 도중에는 아래와 같이 로그창에 진행 메시지가 나오고 하단에 아이콘이 표시된다.
빌 드가 완료되면 아래와 같이 로그창에 완료 메시지가 나온다. 몇 가지 warning이 나오기도 하는데 대부분 무시해도 된다. 빌드가 완료되면 _FLATRELEASEDIR(C:\WINCE500\PBWorkspaces\CB2443\RelDir \CB2443_ARMV4I_Release) 디렉토리 아래에 다음의 바이너리들이 생성된다.
Step loader: STEPLDR.bin, STEPLDR.nb0
EBOOT: EBOOT.bin, EBOOT.nb0
WINCE Image(NK): NK.bin, NK.nb0

wince에서 현재 로드된 driver 항목을 볼수 있는 방법이 있나요?
? OS Q&A 2009.01.11 15:54 낚시가까(yjh7221) 골드 멤버
http://cafe.naver.com/embeddedcrazyboys/1264

현재 망고보드에 (s3c2443) battery driver 추가 햇는데 정상 동자하는 지 알수 있는 방법이 있을까요?
드라이버가 정상정으로 올려지면 Wince의 Windows\regedit 파일에서
HKEY_LOCAL_MACHINE \ Driver\BuiltIn에서 Battery이라는 항목이 있는데
현재 드라이버가 로드 된건가요?
retial, debug 메세지 제외

다바꼬꼬(dechoi96) 카페 스탭
http://cafe.naver.com/embeddedcrazyboys/1265

HKEY_LOCAL_MACHINE\Driver\BuiltIn 아래에 있는 드라이버들은 장치관리자(Device.exe)에 의해 부팅할 때 로딩됩니다. 실제 로딩된 드라이버들은 HKEY_LOCAL_MACHINE\Driver\Active 에서 찾아보시면 될겁니다.

그리고 망고보드에서 ActiveSync가 되니 Platform Builder에서 "Tools -> Remote System Information" 을 실행해서 확인해도 됩니다.


[Mango Story - WINCE #2-1] 플랫폼 빌더 설치

[Mango Story - WINCE #2-1] 플랫폼 빌더 설치
§ MANGO Story 2008.12.22 00:36 다바꼬꼬(dechoi96) 카페 스탭
http://cafe.naver.com/embeddedcrazyboys/1129

2. Windows CE BSP 개발 환경
이 장에서는 WINCE 이미지를 생성하여 타겟 플랫폼에 올리고 동작을 확인해 보는 과정까지 진행해 보기로 한다.
WINCE BSP 개발을 위해선 플랫폼 빌더(Platform Builder)를 설치해야 한다. 플랫폼 빌더는 WINCE 커널과 기본으로 제공되는 각종 서비스와 응용프로그램 컴포넌트들, 설정 관리 수단과 이미지 빌드 툴(어셈블러, 컴파일러, 링커 등)을 제공하는 통합 개발 환경(IDE, Intergraed Development Environment)이다. WINCE 6.0부터는 Visual studio .NET 2005 버젼에 모든 개발 환경이 통합되어 제공되기 때문에 별도로 플랫폼 빌더를 설치할 필요가 없다.
플랫폼 빌더를 설치하고 나면 타겟 보드를 위해 제공되는 BSP를 설치하고 WINCE 이미지를 생성한 후, 타겟 보드에 올리고 실행해 보도록 한다.
2.1 플랫폼 빌더 설치
WINCE 5.0 BSP를 개발하려면 플랫폼 빌더(Platform Builder) 5.0을 설치해야 하는데 그전에 .NET Framework 1.1이 설치되어야 한다. 만약, .NET Framework 1.1이 설치되지 않은 상태에서 플랫폼 빌더를 설치하지 않으면 아래와 같은 오류가 발생한다.
.NET Framework 1.1이 깔려 있는지는 "제어판->프로그램 추가/제거"에 가서 확인하면 된다.
만약 .NET Framework 1.1이 없으면 아래 링크에 가서 dotnetfx.exe를 다운받아 설치해야 한다.

.NET Framework 2.0이 깔려있는 경우에도 플랫폼 빌더가 설치되지 않는다 따라서, .NET Framework 2.0이 깔려있으면 먼저 제거한 후 1.1을 설치해야 한다.
.NET Framework 1.1을 설치했으면 이제 플랫폼 빌더 5.0을 설치한다. 플랫폼 빌더 정식 버젼이 있으면 아래 절차에 따라 설치하고 없다면 다음 링트에서 120일 평가판을 다운받아 설치하도록 한다.
플 랫폼 빌더(Platform Builder) 5.0 설치 파일이 준비되면 해당 디렉토리에 가서 setup.exe를 실행시키고 아래 화면에서 "Install"을 클릭한다. 평가판의 경우 위 링크로 들어가서 다운로드를 클릭하면 setup.exe가 바로 실행된다.
아래 화면이 나오면 "Next"를 클릭한다.
라 이센스 합의 화면이 나오는데 정식 버젼과 120일 평가판의 경우 문장이 약간 다르지만 모두 "I accept the terms in the license agreement"를 체크하고 "Next"를 클릭한다. 정식 버젼의 경우 라이센스 동의 화면이 아래에 나올 패키지 선택 이후에 나오기도 한다(버젼마다 조금씩 다름). 아래 그림은 정식 버젼과 120일 버젼의 라이센스 합의 화면이다.
이제 제품 키(product key)를 입력하는 화면이 나오는데 아래와 같이 입력하고 "Next"를 클릭한다. 평가판의 경우 제품키가 미리 입력되어 나오기 때문에 사용자 이름과 조직 이름만 입력하면 된다.
"Setup Type" 화면에서 "Custom(Tools and OS)" 선택하고 Next 클릭
설치할 디렉토리를 선택하고 Next 클릭
설치할 패키지를 선택하는 화면에서 다음 두가지를 선택하고 Next를 클릭한다.
"Shared Source for Windows CE 5.0" 선택 - 소스 코드가 추가됨.
"ARMV4I" 선택 - S3C2443의 경우 반드시 선택해야 함.
이 외에도 다른 CPU에서 개발해 보고 싶으면 해당 CPU를 선택한 후 설치하면 된다.
이제 "Install"을 클릭하면 설치가 진행된다.
이제 설치가 완료되었으니 Finish를 틸릭하면 된다.

[Mango Story - WINCE #1]Windows CE 개요

[Mango Story - WINCE #1] Windows CE 개요
§ MANGO Story 2008.12.18 20:37 다바꼬꼬(dechoi96) 카페 스탭
http://cafe.naver.com/embeddedcrazyboys/1107

오늘은 WINCE 역사와 버젼 등에 대해 정리했습니다

중요한 내용은 아니고 WINCE가 어떤 건지 간략히 정리해 본 것이니 가벼운 마음으로 읽어 보세요.

1. Windows CE 개요

Windows CE 개요
Windows Embedded CE(Windows CE의 공식 명칭, WINCE라고 줄여서 사용하는 경우가 많다)는 마이크로소프트 윈도우 운용체계에 기반을 두고 있지만, 소형 장치에 내장하기 위한 목적으로 개발된 임베디드 시스템 용 운영체제이다. CE가 무슨 뜻인가에 대해 말들이 많고 많은 사람들이 "Consumer Electronics" 또는 "Compact Edition"으로 알고있지만, 마이크로소프트사는 “Compact, Connectable, Compatible, Companion, and Efficient." 란 의미를 내포한다고 얘기한다. Windows CE는 Windows API의 적용 범위를 Windows XP 커널을 올릴 수 없는 임베디드 장비 시장까지 확장하기 위해 새롭게 설계된 운영체제이다. Windows CE는 GUI(Graphic User Interface)를 제공하는 소형, 경량의 멀티쓰레드 운영체제로서 작은 크기, WIN32 API 호환(부분적인 제약이 있지만), 다양한 플랫폼 지원 등의 강점이 있다. 또한, 시스템을 구성하는 다양한 소프트웨어를 700여개의 컴포넌트로 나눠서 응용 분야에 따라 필요한 구성 요소들을 조합하여 최적화된 임베디드 시스템 소프트웨어를 제작할 수 있도록 하고 있다.
Windows CE가 기본으로 지원하는 프로세서는 다음과 같다.
  • x86
  • MIPS
  • SH4
  • ARM
위 프로세서를 대상으로 하여 Windows CE가 타겟으로 하는 제품군은 아래와 같지만, 이외에도 약간의(?) 노력을 더하면 보다 다양한 플랫폼에 적용할 수 있다.
  • 휴대용 미디어 플레이어(PMP)
  • 휴대용 GPS 장치(PND) / Car navigation
  • PDA
  • 스마트 폰
  • VoIP 전화
  • 네트워크 디지털 TV
  • 셋톱박스
  • 의료장비, 각종 산업용 디바이스
다음 표는 WINCE 각 버젼 별 히스토리를 간략히 정리한 것이다.
개발 툴
Platform Builder
플 랫폼(BSP + 커널)을 빌드하고 디바이스 드라이버를 개발하기 위해 필요하다. 따라서 WINCE BSP 개발이 목적인 경우 반드시 필요한 툴이다. 여기서는 WINCE 5.0을 기반으로 작업하기 때문에 Platform Builder 5.0을 사용한다.
BSP는 "Board Support Package"의 약자로, 타겟 보드에 종속적인 부분을 하나의 패키지로 만들어 그 보드에 맞는 WinCE를 개발할 수 있도록 한 것이다.
Visual Studio
WINCE 응용프로그래을 개발하기 위한 툴이다. 특히, WINCE 6.0 부터는 eVC4.0으로 개발이 불가능하기 때문에 Visual Studio 2005를 사용해야 한다. WINCE 5.0이나 6.0의 응용프로그램은 Visual Studio 2005에서 개발 가능하다.
Embedded Visual C++(eVC)
WINCE 응용프로그래을 개발하기 위한 툴인데, WINCE 5.0을 위해선 eVC4.0을 사용해야 한다. 이전 버전은 닷넷(.net)을 지원하지 않기 때문에 사용할 수 없다. eVC4.0도 WINCE 6.0 응용프로그램 개발에선 사용할 수 없다.
Windows Mobile
Windows CE와 함께 마이크로소프트의 임베디드 운영체제로 자주 거론되는 게 Windows Mobile이다. 간단히 말하면 Windows Mobile은 Windows CE를 특정 플랫폼에 특화시킨 버젼으로 보면 된다. Windows CE는 크게 두 부류의 고객에게 제공된다고 보면 되는데 첫번째가 일반적인 임베디드 시스템 개발 업체이고 다른 하나는 마이크로소프트사 내부의 또 다른 개발 조직이다. 마이크로소프트사 내부에는 Windows Mobile 팀이 별도로 존재하며 이들이 Windows CE 커널을 기초로 특정 플랫폼을 타겟으로 한 고정된 운영체제를 제공하고 있다. 이렇게 해서 Windows Mobile은 타겟 제품군을 기준으로 Pocket PC, Smartphone, Portable Media Center, Automotives 등의 Edition을 제공하고 있다. Windows CE는 사용자가 운영체제를 구성하는 컴포너트를 자신의 목적에 맞게 자유롭게 구성할 수 있으나 Windows Mobile의 경우 각각의 Edition에 대해 MS에서 정하는 표준이나 규칙을 엄격히 따르도록 하고 있다. Windows Mobile은 Windows CE와 개발 환경과 라이센스 방식이 다르고 상품화를 위해선 마이크로소프트사의 인증을 통과해야만 한다.
Windows Mobile이란 배너는 2003년 부터 공식적으로 사용되었고 그 이전은 Pocket PC 2000, Pocket PC 2002, Smartphone 2002 등의 버젼이 있었다. Windows Mobile 2003 부터 아래 테이블에 간단히 정리해 봤다.
현재 발표된 최신 버젼은 2008년 4월의 Windows Mobile 6.1 이다.


[Mango Story - WinCE #0] WINCE 출발

[Mango Story - WINCE #0] WINCE 출발
§ MANGO Story 2008.12.16 16:38 다바꼬꼬(dechoi96) 카페 스탭
http://cafe.naver.com/embeddedcrazyboys/1075

0. Windows CE 출발
0.1 Windows CE 초기 화면
망고 보드는 출하시 NAND 플래시로 부팅하도록 셋팅되어 있는데, Windows CE(이하 WINCE)를 부팅시키면 아래와 같은 초기 화면이 나온다.
WINCE 초기 화면과 사용자 인터페이스는 여타의 마이크로소프트 제품들과 유사하니 잠시 사용해 보면 금방 친숙해질 것이다.
위 화면에서 "내 장치"를 클릭해 보면 아래와 같이 탐색기가 뜬다. 탐색기(Explorer) 기능은 윈도우즈 환경과 거의 동일하니 금방 익숙해 질 것이다.
일단 초기 화면 확인했으니 WINCE가 어떻게 생겼는지 느낌이 왔다고 보고 다음으로 넘어간다.
0.2 개발 준비

타겟 보드 : 망고 보드 MANGO-S3C2443
호스트 피씨 : Windows XP 추천함
호 스트 피씨는 WINCE BSP와 응용 프로그램을 만들고 타겟 보드와 연결하여 다운로드 및 테스트를 진행하기 위해 필요하며 데스트탑이나 노트북 어느 것이든 상관없다. 다만, 운영체제는 MS Windows XP를 권장한다. 현재 대부분의 신규 피씨에 Windows Vista가 기본으로 제공되지만, Vista에선 WINCE 개발 툴(Platform Builder)을 돌리는데 문제가 많고 현재까지 신뢰할 수 있는 방법도 제시되지 않고 있다. 또한, Vista에선 삼성의 USB 드라이버도 제대로 동작하지 않아 현재로선 사실상 사용할 수 없다. Windows 98, Windows 2000 또는 ME 등은 논외로 할까 한다.
DC 어댑터 : DC 5V
시리얼 케이블 : RS232 케이블 또는 USB-to-Serial 케이블
다운로드 및 디버깅 메시지를 위해 필요하다.
피씨에 COM 포트가 있으면 RS232 시리얼 케이블을 연결하면 된다. 요즘 대부분의 노크북과 피씨에는 COM 포트가 없는 경우가 많은데 이때는 USB-to-Serial 케이블을 이용하면 된다.
USB 케이블
타 겟 보드와 피씨를 연결하여 호스트 피씨에서 빌드한 이미지를 다운로드하고 디버깅하기 위해 사용되는데, 호스트 피씨쪽은 USB-A 타입(키보드나 마우스, USB 허브등에 쓰이는 Standard A type)이고 망고 보드 쪽은 Mini-B(이동 장치에 많이 쓰이는 5 핀 커넥터) 타입의 커넥터로 되어있는 케이블(보통 USB2.0 A-B 케이블 이라고도 한다)이 필요하다. 아래 그림을 참조하면 쉽게 이해가 될 것이다.

WinCE for Mango - 시작하며

WINCE for MANGO - 시작하며
§ MANGO Story 2008.12.15 19:24 다바꼬꼬(dechoi96) 카페 스탭
http://cafe.naver.com/embeddedcrazyboys/1066

오늘부터 Windows CE(이후 WINCE)를 크레이지보이(http://cafe.naver.com/embeddedcrazyboys.cafe)의 망고(MANGO-S3C2443) 보드에 직접 올려가며
각 과정에 대한 설명과 예제를 곁들여 전 개발 과정을 정리해보려 합니다.
임베디드 소프트웨어 개발에 대한 경험이 전혀 없어도 쉽게 이해하고 따라할 수 있도록 하는게 일차 목표입니다.
또한, 망고 보드에서 모든 과정을 직접 적용하고 확인해 볼 수 있도록 하여 실전적이고 친숙한 정보가 되도록 하겠습니다.
전 과정을 하나씩 따라해 보면 Windows CE에 대해 보다 친숙하게 접근할 수 있고
개발에 필요한 실전적인 부분을 충분히 연습해 볼 수 있을 것입니다.
우선, 첫 단계는 아래와 같은 순서로 진행할 예정입니다.
0. Windows CE 출발
0.1 Windows CE 초기 화면
0.2 개발 준비물
1. Windows CE 개요
2. Windows CE BSP 개발 환경
2.1 플랫폼 빌더 설치
2.2 BSP 빌드
2.3 다운로드 및 실행

[Mango 메뉴얼] Ethernet

[Mango 매뉴얼] Ethernet


Mango 보드에는 부트로드 다운로드 및 기타 넷트웍 접속을 위한 10Mbps Ethernet이 장착되어 있다. CS8900A를 Ethernet Controller로 사용하며, hardware sleep 모드를 구현하여 Ethernet을 사용하지 않을 경우 수십 uA 정도의 전류만이 흐르게 되어 전력 절감이 가능하여 모바일 보드에 적합하게 설계 되었다.


[그림 1] Ethernet 관련 부품 실장도


위 그림에 나타난 Ethernet 관련 부품 실장을 보면, CS8900A, E2023 Transformer 및 RJ45 Ethernet Connector의 세가지 중요 부품으로 구성되어 있으며, CS8900A 왼쪽 위에 Ethernet에 클럭을 제공하기 위한 크리스탈이 붙어 있음을 볼 수 있다.


RJ45 connector 및 Transformer는 수동적인 소자이므로, 프로그래머의 관점에서는 신경 쓸 필요가 없다. 소프트웨어 프로그래머의 관점에서, Ethernet을 구동하기 위해 중요한 것은 CS8900A Ethernet Controller와 S3C2443 ARM9 CPU 사이의 결선이다.


[그림 2] Mango 보드 Ethernet 결선도


Mango 보드에서 Ethernet 관련 소프트웨어를 작성할 때 특히 주의해야 할 점은, Mango 보드가 CS8900A의 하드웨어 슬립 기능을 사용한다는 것이다. [그림 2]에서 볼 때, LAN_SLEEPN 신호 (S3C2443의 TCLK_GPB4, CS8900A의 SLEEP#)가 LOW이면 “Hardware Suspend Mode”로 진입하여 최대 100uA의 전류만을 소모한다. 이는 “Software Suspend Mode”에서 소모하는 1mA의 10%에 해당하는 수치로, 대기 전류가 중요한 모바일 환경을 위해서는 이와 같이 전류 소모를 최소화 시켜 줄 필요가 있다. 이 기능으로 인해, Ethernet Controller를 사용하기 전에 먼저 LAN_SLEEPN 신호를 HIGH로 만들어 줄 필요가 있다. 오픈 소스로 구할 수 있는 대부분의 디바이스 드라이브에 이 기능이 고려되지 않았을 것이므로 소프트웨어 작성시 반드시 이 신호선을 HIGH로 한 후 CS8900A를 사용하고, Ethernet을 사용하지 않고 대기할 경우에는 LAN_SLEEPN 신호를 LOW로 하면 된다.