<그림 1> 윈도우 10 기반의 IoT 플랫폼 새롭게 출시된 세 개의 플랫폼 중 가장 흥미로운 플랫폼은 그 동안 코드명 아테네(Athens) 로 알려졌던 Windows 10 IoT Core(이하 Windows IoT Core) 플랫폼이다. 이 플랫폼은 오랫동안 개발자들



Similar documents
Windows 8에서 BioStar 1 설치하기

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft Word - 임베디드월드_WindowsEmbeddedCompact7_rev

PowerPoint 프레젠테이션

4S 1차년도 평가 발표자료

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서


DE1-SoC Board

Install stm32cubemx and st-link utility

서현수

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

목 차 국회 1 월 중 제 개정 법령 대통령령 7 건 ( 제정 -, 개정 7, 폐지 -) 1. 댐건설 및 주변지역지원 등에 관한 법률 시행령 일부개정 1 2. 지방공무원 수당 등에 관한 규정 일부개정 1 3. 경력단절여성등의 경제활동 촉진법 시행령 일부개정 2 4. 대

종사연구자료-이야기방 hwp

벤처연구사업(전동휠체어) 평가

인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 의안 번호 179 제안연월일 : 제 안 자 :조례정비특별위원회위원장 제안이유 공무상재해인정기준 (총무처훈령 제153호)이 공무원연금법 시행규칙 (행정자치부령 제89호)으로 흡수 전면 개

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

Chapter 1

SBR-100S User Manual

디지털 공학

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

SIGIL 완벽입문

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

歯 조선일보.PDF

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1

Splentec V-WORM Quick Installation Guide Version: 1.0 Contact Information 올리브텍 주소 : 경기도성남시분당구구미로 11 ( 포인트타운 701호 ) URL: E-M

WinCE 실험실습 #1

Microsoft Word ARM_ver2_0a.docx

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

목 차 1. 드라이버 설치 설치환경 드라이버 설치 시 주의사항 USB 드라이버 파일 Windows XP에서 설치 Windows Vista / Windows 7에서 설치 Windows

Microsoft Word - src.doc

목차 1. 개요 USB 드라이버 설치 (FTDI DRIVER) FTDI DRIVER 실행파일 USB 드라이버 확인방법 DEVICE-PROGRAMMER 설치 DEVICE-PROGRAMMER

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

Mango-E-Toi Board Developer Manual

PowerPoint 프레젠테이션

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

PCServerMgmt7

아이패드에 주목하는 것은 현재 성능 때문이 아니다. 오히려 기존 PC나 휴대폰과 구분되는 가치와 사용형태로부터 파생될 변화 때문이다. 되는 선호도 조사에서는 아이패드가 넷북과 e-book보다 월등한 것으로 나타났다. 제품별 인지도는 넷북이 아이패드보다 월등하게 나타 났

*2008년1월호진짜

고급 프로그래밍 설계

640..

TTA Journal No.157_서체변경.indd

<C6EDC1FDBABB2DB5F0C0DAC0CEBAD0BEDF2E687770>

52 l /08

스마트폰 저렴하게 구매하는곳

온라인등록용 메뉴얼

PDF_Compass_32호-v3.pdf

슬라이드 1

삼외구사( 三 畏 九 思 ) 1981년 12월 28일 마산 상덕법단 마산백양진도학생회 회장 김무성 외 29명이 서울 중앙총본부를 방문하였을 때 내려주신 곤수곡인 스승님의 법어 내용입니다. 과거 성인께서 말씀하시길 道 를 가지고 있는 사람과 어울려야만 道 를 배울 수 있

Internet Explorer 11 자동업데이트방지 사용자가이드 작성일 : Version 1.0

고객 카드

스마트월드캠퍼스 교육교제

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

User Guide

System Recovery 사용자 매뉴얼

MF Driver Installation Guide

ThinkVantage Fingerprint Software

슬라이드 1

Windows Embedded Compact 2013 [그림 1]은 Windows CE 로 알려진 Microsoft의 Windows Embedded Compact OS의 history를 보여주고 있다. [표 1] 은 각 Windows CE 버전들의 주요 특징들을 담고

MVVM 패턴의 이해

기사스크랩 (160504).hwp

Microsoft PowerPoint - Windows CE Programming_2008 [호환 모드]

Sena Device Server Serial/IP TM Version

로봇SW교육원 강의자료

산림병해충 방제규정 4. 신문 방송의 보도내용 등 제6 조( 조사지역) 제5 조에 따른 발생조사는 다음 각 호의 지역으로 구분하여 조사한다. 1. 특정지역 : 명승지 유적지 관광지 공원 유원지 및 고속국도 일반국도 철로변 등 경관보호구역 2. 주요지역 : 병해충별 선단

PowerPoint 프레젠테이션

김기중 - 방송통신심의위원회 인터넷 내용심의의 위헌 여부.hwp

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

안전을 위한 주의사항 제품을 올바르게 사용하여 위험이나 재산상의 피해를 미리 막기 위한 내용이므로 반드시 지켜 주시기 바랍니다. 2 경고 설치 관련 지시사항을 위반했을 때 심각한 상해가 발생하거나 사망에 이를 가능성이 있는 경우 설치하기 전에 반드시 본 기기의 전원을

USB 케이블만을이용한리눅스 NFS 개발환경 (VirtualBox) 최초작성 : 2010 년 10 월 21 일 작성자 : 김정현 수정내용 최초작성 by 김정현 스크립트추가, 설명보충 by 유형목 1. VritualBox


Visual Studio online Limited preview 간략하게살펴보기

05Àå

Windows Live Hotmail Custom Domains Korea

View Licenses and Services (customer)

1

IRISCard Anywhere 5

컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는 우수한 인력을 양성 함과 동시에 직업적 도덕적 책임의식을 갖는 IT인 육성을 교육목표로 한다. 1. 전공 기본 지식을 체계적으로

MOD360: Microsoft Virtualization 360A Panel Discussion on Microsoft’s Virtualization Strategy

CODESYS 런타임 설치과정

슬라이드 1

PowerPoint 프레젠테이션

2힉년미술

목차 데모 홖경 및 개요... 3 테스트 서버 설정... 4 DC (Domain Controller) 서버 설정... 4 RDSH (Remote Desktop Session Host) 서버 설정... 9 W7CLIENT (Windows 7 Client) 클라이얶트 설정

PowerPoint 프레젠테이션

우리나라의 전통문화에는 무엇이 있는지 알아봅시다. 우리나라의 전통문화를 체험합시다. 우리나라의 전통문화를 소중히 여기는 마음을 가집시다. 5. 우리 옷 한복의 특징 자료 3 참고 남자와 여자가 입는 한복의 종류 가 달랐다는 것을 알려 준다. 85쪽 문제 8, 9 자료

상품 전단지

::: 해당사항이 없을 경우 무 표시하시기 바랍니다. 검토항목 검 토 여 부 ( 표시) 시 민 : 유 ( ) 무 시 민 참 여 고 려 사 항 이 해 당 사 자 : 유 ( ) 무 전 문 가 : 유 ( ) 무 옴 브 즈 만 : 유 ( ) 무 법 령 규 정 : 교통 환경 재

Transcription:

유정현 과장 / chris@mdstec.com 마이크로소프트 Windows Embedded MVP로 MDS테크놀로지(주)에서 윈도우 임베디드 운영체제 기술지원을 담당하고 있다. 다양한 마이크로소프트 임베디드 세미나와 개발 실습 교육을 통해 윈도우 임베디드 기술 전도사 로서 활약하고 있다. 윈도우 임베디드 개발자 커뮤니티: www.iwecom.co.kr 윈도우와 IoT 이야기 페이스북: fb.com/mdswinemb 윈도우 임베디드 제품 솔루션: www.embedsolution.com MDS테크놀로지 홈페이지: www.mdstec.com 마이크로소프트 차세대 IoT 플랫폼 Windows 10 IoT Core Internet Of Things 시대를 대비하는 마이크로소프트 전략이 Build 2015 행사를 통해 공개 되었다. 마이크로소프트의 IoT 전략은 크게 IoT 디바이스와 클라우드 전략으로 나뉜다. 클라우드 플랫폼은 마이크로소프트 애저를 통해 진행되고 있다. 애저에 서비스 버스, 이벤트 허브, 실시간 분석 (Azure Stream Analytics) 등의 IoT 시나리오를 고려한 기능들이 업데이트 되었고, 머신 러닝이나 파워 BI 등의 솔루션으로 데이터를 가공하는 것이 마이크로소프트의 IoT 클라우드 전략이다. 윈도우 10 의 출시와 더불어 마이크로소프트의 IoT 디바이스 전략도 업데이트 되었다. 기존 IoT 디바이스를 겨냥한 마이크로소프트의 플랫폼은 윈도우 임베디드와 더불어, 윈도우 10 출시를 통해 IoT 디바이스를 위한 플랫폼 세 가지를 더 추가하였다.

<그림 1> 윈도우 10 기반의 IoT 플랫폼 새롭게 출시된 세 개의 플랫폼 중 가장 흥미로운 플랫폼은 그 동안 코드명 아테네(Athens) 로 알려졌던 Windows 10 IoT Core(이하 Windows IoT Core) 플랫폼이다. 이 플랫폼은 오랫동안 개발자들의 요구사항이었던 ARM 과 x86 을 아우르는 하나의 플랫폼을 구현한 원코어 시스템이라 한다. 윈도우가 ARM 에 포팅 되었다는 것이 필자는 처음엔 생소하고 신기하였다. 실제 OS 코어는 100% 같지 않음에도 불구하고 프레임워크만 비슷하게 하는 방법으로 OS 통합을 했다고 하는 것이 아닌가 하는 생각마저 들었다. ARM 기반의 라즈베리파이 2 Windows IoT Core 의 개발 환경, 어플리케이션 개발, 주변기기 통신, 드라이버 개발, OS 디버깅에 대해 알아보면서 과연 Windows IoT Core 가 마이크로소프트가 제시하는 원코어 플랫폼인 Universal Windows Platform (이하 UWP)의 조건을 갖추었는지 알아보기로 하자. 개발환경 Windows IoT Core 를 개발하기 위해 개발 PC (윈도우 10 PC) 와 타깃 디바이스 (라즈베리파이 2 혹은 인텔의 MinnowBoard Max) 가 필요하다. 개발 PC 에 윈도우 10 을 설치 후 비주얼 스튜디오 2015

RC 버전을 설치한다. <그림 2>Windows IoT Core 개발 환경 및 툴 개발 PC 에서 앱과 디바이스 드라이버를 개발한 후 타깃 디바이스에 이더넷을 통해 배포하여 테스트 한다. 타깃 디바이스는 모니터가 있는 디바이스(Headed) 와 그렇지 않은 디바이스 (Headless) 로 나뉜다. 많은 IoT 장비 들은 키보드가 없는 환경이 있기 때문에 타깃 디바이스 제어는 개발 PC 에서 이더넷을 통한 PowerShell 명령어로 가능하다. 그리고 시스템이나 드라이버 디버깅을 위해 WINDBG 툴이 사용 가능하다. 개발 PC 환경 설정 개발 PC 에 윈도우 10 과 비주얼 스튜디오 2015 버전을 설치하면 기본적인 앱개발 테스트를 진행할 수 있다. 앱 개발과 더불어 OS 자체를 새롭게 빌드하거나 디바이스 드라이버 개발을 하려면 추가적인 툴 설치가 요구된다. ADK (Windows Assessment and Deployment Kit) : 사용자가 원하는 대로 사용자 정의의 윈도우 IoT 이미지를 만들기 위한 툴이다. Windows IoT Core 이미지에서 컴포넌트화된 기능들을 적절히 조합하여 이미지 사이즈나 기능들을 제어할 수 있다. 이 툴은 Windows Insider 프로그램에 가입한 후 무료로 다운 가능하다. 이 툴 안에는 WICD ( Windows Imaging and Configuration Designer), Windows Assessment Toolkit, Windows Performance Toolkit 등이 포함되어 있다.

SDK (Software Development Kit) : 앱 개발 뿐만 아니라, 드라이버 개발을 위한 WDK 를 사용하기 위해 Standalone Windows SDK 를 반드시 설치 하여야 한다. WDK (Windows Driver Kit) : 윈도우 디바이스 드라이버 개발을 위한 툴킷이다. 윈도우 10 출시와 함께 소개된 Universal 드라이버 모델의 디바이스 드라이버를 만들 수 있다. 디바이스 드라이버의 기본 템플릿, 테스트, 사이닝에 대한 툴이 제공되고 사용자 정의 OS 제작 시에 필요한 툴들도 포함되어 있다. ADK 나 WDK 툴킷은 사용자 정의의 OS 이미지를 만들거나, 사용자 정의 디바이스 드라이버를 만들지 않는 다면 별도로 설치를 하지 않아도 된다. 이 두 개의 툴킷은 상당히 큰 저장장치의 용량을 요구하기 때문이다. 타깃 디바이스(라즈베리파이 2)에 Windows IoT Core 설치하기 개발 PC 의 환경설정이 완료되었다면 타깃 디바이스인 라즈베리파이 2 에 Windows IoT Core 이미지를 설치해 보자. 라즈베리파이 2 용 Windows IoT Core 이미지는 Microsoft Connect 사이트를 통해 다운 받을 수 있다. 사이트에 접속하여 Windows Embedded 를 검색하여 프로그램에 지원하면 라즈베리파이 2 용 Windows IoT Core 이미지를 다운 받을 수 있다. <그림 3> Microsoft Connect 사이트에서 라즈베리파이 2 용 Windows IoT Core 이미지 링크 (출처: Microsoft Connect 사이트) "Windows 10 IoT Core Insider Preview Image for Raspberry Pi 2" 를 다운로드 받고 압축을 풀면 flash.ffu 를 볼 수 있다. 이것이 라즈베리파이 2 용 Windows IoT Core 이미지이다. 마이크로 SD 카드를 개발 PC 에 넣고 이미지를 굽는 툴인 DISM 을 실행하기 위해 Command Prompt 를 관리자 계정으로 실행 한다. Diskpart, list disk, exit 명령을 통해 DISM 으로 작업할 파티션을 확인한다.

Windows IoT Core 이미지(flash.ffu) 가 있는 폴더로 이동하여 DISM 명령어를 사용해 이미지를 굽는(Flash) 작업을 한다. 디바이스 안전 제거를 하여 라즈베리파이 2 에 삽입 후 전원을 인가하여 부팅이 완료되면 IoTCoreDefaultApp 어플리케이션이 실행된 모습을 확인할 수 있다. <그림 4>기본 쉘로 지정된 IoTCoreDefaultApp 의 모습 (출처 : WindowsOnDevices.com )

파워쉘을 이용하여 개발 PC 에서 타깃 디바이스 제어하기 IoT 장비는 여러 시나리오가 가능하다. 모니터가 있는 디바이스(Headed)에서 없는 디바이스(Headless), 키보드가 없는 디바이스 등 여러 가지 형태로 변형된 OS 가 탑재될 것이다. 여러 제약사항이 있는 환경을 고려해 개발 PC 에서 타깃 PC 를 제어하기 위해 파워쉘을 사용할 수 있다. 파웨쉘을 사용하여 타깃 디바이스 접근을 위한 간단한 명령어 숙지는 필수이다. 라즈베리파이 2 에 개발 PC 에서 파워쉘로 접근하기 위해서 라즈베리파이 2 를 부팅하고 기본 쉘에서 IP 주소를 확인한다. 개발 PC 에서 파워쉘을 관리자 계정으로 실행하고 WINRM 서비스(Windows Remote Management)를 실행하여 리모트 연결을 활성화한다. 이 후 개발 PC 와 라즈베리파이 2 의 Trust Relationship 을 위해 SET-ITEM 명령어를 이용한다. 라즈베리파이 2 의 디바이스 이름이나 IP 주소를 이용할 수 있으나 필자의 경험으로는 IP 주소를 넣는 것이 여러모로 좋을 수 있다. 이어지는 질문에 Y 를 입력하여 명령어 실행을 마무리 한다. 파워쉘에서 리모트머신의 StackOverflowException 을 야기 시키는 이슈가 있다. 이를 대처하는 방안으로 remove-module psreadline -force 명령어를 실행한다. Enter-PsSession 명령어를 이용하여 Windows IoT Core 와 세션을 시작한다. Enter-PsSession -ComputerName <machine-name or IP Address> -Credential <machine-name or IP Address or localhost>\administrato 기본 Connect 사이트에서 받은 이미지의 기본 패스워드는 p@ssw0rd 이다. Universal 앱 개발 준비 하기 UWP 기반의 Universal 앱을 개발하면 윈도우 IoT 의 모든 플랫폼에서 구동 가능하다. Universal 앱 개발을 위해 준비할 사항이 있다. 우선 WindowsIoTWatcher.exe 구동이다. IoT 시나리오에서 특히 모니터가 없는 장비의 부팅 여부나 상태를 확인하기 위해 유용한 앱이다. WindowsIoTWatcher 를 이용하여 이더넷으로 연결된 타깃 디바이스의 상태를 확인할 수 있다. <그림 5> WindowsIoTWatcher 로 타깃 디바이스 모니터링

Universal 앱을 개발하고 디버깅하기 위해서 개발 PC 에 개발자 모드를 활성화 하여야 한다. 개발자 모드가 활성화 되어 있지 않으면 Universal 앱을 디버깅할 수 없고, 비주얼 스튜디오의 XAML 디자이너 기능도 활성화 되지 않는다. 현재 윈도우 10 버전에서 GUI 로 디버그 모드 활성화 기능이 제공되지 않아 GPEDIT.MSC 를 활용하여야 한다. CMD 에서 GPEDIT.MSC 를 실행하고 Local Computer Policy > Computer Configuration > Administrative Templates > Windows Components > App Package Deployment 에서 Allow all trusted apps to install -> Enable 로 활성화 Allows development of Windows Store apps and installing them from an integrated development environment (IDE) -> Enable 로 활성화 한다. <그림 6>개발 PC 에 개발자 모드 활성화 모습 비주얼 스튜디오에서 Hello World! 실행하기 비주얼 스튜디오 2015 RC 를 열고 새로운 프로젝트를 생성한다. 다이얼로그 박스에서 Windows Universal 앱 모델을 C# 기반으로 사용해 보기로 하자. 프로젝트 템플릿은 Blank App 을 선택한다.

프로젝트를 생성하면 솔루션 탐색기에서 프로젝트 생성 중에 생성된 UI 와 소스 코드를 확인할 수 있다. 이 파일은 Windows 8 이상의 스토어 앱 프로젝트 생성 시 생성되었던 파일과 크게 다르지 않다. 프로젝트에서 MainPage.xaml 파일에 텍스트박스와 버튼을 생성하기 위한 부분을 추가해 보기로 한다. MainPage.xaml 의 <Grid> 속성안에 다음의 스크립트를 삽입해 보자. XAML 디자이너에서 버튼을 선택하면 속성 창에서 ClickMe_Click 이벤트가 Click 이벤트란에 정의가 된 것을 확인 할 수 있다. ClickMe_Click 텍스트 박스를 더블 클릭하면 MainPage.xaml.cs 에 ClickMe_Click 이름의 이벤트가 생성 되는 것을 확인 할 수 있다. ClickMe_Click 이벤트에 간단하게 텍스트 박스의 내용을 Hello, Windows IoT Core! 로 바꾸도록 해보자.

작성한 앱은 Universal 앱이기 때문에 개발 PC 에서도 비주얼 스튜디오 에서 F5 버튼을 눌러 앱을 구동 시켜 볼 수 있다. 물론 작성한 앱을 윈도우 10 IoT 코어가 동작 중인 라즈베리파이 2 에도 구동 시켜 볼 것이다. 라즈베리파이 2 는 우리가 흔히 개발용 PC 로 사용하는 x86 플랫폼이 아니라 ARM 플랫폼이다. 그렇기 때문에 비주얼 스튜디오 툴바에서 아케텍쳐 메뉴를 ARM 으로 설정 하고, Local Machine 대신 Remote Machine 을 선택한다. 이어서 나타나는 Remote Connections 다이얼로그 박스에서 라즈베리파이 2 의 디바이스 이름이나, IP 주소를 Address 란에 입력할 수 있다. 추가로 Authentication Mode 는 None 으로 선택하고, Select 버튼을 누른다.

리모트 연결에 대한 설정 확인이나 수정은 프로젝트의 속성 -> 디버그 란을 통해서 진행할 수 있다. 이제 리모트 연결을 통해 Windows IoT Core 가 동작 중인 라즈베리파이 2 와 연결하기 위한 준비는 모두 마쳤다. 비주얼 스튜디오에서 F5 를 눌러 앱이 라즈베리파이 2 에서 잘 동작 되는 지 확인해 볼 수 있다. < 그림 7 > 라즈베리파이 2 에서 Universal 앱 실행의 예

GPIO 컨트롤러 사용하기 IoT 의 디바이스들은 여러 주변기기, 센서들과 통신을 할 수 있어야 한다. GPIO, SPI, I2C 그리고 시리얼 포트 등의 인터페이스를 통해 주변기기와 통신할 수 있도록 UWP 에 새로운 네임스페이스가 포함이 되었다. 새롭게 추가된 GPIO 네임스페이스를 이용해 라즈베리파이 2 의 GPIO 포트를 제어하여 LED 를 켜보는 코드를 살펴보도록 하자. LED 의 두 핀 중 짧은 부분이 (-) 로써 라즈베리파이 2 의 GPIO 5 번 포트에 연결이 되고, 긴 핀은 (+)로써 220 Ω 을 통해 3.3v 부분에 연결을 하여 하드웨어 구성을 하여 본다. < 그림 8 >라즈베리파이 2 의 핀에 LED 를 연결한 모습 (출처 : WindowOnDevices.com) GPIO 네임스페이스 사용을 위해 프로젝트의 Windows IoT Extension SDK 이 참조 되어야 한다.

프로젝트가 준비 되면 GPIO 네임스페이스와 GpioController, GpioPin 클래스를 이용하여 라즈베리파이 2 의 GPIO 5 번 포트를 제어할 수 있다. GpioController 의 GetDefault(); 를 이용해 GPIO 컨트롤러를 접근하고 OpenPin(); 를 이용하여 라즈베리파이 2 의 GPIO 5 번 핀을 연결한다. GPIO 5 번 핀을 Output 모드로 설정 후 Write(); 를 통해 GPIO 에 데이터를 출력할 수 있다. Universal Windows Driver 개발 UWP 에서는 동일한 어플리케이션 모델을 지원함과 동시에 디바이스 드라이버 모델도 동일하다. Universal Windows Driver 모델로 작성된 디바이스 드라이버는 모든 윈도우 10 IoT 플랫폼에서 동작 가능하다. 하나의 앱을 만들어 모든 윈도우 10 기반 디바이스에 배포하는 것처럼 디바이스 드라이버도 모든 윈도우 10 기반 디바이스에서 동작시킬 수 있다. (단 하드웨어 종속적인 기본 코드들은 ACPI 코드 수정을 통해 재정의하여야 한다. ) 현재 비주얼 스튜디오 2015 RC 버전에서 WDK (Windows Driver Kit) 을 설치 후 Universal Windows Driver 개발이 가능하다. 윈도우에서는 간단한 드라이버 개발을 위해 WDF (Windows Driver Frameworks) 모델을 지원한다. WDF 기반의 디바이스 드라이버 템플릿을 사용하면 드라이버 객체에 대한 초기화, 하드웨어 접근, 메시지 처리에 대한 기본 인터페이스가 정의 되어 있다. WDF 템플릿에서 제공되는 기본 인터페이스 코드를 최대한 이용하여 몇 줄의 코드 추가로 디바이스 드라이버 개발이 가능하다. Universal Windows Driver 에서는 GPIO 컨트롤을 위해 GPIOClx 프레임워크를 제공한다. CPU 벤더가 GPIO Controller Driver 를 제작하여 윈도우 IoT 플랫폼을 지원한다. 이 드라이버는 일반적인 GPIO 포트를 통한 읽기/쓰기 및 인터럽트 명령을 수행한다. 하지만 때로는 다양한 IoT 시나리오에 의해 CPU 벤더가 개발한 기본 드라이버 동작 외에 사용자가 정의한 다른 동작을 해야 하는 경우도 있다. 읽기/쓰기로 설정된 GPIO 핀 속성을 인터럽트 설정으로 변경한다든지, 센서 모듈과의 GPIO 포트를 이용한 통신 드라이버 작성, 보드

핀맵 변경 그리고 사용자 정의의 특정 IOCTL 처리 등이 필요할 때가 바로 사용자 정의 디바이스 드라이버가 필요한 때이다. 이런 사용자 정의 디바이스 드라이버를 윈도우 10 에서는 Peripheral Device Driver 모델로 개발할 수 있다. <그림 9 >GPIO 드라이버 프레임워크 WindowsOnDevices.com 에서 제공하는 샘플 드라이버(GPIOKMDFDEMO)로 Windows IoT Core 에서 WDK 를 이용한 커널모드 드라이버 (Kernel Mode Device Framework) 를 구동하여 테스트 해볼 수 있다. 이 드라이버는 Win32 콘솔 앱에서 사용자 정의 디바이스 드라이버 인터페이스인 IOCTL 명령을 통해 GPIO 핀을 High 나 Low 로 설정 한다. 샘플드라이버인 GPIOKMDFDEMO 는 윈도우 10 에서 제공되는 GPIO 프레임워크인 GPIOClx (GPIO Class Extension) 와 통신 하는 Peripheral Device Driver 이다. 샘플 드라이버 빌드 샘플드라이버를 비주얼 스튜디오 2015 RC 에서 열고 빌드를 하기 위한 몇 가지 준비를 해야 한다. 샘플드라이버 프로젝트의 속성 창에서 Driver Signing 노드에서 General 메뉴를 선택한다. Test Certificate 를 선택하고 Select from Store 메뉴에서 Windows Phone OEM Test Cert 2013 (TEST ONLY) 증명서를 선택한다.

선택이 완료되면 비주얼 스튜디오에서 라즈베리파이 2 용으로 빌드하기 위해 ARM 플랫폼으로 선택 후 빌드 메뉴를 통해 프로젝트를 빌드 한다. 빌드가 성공적으로 완료되면, 프로젝트의 ARM\Debug\gpiokmdfdemo 폴더에.inf 파일과.sys 파일이 생성된다. INF 파일은 디바이스 드라이버의 매니페스트 파일이다. 디바이스 드라이버가 등록되는 속성의 값을 가지고 있다. 그리고 SYS 파일은 디바이스 드라이버의 소스가 컴파일 된 바이너리 파일이다.

디바이스 드라이버의 빌드가 완료되면 하드웨어 종속적인 코드인 ACPI 테이블이 업데이트되어야 한다. WDK 를 설치하면 C:\Program Files (x86)\windows Kits\10\Tools\x86\ACPIVerify 폴더에 마이크로소프트가 제공하는 ACPI 소스 컴파일러가 존재한다. 이 폴더에 rpi2.asl 파일을 복사한다. CMD 파일을 관리자 권한으로 실행하고, ACPI 컴파일러 폴더로 이동한다. cd C:\Program Files (x86)\windows Kits\10\Tools\x86\ACPIVerify 라즈베리파이 2 용 ACPI 테이블을 아래 명령어로 컴파일 한다. asl.exe rpi2.asl 컴파일이 완료되면 ACPITABL.dat 파일이 생성된다. 샘플 드라이버 배포와 테스트 샘플 드라이버 빌드로 생성된 INF, SYS, DAT 파일을 타깃 디바이스의\Windows\system32\ 로 복사하고 BCDEDIT 로 테스트 사인을 활성화하여 테스트 할 수 있다. 타깃 디바이스에서 디바이스 드라이버를 설치하기 위해서는 DEVCON.exe 명령어를 파워쉘을 통해 사용한다. bcdedit /store C:\EFIESP\EFI\Microsoft\boot\BCD /set testsigning on devcon.exe install gpiokmdfdemo.inf ACPI\GPOT0001 설치가 완료되면 DEVCON STATUS ACPI\GPOT0001 명령어로 드라이버 상태를 확인한다. 샘플드라이버 프로젝트안에 제공되는 콘솔 앱(BlinkyApp_ARM.exe)을 타깃 디바이스의 FTP 를 통해 복사한 후 파워쉘을 이용하여 복사한 콘솔 앱의 위치로 이동 후 low 2, high 2 매개변수를 통해 LED 를 제어해 본다. 디바이스 드라이버 디버깅 Windows IoT Core 가 구동중인 라즈베리파이 2 의 디바이스 드라이버 디버깅을 WINDBG 로 할 수 있다. WINDBG 는 기존 데스크탑 OS 의 디버깅이나 드라이버 디버깅에 사용되는 툴이다. 라즈베리파이 2 를 디버깅하기 위해서는 USB TTL UART 케이블이 필요하다. USB TTL UART 케이블을 라즈베리파이 2 에 연결하고 개발 PC 에서 몇 번 시리얼 포트로 연결되었는지 확인한다.

< 그림 10 >USB TTL UART 를 라즈베리파이 2 에 연결한 모습 라즈베리파이 2 를 구동 하고, 파워쉘 명령어를 이용하여 접속한다. 부팅정보를 BCDEDIT 로 설정하여 라즈베리파이 2 를 시리얼 포트를 이용한 디버깅 설정을 한다. bcdedit -store C:\EFIESP\efi\Microsoft\Boot\bcd -dbgsettings serial bcdedit -store C:\EFIESP\efi\Microsoft\Boot\bcd -debug on 개발 PC 의 CMD 에서 WINDBG 가 있는 폴더로 이동하여 COM3 을 통한 연결 설정하여 WINDBG 를 구동시킨다. 설정 후 파워쉘의 명령어 shutdown /r /t 0 을 이용하여 라즈베리파이 2 를 재부팅 시킨다. 재부팅이 완료되면 개발 PC 에서 대기하고 있던 WINDBG 가 시리얼 포트를 통해 연결이 되는 것을 확인할 수 있다. WINDBG 가 타깃 디바이스와 연결이 되면 GPIOKMDFDEMO 드라이버의 OnDeviceIoControl 함수에 BM 명령어를 활용하여 브레이크 포인트를 설정한다. 파워쉘을 통해 라즈베리파이 2 의 BLINKYAPP_ARM LOW 2 를 실행 시킨다.

BlinkyApp_Arm.exe 콘솔앱을 실행 시키면 WINDBG 에서 브레이크 포인트를 설정한 함수에서 실행이 멈추는 것을 확인할 수 있다. < 그림 11 >드라이버 소스에 WINDBG 로 브레이크 포인트가 설정된 모습 콘솔앱에서는 사용자 정의 디바이스 드라이버 접근을 위해 DeviceIoControl 인터페이스를 사용한다. 이 DeviceIoControl 인터페이스를 통해 디바이스 드라이버의 함수를 호출하면, GPIOKMDFDEMO 드라이버에서 사용자가 정의한 기능을 수행하기 위해 OnDeviceIoControl 함수가 호출 되고 이 과정에서 브레이크 포인트가 설정된 부분에서 디버깅을 시작할 수 있다. 사용자 정의 OS 만들기 IoT 디바이스에서는 디바이스 설정 관련하여 여러 가지 사용자 정의 설정이 있을 수 있다. OS 의 쉘을 변경한다든지, 특정 디바이스 드라이버를 제거하여 디바이스의 오동작을 미연에 방지한다든지, 사용자 정의 디바이스 패키지를 첨부하는 것이 여러 사용자 정의의 시나리오들이다.

Windows IoT Core 는 사용자 정의에 의해 OS 를 빌드 할 수 있는 다양한 툴을 지원한다. ImageApp.exe 와 WICD(Windows Image and Configuration Designer)가 바로 OS 빌드를 위한 툴이다. ADK 와 WDK 를 설치한 개발 PC 에서 이 툴들을 사용할 수 있다. Microsoft Connect 사이트를 통해 x86 과 ARM 플랫폼 빌드를 위한 기본 패키지를 다운받을 수 있고, 라즈베리파이 2 하드웨어와 종속된 패키지도 다운 가능하다. ImageApp.exe 를 실행하는 기본 스크립트가 C:\Program Files (x86)\windows Kits\10\Tools\bin\i386 경로에 IMGGEN.cmd 파일로 제공되어 간단한 명령어로 Windows IoT Core 의 사용자 정의 이미지.FFU 파일을 만들 수 있다. imggen.cmd flash.ffu "%KITSROOT%\OEMInputSamples\RPi2\ProductionOEMInput.xml" "%KITSROOT%\MSPackages" arm 현 시점에서는 WICD 의 많은 부분이 공개되지 않았다. WICD 는 GUI 환경에서 쉽게 OS 설정을 할 수 있는 환경을 제공한다. 차후 WICD 에 대한 부분이 공개 되면 GUI 환경에서 OS 설정을 쉽게 진행할 수 있다. 마치며 지금까지 ARM 기반의 라즈베리파이 2 에 포팅된 Windows IoT Core 의 개발 환경, 어플리케이션 개발, 디바이스 드라이버 개발 방법 그리고 WINDBG 툴을 사용한 디버깅 방법까지 알아보았다. 플랫폼 별로 OS 코어가 다르다는 점은 결국 개발 소스와 툴 사용에 있어서 파편화를 초래한다. 윈도우 10 기반의 IoT 플랫폼은 하나의 코어로 이루어져 있기 때문에 소스의 수정 없이 x86 에서 사용했던 코드를 그대로 ARM 기반 플랫폼에서 사용할 수 있었다. 디바이스 드라이버 코드도 마찬가지다. 하드웨어 종속성이 강한 ACPI 부분만 제외하면 x86 과 ARM 플랫폼에서 소스 하나 바꾸지 않은 채로 디바이스 드라이버가 호환되었다. 개발과 디버깅에 동일한 툴인 비주얼 스튜디오와 WINDBG 를 사용했고, 타깃 디바이스 컨트롤이나 설정에 있어서도 파워쉘, BCDEDIT, DISM 등 동일한 툴을 이용하여 진행하였다. ARM 과 x86 지원에 대한 부분은 마치 윈도우의 리눅스화라고 생각되는 부분이며 마이크로소프트의 툴들을 충분히 활용하여 오히려 더 편리한 개발 환경이 구축되었다. 하지만 아직 프리뷰 버전이라 몇 가지 아쉬운 점들도 있다. 우선 x86 플랫폼과 비교하였을 때 UI 관련 성능에 대한 부분이다. 이 부분은 현재 마이크로소프트에서 최적화 작업이 진행 중이라고 한다. 물론 지난 오랜 시간 동안 마이크로소프트와 인텔의 협업으로 일궈낸 성과을 단기간에 따라 잡기란 여간 쉬운

일이 아닐 것이라 생각 된다. 하지만 필자가 예상했던 성능 보다는 좋은 성능을 보여 준 점은 고무적인 부분이다. 그리고 다른 아쉬운 점은 아직 지원되는 ARM 플랫폼이 몇 가지 없다는 데에 있다. 현재 브로드컴, 퀄컴 정도의 칩셋이 지원되어 좀 더 많은 칩셋 지원은 플랫폼 확산에 큰 숙제인 것으로 생각된다. 첫 술에 배부를 수 있을까? 그리고 아직 프리뷰 버전이다. Universal Windows Platform 의 어플리케이션 모델과 디바이스 드라이버 모델, 그리고 기존 툴과의 유기적인 결합에 많은 잠재성이 있는 것으로 생각된다. 성능과 칩셋 지원 부분의 숙제가 해결 되면 IoT 디바이스 군에서 Universal Windows Platform 의 지배력이 커지는 것을 기대해 보자.