16( ) CPLV12-32.hwp

Similar documents
개발목표 프로젝트주제 상용게임기를이용한임베디드소프트웨어교육환경구성 프로젝트목표 닌텐도 DS와같은상용게임기하드웨어를이용하여마이크로프로세서또는임베디드소프트웨어교육실습을수행하기위한개발환경을구성 WIFI USB Serial Eclipse 상용게임기 ( 타겟시스템 ) PC (W

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

DE1-SoC Board

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

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

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

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

Microsoft Word - PLC제어응용-2차시.doc

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

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

슬라이드 1

Microsoft Word - logic2005.doc

목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Journal of Educational Innovation Research 2018, Vol. 28, No. 3, pp DOI: NCS : * A Study on

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

Microsoft Word - PEB08_USER_GUIDE.doc

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

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

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

RealDSP UT 프로그램 메뉴얼

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

5" TFT- LCD 및감압터치지원 : 800x480 USB Host 2.0, USB OTG 2.0, GPS, Wireless LAN, Ethernet 10/100Mbps 통신지원 300 만화소 CMOS Image Sensor 고해상도카메라모듈내장 전원은베이스보드에서공

Motor Control Solution

서현수

Microsoft PowerPoint - 권장 사양

KDTÁ¾ÇÕ-2-07/03

ConnectCore i.mx53 / Wi-i.MX53 Freescale i.mx53 Cortex A8 system-on-module 네트워크가가능한 i.mx53 ConnectCore는새로운프리스케일 i.mx53 Application 프로세서기반인고성능 32-bit S

API 매뉴얼

RVC Robot Vaccum Cleaner

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

KDTÁ¾ÇÕ-1-07/03

Microsoft Word - Armjtag_문서1.doc

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

Install stm32cubemx and st-link utility

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

*2008년1월호진짜

52 l /08

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

¿ÀǼҽº°¡À̵å1 -new

CR hwp

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

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

부산교육 311호

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

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

untitled

Microsoft Word - 임베디드월드_WindowsEmbeddedCompact7_rev

PowerPoint 프레젠테이션

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

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

온습도 판넬미터(JTH-05) 사양서V1.0

PDF_Compass_32호-v3.pdf

Windows 8에서 BioStar 1 설치하기

PowerPoint 프레젠테이션

MDS 08.indd

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

슬라이드 1

PowerPoint 프레젠테이션

PowerPoint Presentation

THE JOURNAL OF KOREAN INSTITUTE OF ELECTROMAGNETIC ENGINEERING AND SCIENCE. vol. 29, no. 10, Oct ,,. 0.5 %.., cm mm FR4 (ε r =4.4)

윈도우시스템프로그래밍

Windows Server 2012

Microsoft Word - Korean_뷰어 메뉴얼_공용_ADVR&SWi_.doc

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

Microsoft PowerPoint - Introduction.pptx

ISP and CodeVisionAVR C Compiler.hwp

Journal of Educational Innovation Research 2019, Vol. 29, No. 1, pp DOI: (LiD) - - * Way to

Journal of Educational Innovation Research 2019, Vol. 29, No. 1, pp DOI: * Suggestions of Ways

윈도우즈프로그래밍(1)

<353420B1C7B9CCB6F52DC1F5B0ADC7F6BDC7C0BB20C0CCBFEBC7D120BEC6B5BFB1B3C0B0C7C1B7CEB1D7B7A52E687770>

Artificial Intelligence: Assignment 6 Seung-Hoon Na December 15, Sarsa와 Q-learning Windy Gridworld Windy Gridworld의 원문은 다음 Sutton 교재의 연습문제

(SW3704) Gingerbread Source Build & Working Guide


<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

슬라이드 1

SBR-100S User Manual

< C0DAC0B2C5BDB1B820BFEEBFB520B8DEB4BABEF32D33C2F720C6EDC1FD2E687770>

온라인등록용 메뉴얼

2002 Game White paper 2002 Game White paper

Journal of Educational Innovation Research 2017, Vol. 27, No. 4, pp DOI: * A Study on Teache

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

네이버블로그 :: 포스트내용 Print VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52 /carrena/ VMware 에서 l

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

Journal of Educational Innovation Research 2017, Vol. 27, No. 3, pp DOI: (NCS) Method of Con

슬라이드 1

Microsoft PowerPoint - es-arduino-lecture-03

PowerPoint 프레젠테이션

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Journal of Educational Innovation Research 2018, Vol. 28, No. 1, pp DOI: * A Analysis of

소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기

고급 프로그래밍 설계

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

슬라이드 1

......


<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

Journal of Educational Innovation Research 2018, Vol. 28, No. 4, pp DOI: 3 * The Effect of H

Transcription:

닌텐도 DS 를이용한임베디드소프트웨어교육콘텐츠 921 닌텐도 DS 를이용한임베디드소프트웨어교육콘텐츠 (Embedded Software Education Contents with Nintendo DS) 장영준 이민석 (Youngjun Jang) (Minsuk Lee) 요약본논문에서는임베디드소프트웨어교육을위하여상용휴대용게임기인닌텐도 DS 를이용한사례를그준비과정과교육내용측면에서기술한다. 우리는닌텐도 DS 에실시간운영체제인 FreeRTOS 를이식하고, Eclipse 기반의 IDE 개발도구및원격디버깅환경을구축하였다. 또, 8 개의시험모듈에서의교육내용으로는실시간운영체제의기본 API 의활용, 다양한하드웨어의제어, IPC, 동기화문제의해결에이르는주제를포함하여임베디드소프트웨어엔지니어가반드시알아야할기본적인스킬들을두루경험할수있도록하였다. 개발된콘텐츠는실제강의에활용되었으며, 교육환경및실습을위한강의자료, 소스코드는모두공개되어누구나다운로드하여이용할수있다. 키워드 : 임베디드소프트웨어, 실시간운영체제, 소프트웨어교육, 상용게임기 Abstract In this paper we describe how we used Nintendo DS, a commercial mobile game console, for embedded software education. We implemented an open source based cross development environment with FreeRTOS realtime operating system, Eclipse based IDE. Through eight lab modules, we cover all the basic skills in embedded software, which include RTOS APIs, 본연구는한성대학교교내연구비지원으로이루어졌음 이논문은 2012 한국컴퓨터종합학술대회에서 닌텐도 DS를이용한임베디드소프트웨어교육 의제목으로발표된논문을확장한것임 학생회원 : 한성대학교컴퓨터공학과 uessie@naver.com 종신회원 : 한성대학교컴퓨터공학과교수 minsuk@hansung.ac.kr (Corresponding author임 ) 논문접수 : 2012년 8월 17일심사완료 : 2012년 9월 22일 CopyrightC2012 한국정보과학회 ː개인목적이나교육목적인경우, 이저작물의전체또는일부에대한복사본혹은디지털사본의제작을허가합니다. 이때, 사본은상업적수단으로사용할수없으며첫페이지에본문구와출처를반드시명시해야합니다. 이외의목적으로복제, 배포, 출판, 전송등모든유형의사용행위를하는경우에대하여는사전에허가를얻고비용을지불해야합니다. 정보과학회논문지 : 컴퓨팅의실제및레터제18권제12호 (2012.12) hardware control, IPC, synchronization issues. All our results including the source codes and the course materials are freely available on our github homepage. Key words :Embedded Software, Realtime Operating System, SW Education, Commercial Game Device 1. 서론 임베디드소프트웨어교육은일반적으로임베디드시스템하드웨어와소프트웨어개발도구를이용하여이루어진다. 지금까지 4년제대학에서의임베디드소프트웨어교육은임베디드리눅스를중심으로이루어져왔다. 기존임베디드시스템교육환경은개발장비의가격이매우비싸며, 학생들이이미익숙해져있는시스템과크게달라현실감이부족하여동기부여가쉽지않다. 또, 하드웨어에관한이해, 개발환경, 리눅스커널에대한이해가모두부족한많은학생들이과목에서정한교육성과들을달성하는데어려움이많았다. 본연구는위와같은문제를해결하기위한것이다. 연구에서는시중에서저렴하게구입이가능한, 또이미많은학생들이이미소유하고있는휴대용게임기인닌텐도 DS를이용하여임베디드소프트웨어교육을함으로써, 학생들에게더큰동기를부여한다. 또, 비교적간단한실시간운영체제를기반으로소프트웨어를작성하도록함으로써빠른학습사이클로, 하드웨어에대한다양한제어, 정형화된설계기술, 태스크간의통신, 동기화의제어등임베디드소프트웨어교육에있어서의주요학습목표들을달성하고자하였다. 연구에서는닌텐도 DS에 FreeRTOS라고하는공개소스실시간운영체제를이식하고, 교육에필요한소프트웨어개발도구일체와, 실습교육을위한샘플코드와수업자료를개발하였다. 개발도구는가능한공개소프트웨어로확보가가능한것을활용하였고, 그렇지못한부분은직접개발하여공개하였다 [1]. 본논문은총 4절로구성되어있다. 2절에서는닌텐도 DS를이용한임베디드소프트웨어교육환경의구성에관하여설명하고, 3절에서는실제수행된실험항목들에대한소개, 4절에서는논문을요약하고향후계획을토의한다. 2. 구현된임베디드소프트웨어교육환경 2.1 하드웨어의구성닌텐도 DS는닌텐도사에서 2004년에출시한휴대용게임기로서표 1과같은하드웨어사양을가져임베디드소프트웨어교육에필요한거의모든요소를기본적으로포함하고있다.

922 정보과학회논문지 : 컴퓨팅의실제및레터제 18 권제 12 호 (2012.12) 분류 CPU 표 1 닌텐도 DS-Lite 의주요하드웨어사양 ARM946E-S 67MHz ARM7TDMI 33MHz 사양 LCD 상단 : 18bit, 256 192 LCD only 하단 : 18bit, 256 192 with Touch ROM 256K Byte Flash Memory RAM 4M Byte SRAM ( 확장가능 ) 통신 무선랜 : 802.11b (WEP) 그래픽 2D, 3D 가속엔진 기타 키패드 ( 조이스틱 ), 마이크, Audio, Dual Slot, 1000mAh 배터리 연구에서는 USB 연결성을확보하고, 외부장치를연결하기위한범용입출력포트 (GPIO), 시리얼포트, 가속센서, LED 등을포함하는그림 1과같은어댑터보드를제작하여사용하였다. 이어댑터보드하드웨어는선택적으로사용이가능하며, 어댑터보드의하드웨어들을이용하지않고닌텐도 DS에내장된무선랜만으로도임베디드소프트웨어교육에는전혀문제가없다. 이어댑터보드상에는닌텐도 DS와는별도의 32비트마이크로컨트롤러가탑재되어있으며, 닌텐도 DS의슬롯을통해시스템을외부로연결한다. 어댑터보드상의 MCU에도 FreeRTOS 실시간운영체제가실행되고있지만, 실제실험과정에서는그소프트웨어를수정하거나, 제어하지는않는다. 학생들이닌텐도 DS를위해개발한실행바이너리는.nds 확장자를가지는닌텐도 DS 게임카트리지롬형식이다. 이를닌텐도 DS에서실제로실행하기위해서는흔히닥터툴이라고부르는장치가필요하다. 그림 1의어댑터보드는 R4라고불리는닥터툴칩을왼쪽플라스틱케이스내부에내장하고있으며, 1G Byte의 MicroSD 플래시메모리를저장공간으로사용한다. 이연구에서개발된실시간운영체제기반실행파일은닌텐도 DS 시리즈게임기를위한모든닥터툴칩과호환된다. 닌텐도사는닌텐도 DS 출시이후, 시리즈로닌텐도 DS-Lite, 닌텐도 DSi, 닌텐도 DSi XL, 닌텐도 3DS를차례로출시하였다. 이닌텐도 DS 시리즈게임기는모두백워드소프트웨어호환성을가진다. 본연구에서개발될소프트웨어교육환경은가장많이팔린닌텐도 DS-Lite를대상으로구성되었지만, 다른모든닌텐도 DS 시리즈게임기에서도개발환경의변경이나, 소스의수정, 재컴파일없이모두그대로실행된다. 또연구에서는실제환경에서흔히사용되는다양한하드웨어제어에관한교육을위하여실제닌텐도 DS가가지지않은하드웨어를가상적으로구현하였다. 이가상하드웨어는실제하드웨어와같은방식, 즉, 입출력포트제어방식으로구동할수있도록설계되었다. 가상하드웨어에는 2개의바형 LED, 8개의 7 세그먼트 LED, 16(4 4) 개의스캔방식키매트릭스, 2개의채터링없는이상적인스위치와 2개의채터링이있는좀더실제적인스위치를포함한다. 이가상디바이스들은실시간운영체제의라이브러리형태로구현되었으며, 실제하드웨어제어와같은방식인가상적인 GPIO를통해접근가능하다. 2.2 소프트웨어환경의구성임베디드소프트웨어교육환경구성을위한소프트웨어구조는그림 2와같다. 타겟시스템인닌텐도 DS 쪽에는 FreeRTOS[2] 를이식하였다. FreeRTOS는약 5,000 라인정도의작은실시간운영체제이다. 이운영체제는간단해서 10여개정도의 API를배움으로써실시간시스템의동작을이해할수있으며, 태스크의정의및주기적실행, 태스크사이의통신, 동기화제어등임베디드시스템에필요한모든동작을이용할수있다. 연구에서만든실습교육모듈들은이 API를차례로이용하고, 이전실험결과를이용하여점점큰시스템을구축할수있도록구성되었다. FreeRTOS는닌텐도 BIOS 상에서이식되었으며, USB를이용하여호스트쪽에서원격디버깅이가능하도록 GDB[3] 스터브코드가추가되었다. 또타겟시스템에는호스트에서만들어진바이너리를 USB, 시리얼포트, 또는무선랜을통해다운로드하고, 파일관리를수행하는 Shell 프로그램이추가되었다. 호스트시스템의교차개발환경은마이크로소프트의윈도우즈와리눅스를모두지원한다. 기본적인개발 IDE 환경은가장널리사용되고있는개발도구인 Eclipse[4] 기반으로구성되었다. 타겟시스템을위한컴파일러, 바이너리유틸리티, 닌텐도 DS를위한기본 그림 1 USB 및 GPIO 어댑터 그림 2 구현된소프트웨어환경

닌텐도 DS 를이용한임베디드소프트웨어교육콘텐츠 923 라이브러리는 DevkitPro[5] 의도구를이용하였다. 또 Eclipse에서빌드된바이너리를다운로드하기위한프로그램등이추가되었다. 모든개발환경소프트웨어는문서와함께그소스가 [6] 에공개되었다. 실험과정에서는인터넷에서구할수있는다양한닌텐도 DS 에뮬레이터도이용할수있다. 3. 임베디드소프트웨어교육내용 3.1 교육콘텐츠개요 2절에서기술된임베디드소프트웨어교육환경은한성대학교컴퓨터공학과 2011년가을학기에임베디드소프트웨어실습을다루는 3학년과목 마이크로프로세서응용설계 에서정규수업에처음으로활용되었다. 그전해인 2010년 2학기의같은과목에서는이러한교육환경의성공가능성을확인하기위하여프로토타입으로구현된거의유사한개발및실행환경에서텀프로젝트로용도로만활용되었었다. 그결과, 2010년에몇팀의학생들이짧은시간에닌텐도 DS를이용한간단한게임을구현할수있다는것으로보여줌으로써수업에의활용가능성을확인하였다. 그결과를바탕으로, 2011년에는전면적으로해당과목의모든교육및실험을 Eclipse 환경, FreeRTOS 운영체제와닌텐도 DS-Lite 를이용하여진행할수있었다. 2011년가을학기의교육에서는 8개의실험항목을주단위로진행하였다. 본격적인실험에앞서개발환경과실습에사용되는실시간운영체제인 FreeRTOS에관한기초교육도이루어졌다. 8개의실습항목수는 16 주로구성되는한학기에서기초교육과시험, 텀프로젝트를위한시간을제외하고, 가능한거의최대의실습항목수에해당한다. 학기초에는우선개발도구에관한교육이진행된다. 호스트시스템 ( 실제수업에서는실험실사정상, 윈도우즈환경이사용되었다 ) 에서간단한 Hello World! 프로그램을작성하고빌드하여 USB 또는무선랜을이용하여다운로드하여실행하는과정을연습한다. 이때타겟시스템인닌텐도 DS에서실행되는프로그램을호스트시스템에서원격으로소스수준에서디버깅하는과정이포함된다. 이사전교육은실험과정에서반드시필요한것으로, 학생들이이전에한번도경험해보지못한교차개발환경 (Cross Development Environment) 에익숙해지기위한것이다. 각실험은이전실험의결과를활용하여구현될수있도록누진적으로구성되며, 학생들에게는실험의목표, 미션등을기술한문서, 예제와함께기본적인템플릿소스가제공된다. 학생들은 SVN(Subversion) 을이용하여템플릿소스를홈페이지의소스리파지토리에서 check-out하여각자실험을수행하고, 지정한미션에대한완료검사를성공적으로받으면, 결과보고서와소스를리파지토리에저장하고그실험을종료한다. 수업에서는소스리파지토리로 SourceForge를이용하였다. 항상자신의 PC에서만개발을진행하던학생들은이러한수업과정을통해서공개소프트웨어개발도구, 버전관리시스템에도익숙해지게된다. 3.2 교육콘텐츠의구성실제진행된 8개의실습제목과구체적인내용은다음과같다. SimpleIO1 : 가장기초적인 Bit 단위의 GPIO 입출력실험으로스위치및 LED를구동하는실험이다. 이실험에서학생들은실시간운영체제에서태스크의정의, 실시간운영체제에서 Time Tick의개념, 운영체제가제공하는타이머의개념을배운다. 실제소프트웨어에의해하드웨어가제어되는간단한예를통하여, 처음접해보는, 하드웨어제어에대한두려움을없애고, 임베디드시스템이이전의시스템과크게다르지않다는것을배우게된다. SimpleIO2 : 토글스위치, On/Off 스위치등상태유지가필요한스위치동작을구현하고, 다양한방식으로 LED를구동해보는실험이다. 이실험은현실에존재하는많은 Bit 단위입출력시스템들이작동하는여러가지방식을경험함으로써, 자신들이사용하던여러전자기기들에달린버튼들, LED가어떤방식으로구현되는지를배운다. SimpleIO3 : 짧은클릭, 긴클릭, 싱글클릭, 더블클릭등다양한복합클릭방식을유한상태머신으로설계하고, 여러가지방법으로상태머신을코딩하는방법을학습하는실험이다. 이실험에서는간단한유한상태머신의구현방식을여러예제로설명하고, 적어도 10개이상의상태가필요한복잡한동작을유한상태머신으로설계하고소프트웨어로구현해본다. 이실험을통하여학생들은복잡한임베디드시스템을정형화된모델인유한상태머신으로정의하고, 그모델을직접소프트웨어로구현하는여러가지소프트웨어적인기술을배운다. KeyMatrix : 가상으로구현된키매트릭스를이용하여스캔방식의키보드를제어하고, 읽은키값을 7 세그먼트 LED에스크롤방식으로기록하는실험이다. 이실험은실제소규모임베디드시스템에자주사용되는키매트릭스와 7 세그먼트 LED를경험할수있도록추가되었다. 구현된가상키매트릭스는그림 3의오른쪽에 4행 4열, 16개의스위치로구성된다. 이키매트릭스는닌텐도 DS의아래쪽 LCD에그림으로표시되며, 터치펜으로특정키위치를클릭함으로써실제하드웨어스위치가눌린것처럼동작한다. 실험에서는키매트

924 정보과학회논문지 : 컴퓨팅의실제및레터제 18 권제 12 호 (2012.12) 그림 3 가상키그림 그림 5 7 세그먼트 LED 그림 4 등가회로 통신의개념을익히는실험이다. 이실험에서학생들은 KeyMatrix 실험과정에서복잡하게구현되었던소프트웨어를태스크를분리하여구현하는구조로바꾼다. 이과정에서학생들은복잡한시스템을멀티태스킹방식으로구현하는방식을배우고유용성을느끼게된다. 또두태스크사이에서메시지큐를이용한통신, 그통신방식에따른태스크들의동작방법, 태스크의우선순위가시스템의동작에미치는영향을배운다. Ball : 6개의태스크를만들고닌텐도 DS의프레임버퍼에그림 7처럼, 6개의사각볼이각각하나의태스크에의해임의로속도로 3개는가로방향으로 3개는세로방향으로움직이도록하는실험이다. 그림 7은흐린볼하나가진한볼아래가려져숨겨진상태를보인다. 릭스의동작은그림 4와같은등가회로를이용하여설명될수있다. 회로는가상입출력포트 0 410 번지의상위 4 비트에돌아가면서 1을기록하고, 하위 4비트를읽어비트단위로확인하는과정을통하여어떤스위치가눌렸는지를확인한다. 실험에서사용되는또다른가상디바이스인 7 세그먼트 LED는그림 5와같다. 이 7 세그먼트 LED는 0부터 F까지모양을출력하는하드웨어인래치드디코더 (Latched 7 Segment Decoder) 가포함된 8개의개별 7 세그먼트 LED를 3 8 디코더로선택하여구동되며, 그림 6과같은가상포트에의해제어된다. 0 400 번지의최상위비트 ( 비트 7) 는해당 LED를켤지, 끌지를지정하고, 비트 6,5,4는 0부터 7까지제어할 LED 번호, 하위 4비트는표시될 16진수숫자를지정한다. 이포트를통하여 7 세그먼트 LED를하나씩원하는글자가표시되게하거나, 끌수있다. 이실험에서학생들은스캔방식의입출력장치를제어해봄으로써비용효율적인하드웨어와소프트웨어사이의 Trade-Off 관계를이해한다. 또한태스크로키스캔과 7 세그먼트 LED 제어를하는소프트웨어를작성함으로써, 여러가지동작을한태스크로할때발생하는소프트웨어구조상의어려움, 태스크의주기와우선순위개념을배운다. KeyQueue : 앞의키매트릭스스캔프로그램을실시간운영체제에서별도의태스크로분리하여멀티쓰레드방식으로구현하고, 스캔태스크와키값을이용하는응용프로그램사이에메시지큐를이용하여태스크간그림 6 7 세그먼트 LED 제어가상포트 그림 7 Ball 실험이실험에서학생들은최근의임베디드시스템에서보편적으로사용하고있는 LCD 하드웨어제어방법을배워, 간단한그림의움직임을구현할수있게된다. 또이실험을통해볼이겹쳐지는현상을관찰함으로써, 그렇게되지않으려면동기화제어가필요하다는사실을확인한다. 실제닌텐도 DS는그래픽가속하드웨어를가지고있으나, 우리실험에서는 LCD의프레임버퍼를직접참조하여비트맵제어를하는방식으로그림을그린다. BallMutex : 위 Ball 실험에서, 6개의볼이만나는 9 개의교차점에서두볼이겹치지않도록즉. 교차점진입직전, 다른볼이그위치에있는경우대기를하도록구현하는실험이다. 이실험을통해서, 학생들은태스크들이특정자원 ( 우리예에서는볼의교차점 ) 을두고경쟁하는상황을 FreeRTOS가제공하는세마포 API를이용하여해결하는프로그램을작성한다. 성공적으로프로그램이된경우, 학생들은이전실험이라면, 두볼이겹쳐져야하는순간에먼저교차점에진입한볼이지나갈때까지, 다른볼이진행하지않고대기하는것을관찰함으로써자신이구현한태스크간동기화작전이성공적으로동작함을확인하여, 동기화문제에관하여실질적으로배우게된다. BallWall : 그림 8과같이벽사이를왕복하는작은 Ball이있고, 키매트릭스로입력받은숫자에따라왼쪽의벽크기를동적으로바꾼다. 이과정에서볼이벽을뚫지않고왕복하도록운영체제가제공하는상호배제 (Mutex) API를이용하여구현하는실험이다.

닌텐도 DS 를이용한임베디드소프트웨어교육콘텐츠 925 4. 결론및향후연구 그림 8 Ball-Wall 실험이실험은좀더복잡한동기화문제를해결해보는복합실험으로, 크기가변하는벽과, 벽과화면경계사이를계속왕복하는볼사이에어떤경쟁이있는지, 우선이해하고그문제를해결하기위한다양한방법을구상하고, 직접구현해보는가장복잡한실험이다. 이실험은벽, 볼, 키매트릭스스캔등구분이가능한모든작업을각각별도의태스크로구현하는멀티태스킹, 타이머활용, 태스크사이의통신, 키매트릭스구동을위한유한상태머신, LCD 제어, 상호배제를이용한동기화문제해결등앞선모든실험요소들을모두포함한다. 이실험을통해서학생들은실제임베디드시스템응용이가지는모든특성을복합적으로경험하고주어진문제를해결하는설계, 구현능력을배운다. 텀프로젝트 : 실제진행된강의에서는약 3주간의일정으로학생들이텀프로젝트를스스로주제를정하여수행하도록하였다. 2인 1조정도로구성된팀들은거의모두간단한게임을만들었다. 학생들이제출한결과물게임은수업시간에는다루지않은사운드, 무선통신, 그래픽가속기사용등을포함하는경우도있었다. 또모두실시간운영체제상에서멀티태스킹방식으로구현되어, 실험과정에서배웠던임베디드소프트웨어기술을잘활용한것으로, 즉우리수업내용이효과적이었음을확인할수있었다. 그림 9는학생들의텀프로젝트결과물가운데일부이다. 짧은시간에만들어진것들인만큼완성된게임들은주로한두스테이지의슈팅게임, 퍼즐게임, 간단한퀘스트게임들이다. 그림 9 텀프로젝트결과물 본연구는임베디드소프트웨어교육을위한환경구축에관한것으로, 구현된교육환경에서는가격이저렴하고널리보급된닌텐도 DS 또는호환기종의휴대용게임기를하드웨어로이용하고, 공개소프트웨어개발도구를이용한다. 실험환경에서는 FreeRTOS라는공개소스실시간운영체제를닌텐도 DS에이식하여사용하며, 원격디버깅이가능한통합개발환경을리눅스및윈도우즈환경에서 Eclipse 기반으로구축하였다. 이환경을이용하여 8개의실험항목에대한실험수업을진행하였으며, 학생들은학기말프로젝트로실시간운영체제상에서간단한게임을설계구현하고시연함으로써임베디드소프트웨어에관한교육성과를달성하였다. 모든개발환경과실험교육에사용된문서, 소스등은 SourceForge 홈페이지 [7] 에공개되었다. [7] 은 SVN 기반의소스리파지터리를제공하며, 최근에접속속도가느려져, 지금은성능도좋고, 최근에현업에서많이사용하는 git 프로토콜기반의리파지터리를운영하는 github으로홈페이지를이전중이다 [6]. 앞으로, 닌텐도 DS에이식된실시간운영체제를자동차산업의표준인 OSEK/VDX 호환운영체제로교체하여, 학생들이산업체에서더많이사용하는환경을경험할수있도록할예정이다. 또, 개발환경에서도, 통상의대학실험실환경을고려하여무선랜환경의효과적인지원, 모든개발환경을가상머신이미지화하여개발도구의설치과정없이바로실험을진행할수있도록지원하는방법을계획하고있다. 또, 지금만들어진 8개의실험항목에더하여새로운실험항목을추가할계획이다. 본연구를통해개발된실험환경은임베디드소프트웨어교육에활용할수있도록 [6] 을통하여공개하고지속적으로지원할예정이다. 참고문헌 [1] M. S. Lee, "Implementation of Open Source Embedded Software Educational Integrated Development Environment using Portable Game Console," Journal of Institute of Embedded Engineering of Korea, vol.7, No.2, pp.113-120, Apr. 2012. [2] FreeRTOS, http://www.freertos.org (visited 2012, [3] GDB, http://www.sourceware.org/gdb (visited 2012, [4] Eclipse, http://eclipse.org (visited 2012, [5] DevkitPro, http://www.devkitpro.org (visited 2012, [6] NDS-IDE, https://github.com/hl1itj/nds-ide (visited 2012, [7] Homebrew Nintendo DS Development Environment, http://nintendo.sourceforge.net/ (visited 2012,