adStar SDK Reference Manual

Similar documents
CANTUS Evaluation Board Ap. Note

ISP and CodeVisionAVR C Compiler.hwp

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

(SW3704) Gingerbread Source Build & Working Guide

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

Install stm32cubemx and st-link utility

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

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

JU-TF43

API 매뉴얼

PowerPoint 프레젠테이션

EISC-GANG_User_Guide_V1.2

MAX+plus II Getting Started - 무작정따라하기

Microsoft Word - Armjtag_문서1.doc

Microsoft Word - EISC-GANG_User_Guide_V1.4.doc

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

DE1-SoC Board

MPLAB C18 C

Windows 8에서 BioStar 1 설치하기

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

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

API 매뉴얼

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

T100MD+

PowerPoint 프레젠테이션

Microsoft Word - src.doc

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

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

BMP 파일 처리

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

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

기존에 Windchill Program 이 설치된 Home Directory 를 선택해준다. 프로그램설치후설치내역을확인해보면 Adobe Acrobat 6.0 Support 내역을확인할수 있다.

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

Studuino소프트웨어 설치

untitled

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

System Recovery 사용자 매뉴얼

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

슬라이드 1

인켈(국문)pdf.pdf

Mango220 Android How to compile and Transfer image to Target

Orcad Capture 9.x

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

Microsoft PowerPoint - chap06-2pointer.ppt

(Microsoft PowerPoint - \270\266\300\314\305\251\267\316\304\250USB_Host_Device_\272\316\306\256\267\316\264\365\275\307\275\300_Philip.ppt)

RealDSP UT 프로그램 메뉴얼

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

PowerPoint 프레젠테이션

CAN-fly Quick Manual

SRC PLUS 제어기 MANUAL

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

Mango-E-Toi Board Developer Manual

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

슬라이드 1

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

*Revision History 날짜 내용 최초작성 Tel Fax [2] page

RVC Robot Vaccum Cleaner

C 언어 프로그래밊 과제 풀이

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Chapter #01 Subject

Chapter 1

LCD Display

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

K&R2 Reference Manual 번역본

hd1300_k_v1r2_Final_.PDF

Microsoft Word - jEMB11_kor.docx

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

01장

Remote UI Guide

untitled

1. GigE Camera Interface를 위한 최소 PC 사양 CPU : Intel Core 2 Duo, 2.4GHz이상 RAM : 2GB 이상 LANcard : Intel PRO/1000xT 이상 VGA : PCI x 16, VRAM DDR2 RAM 256MB

슬라이드 제목 없음

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

슬라이드 제목 없음

PowerPoint Presentation

UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ UL UART PORT1 void UAR

강의10

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

2011년 10월 초판 c 2011 Sony Corporation. All rights reserved. 서면 허가 없이 전체 또는 일부를 복제하는 것을 금합니다. 기능 및 규격은 통보 없이 변경될 수 있습니다. Sony와 Sony 로고는 Sony의 상표입니다. G L

강의 개요

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - AME_InstallRoutine_ver8.ppt

PowerPoint 프레젠테이션

슬라이드 1

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

tiawPlot ac 사용방법

XJ-A142_XJ-A147_XJ-A242_XJ-A247_XJ-A252_XJ-A257_XJ-M141_XJ-M146_XJ-M151_XJ-M156_XJ-M241_XJ-M246_XJ-M251_XJ-M256

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint 프레젠테이션

1217 WebTrafMon II

PRO1_09E [읽기 전용]

쉽게 풀어쓴 C 프로그래밍

Transcription:

adstar - SDK Reference Manual - 32bits EISC MicroprocessoradStar Ver 1.30 April 30, 2012 Advanced Digital Chips Inc.

Ver 1.30 adstar SDK Reference Manual History 2011-10-31 Created Preliminary Specification 2011-12-20 Ver1.02 - adstar SDK 구성, adstar 사용하기부분이 adstar SDK 활용으로통합및내용수정. - UART uart_putdata, uart_putstring 내용추가. - GRAPHIC loadtga, loadtgap, loadpng, loadpngp, drawsetclipwindow, drawsurfacescale drawsurfacescalerect 내용추가. 2012-02-21 Ver1.1 - Bootloader 내용추가 - lib_config.h 내용추가 - Font 내용추가 - SOUND sound_vol_wav, sound_loadwavp, sound_loadmp3p 내용추가. - 회사주소수정. 2012-02-29 Ver1.11-4.lib_config.h 의이미지및 Nested Interrupt 내용변경. 2012-03-12 Ver 1.2 - GRAPHIC createsurface_from 내용추가. ( 이미지회전관련 ) - Font bitmapfont bmfont_setautokerning, bmfont_write_vleft, bmfont_write_vright 추가 - Font bitfont bf_drawstring_vleft, bf_drawstring_vright 추가 - 2.3 Demo Program 실행 의 Linker Script 관련내용수정. - 3.1 Bootloader 의 Mode 관련내용수정, Linker Script 관련내용수정. Execute Mode 내용수정. User Define Mode 내용추가. - 3.3 BootLoader 없이사용하기 내용추가. 2012-03-21 Ver 1.21-3.1.2 라. User Define Mode 의 SD Card 의 boot.bin 파일사용과련내용수정. 2012-04-30 Ver 1.3.0-5.UART 에 <UART Interrupt> 내용추가. - 9.5 Sound output channel 변경방법수정. - 11. Font <font image 제작방법 > 의 Export option 이미지변경. - 12. SPI 내용추가. 2 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 adstarsdk Reference Manual cadvanced Digital Chips Inc. All right reserved. No part of this document may be reproduced in any form without written permission from Advanced Digital Chips Inc. Advanced Digital Chips Inc. reserves the right to change in its products or product specification to improve function or design at any time, without notice. Office 22F, Bldg A, KeumkangPenterium IT Tower, 810, Gwanyang_dong, Dongan-Gu, Anyang-si, Gyeonggi-do, 431-060, Korea Tel : +82-31-463-7500 Fax : +82-31-463-7588 URL : http://www.adc.co.kr Advanced Digital Chips Inc. 3

Ver 1.30 adstar SDK Reference Manual Table of Contents 1. SOFTWARE 개발환경... 8 2. ADSTAR SDK 활용... 14 2.1 adstar SDK 구성및기본정의... 14 2.2 adstar SDK library build... 16 2.3 Demo Program 실행... 18 2.3.1 Project build & download... 18 2.3.2 Nand Flash(SD Card) 에파일복사하기 (Mass Storage Mode 사용하기 )... 20 2.3.3 Demo Program build & download... 20 2.4 adstar새프로젝트만들기... 21 3. BOOTLOADER... 26 3.1 Bootloader... 26 3.1.1 Bootloader 사용하기... 27 3.1.2 Bootloader Mode... 28 가. Remote Communication Mode... 28 나. Mass Storage Mode... 30 다. Execute Mode... 31 라. User Define Mode (execute_fat)... 33 3.2 Namd Boot Code... 34 3.2.1 Namd Boot Code 사용하기... 34 3.3 BootLoader 없이사용하기... 36 4. LIB_CONFIG.H... 38 5. UART... 42 5.1 uart_config... 42 5.2 uart_putch... 43 5.3 uart_putdata... 43 5.4 uart_putstring... 43 5.5 uart_getch... 44 5.6 uart_getdata... 44 5.7 uart_rx_flush... 44 5.8 uart_tx_flush... 45 5.9 set_debug_channel... 45 5.10 get_debug_channel... 45 5.11 debugprintf... 46 5.12 debugstring... 46 5.13 PRINTLINE... 46 5.14 PRINTVAR( A )... 47 4 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 5.15 UART Example... 47 < UART Interrupt >... 48 6. INTERRUPT... 49 6.1 init_interrupt... 49 6.2 set_interrupt... 49 6.3 enable_interrupt... 49 6.4 Interrupt Example... 51 7. TIMER... 52 7.1 set_timer... 52 7.2 stop_timer... 52 7.3 delayms... 52 7.4 TIMER Example... 53 8. GRAPHIC... 54 8.1 setscreen... 54 8.2 createframe... 54 8.3 setframebuffer... 55 8.4 setdoubleframebuffer... 56 8.5 setframebufferxy... 56 8.6 setdrawtarget... 57 8.7 getdrawtarget... 57 8.8 getbackframe... 57 8.9 getfrontframe... 58 8.10 flip... 58 8.11 getscreenwidth... 58 8.12 getscreenheight... 59 8.13 getscreenpitch... 59 8.14 getscreenbpp... 59 8.15 drawsetrgb... 60 8.16 drawgetrgb... 60 8.17 drawputpixel... 60 8.18 drawline... 61 8.19 drawrect... 61 8.20 drawrectfill... 62 8.21 drawround... 62 8.22 drawroundfill... 62 8.23 drawcircle... 63 8.24 drawcirclefill... 63 8.25 drawellipse... 64 8.26 drawellipsefill... 64 Advanced Digital Chips Inc. 5

Ver 1.30 adstar SDK Reference Manual 8.27 loadbmp... 65 8.28 loadbmpp... 65 8.29 loadjpg... 65 8.30 loadjpgp... 66 8.31 loadtga... 66 8.32 loadtgap... 66 8.33 loadpng... 67 8.34 loadpngp... 67 8.35 loadimage... 67 8.36 drawsurface... 68 8.37 drawsurfacerect... 68 8.38 drawsetclipwinodw... 68 8.39 drawsurfacescale... 69 8.40 drawsurfacescalerect... 69 8.41 releasesurface... 70 8.42 createsurface_from... 70 8.43 single frame & double frame사용예... 72 8.44 set frame buffer xy사용예... 75 8.45 Graphic Example... 76 9. SOUND... 78 9.1 sount_init()... 78 9.2 sound_loadwav... 78 9.3 sound_loadwavp... 78 9.4 sound_loadmp3... 79 9.5 sound_loadmp3p... 79 9.4 sound_release... 79 9.5 sound_play... 80 9.6 sound_stop... 80 9.7 sound_vol... 80 9.7 sound_vol_wav... 81 9.8 sound_pause... 81 9.9 sound_resume... 81 9.10 sound_isplay... 82 9.11 sound_ispause... 82 9.12 Sound Example... 83 10. FILE SYSTEM... 85 10.1 f_mount... 85 10.2 f_chdrive... 85 10.3 f_chdir... 86 10.4 FILE System Example... 86 6 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 11. FONT... 87 11.1 bmfont_init... 87 11.2 bmfont_setfont... 87 11.3 bmfont_write... 88 11.4 bmfont_setrgb... 88 11.5 bmfont_close... 88 11.6 bmfont_makesurface... 89 11.7 bmfont_setkerning... 89 11.8 bmfont_setautokerning... 89 11.9 bmfont_write_vleft... 90 11.10 bmfont_write_vright... 90 11.11 bf_init... 91 11.12 bf_setrgb... 91 11.13 bf_setsize... 91 11.14 bf_drawstring... 92 11.15 bf_drawstring_vleft... 92 11.16 bf_drawstring_vleft... 92 11.17 bf_makesurface... 92 11.18 FONT Example... 93 < font image 제작방법 >... 96 12. SPI... 99 12.1 spi_master_init... 99 12.2 spi_set_freq... 99 12.3 spi_master_xfer... 99 12.4 spi_wait_empty_fifo... 100 12.5 SPI Example... 100 Advanced Digital Chips Inc. 7

Ver 1.30 adstar SDK Reference Manual 1. Software 개발환경 첫번째장으로 adstar 를사용하기위한개발환경을구축하는방법부터알아보도록하겠다. 에이디칩스에서는 adstar Chip 을위해프로그램코드편집, compile, download, debugging 을하나의프로그램에서수행할수있는통합개발환경 (IDE) EISC Studio3 를제공하기때문에자료실에서 EISC Studio3 설치파일을내려받아설치만해주면간단하게개발환경구축을마칠수있다. 참고로 EISC Studio3 는 Windows OS 만지원하면 XP 이상에서동작한다. 1. 에이디칩스홈페이지 (http://www.adc.co.kr) 에접속해서, Product System EISC Studio3 Download 에서 EISC Studio ver 3.x 의 v3.5.2 를내려받는다. ( 설치및사용자매뉴얼도있으니참고하도록한다.) 2. 내려받은 ES3_setup_v3.5.2.exe 를실행하여설치를시작하면, 설치를시작한다는창이뜨는데 다음 을클릭하여설치를시작한다. 다음 을클릭하면아래와같이설치할 Compiler 와개발장비인 E-CON 의 Driver 설치를선택하는창이뜬다. adstar 는 AE32000 processor 1 를내장한 Chip 으로 AE32000 compiler 를선택하면된다. 그리고 E-CON 2 장비를처음사용하는사용자라면 E-CON 을선택하여 E-Con Driver 도설치한다. 1 에이디칩스에서개발한 32bit Processor. (EISC Architecture) 2 adstar 와연결하여 program download 및 debugging 을수행할때필요한장비. 8 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 3. compiler 와 E-CON Driver 선택을하고다음을클릭하면, 설치할폴더를선택하는창이나온다. 특별한경우가아니라면 default 로되어있는경로에설치하면된다. ( 주의사항으로 64bit 운영체제를사용할경우 default 로 c:\program Files(x86) 이라고되어있는데, (x86) 을제거한후 c:\program Files 에설치하길바란다.) 4. 다음을클릭하면아래와같은시작메뉴폴더를선택하는창이뜨고, 설치를누르면설치가 시작된다. Advanced Digital Chips Inc. 9

Ver 1.30 adstar SDK Reference Manual 5. 구성요소선택에서 E-CON 을체크하였으면설치가끝날무렵 E-Con Driver 설치를위한다음과같은창이뜨고, 다음을클릭하면 Driver 설치를시작한다. 드라이버설치중 Windows 보안경고창이뜨면 이드라이버소프트웨어를설치합니다. 를선택하도록한다. ( 주의사항으로는컴퓨터와 E-CON 이연결되어있을경우설치에문제가생길수도있으므로, 컴퓨터와 E-CON 이연결되지않은상태에서설치하기바란다.) 10 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 6. 장치드라이버설치가완료되면다음과같은창이나오고, 마침을눌러 EISC Studio3 의남은 설치과정을계속진행한다. 7. 다음과같이 Microsoft Visual C++ 2010 재배포가능패키지를설치하라는창이뜨면동의함에체크한후설치하면된다. EISC Studio3 를실행하는데필요하므로설치하고넘어가도록한다. 8. 설치가완료되면다음과같은창이출력되고, 다음을누르면설치가완료된다. Advanced Digital Chips Inc. 11

Ver 1.30 adstar SDK Reference Manual 9. EISC Studio 3 설치가완료되면다음으로 Download 장비인 E-Con driver 를설치하여야한다. EISC Studio 3 를설치하면서 E-Con driver 파일을복사하였다면 E-Con 을컴퓨터와연결하여 driver 설치를진행하면되고, E-Con driver 파일을복사하지않았을경우에는 EISC Studio 3 를설치한폴더에 econ\driver 라는폴더안에 DPInstx86.exe(32bit) 또는 DPInstx64(64bit) 를실행하여드라이버파일을복사하고, 설치를진행하면된다. (DPInstx86.exe 또는 DPInstx64.exe 를실행해서설치할경우에도, 컴퓨터와 E-CON 을연결하지않은상태에서진행하도록한다.) 10. E-Con driver 파일복사가되었다면, 컴퓨터와 E-Con 을연결하였을때 Windows7 의경우에는자동으로드라이버를찾아설치를진행하게된다. Windows XP 이하버전에서는다음과같이새하드웨어검색마법사창이뜨게되는데, 소프트웨어자동으로설치 를체크하고확인을클릭하면 driver 설치가진행된다. 설치중다음과같은경고창이뜨게되는데, 계속을클릭하면된다. 12 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 11. E-Con 은 A,B 두개의채널로되어있어위와같은방식으로 B 채널도설치해주면된다. 설치가모두완료되면장치관리자에서다음과같이드라이버설치가완료된것을확인할수있다. E- Con driver 설치와관련된좀더자세한내용은 adchips 홈페이지 (www.adc.co.kr) Product System E-CON Download 의 E-CON Driver Install Guide 를참고하기바란다. Advanced Digital Chips Inc. 13

Ver 1.30 adstar SDK Reference Manual 2. adstar SDK 활용 개발에편의를위해 adchips 에서는 adstar SDK 를제공하고있다. adstar SDK 는 adchips 의홈페이지 (www.adc.co.kr) 의 Product SoC ADSTAR Tools & Software 에서내려받을수있다. 2.1 adstar SDK 구성및기본정의 adstar SDK 는다음과같이구성되어있다. Doc 현재보고있는매뉴얼을포함, adstar 와관련된문서가들어있는폴더. Example adstar STK Board 에서동작하는예제프로그램폴더. ( Example 폴더의 flash_data 에는 SDK 예제프로그램이동작하는데있어필요한 image, sound 파일이들어있다. ) Include adstar SDK 의 header file 폴더. lib adstar SDK 의 library file 폴더. lib_src adstar SDK 의 library source file 폴더. ( 최초에는 library 가 build 되지않고 source 형태로만존재하기때문에, lib_src 폴더의 adstar.epx 프로젝트를 build 하여 lib 폴더에 libadstar.a 파일을생성해주어야한다. adstar.epx 를 open 한다음에 F7 또는 build menu 의 build project 를실행하면된다. ) 14 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 Pc-util adstar 를사용하는데있어필요한 Utility 폴더. adstar USB Driver 가들어있다. Startup adstar 개발에필요한 startup 코드와 link script 코드가들어있는폴더. 이외에 STK board 기본설정코드도들어있다. adstar SDK 에는사용하기편하고구분이쉽게변수형을아래와같이정의해놓았다. SDK Source 를참조하는데아래표를참고하기바란다. Signed char S8, s8 Signed short S16, s16 Signed int S32, s32 Unsigned chr U8, u8, u8 Unsigned short U16, u16, u16, BYTE, uchar Unsigned int U32, u32, u32, WORD, ushort Unsigned long long Volatile unsigned char Volatile unsigned short Volatile unsigned int U64, u64, u64, DWORD, ulong vu8 vu16 vu32 Volatile unsigned long long vu64 1 TRUE, true 0 FALSE, false 그리고 Register 의경우 R_ 접두어를붙여정의해놓았으므로 SDK Source 에서 R_ 이붙은명칭은 Register 로생각하면된다. 예를들어 R_TM0CON 은채널 0 번 timer control register 이다. Advanced Digital Chips Inc. 15

Ver 1.30 adstar SDK Reference Manual 2.2 adstar SDK library build adstar SDK 를홈페이지에서내려받았으면, 제일먼저 adstar SDK Library 를 build 해주어야한다. adstar SDK Library source 는 lib_src 폴더에있으므로, lib_src 폴더의 adstar.epx 파일을열어서 build menu 의 build project 를실행하거나, F7 을눌러서 project build 를진행하면된다. Build 가정상적으로완료되면, lib 폴더안에 libadstar.a 파일이생성된다. (adstar SDK 의모든예제들이 library 를참조하므로제일먼저해주어야한다.) [ lib_src 폴더 ] [ adstar.epx 파일 ] 16 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 [ Build Project ] [ Build Project 정상완료 ] [ libadstar.a 파일생성 ] 만약에 adstar library 를수정하게되면위처럼다시 library 를 build 해주어야한다. 그리고 adstar library 를사용하는 program 도다시 build 해주어야수정된 library 가적용된다. Advanced Digital Chips Inc. 17

Ver 1.30 adstar SDK Reference Manual 2.3 Demo Program 실행 adstar SDK example 폴더에는 adstar STK Board 에서동작하는예제들이준비되어있어서, STK Board 에서 adstar 동작을쉽게확인해볼수있다. 이번장에서는 SDK 의 example 중 Demo Project Source 를 build, download, 실행하는방법에대해알아보도록하겠다. 우선 Demo 예제를동작시키기위해서는 Nand Flash 에출력될이미지및사운드파일이있어야한다. Nand Flash 에파일을복사하기위해서는 Example 폴더의 usb_mass_storage project 를실행하거나 bootloader 의 mass storage mode 를사용하면되는데, bootloader 는다음장에서설명하도록하고, 이번장에서는 usb_mass_storage project 를사용하여진행하는방법에대해설명하도록하겠다. usb_mass_storage 를실행하기위해우선 project 를 build 하고, download 하는방법에대해서알아보자. 2.3.1 Project build & download example 폴더의 usb_mass_storage 폴더를열어 usb_mass_storage.epx 파일을마우스로더블클릭하여 project 를 open 한다. Project 를 open 한후 build 하여 board 에서실행되는.bin(binary) 파일을만들기전에좌측 Project Explorer 창의 Linker Script 에있는파일을변경해주어야한다. SDK 에서제공되는 Linker Script 파일은두가지가있는데, 하나는 adstar.ld 파일이고, 다른하나는 adstar_ram.ld 파일이다. SDK 에 example 에는기본적으로 adstar_ram.ld 파일을사용하도록되어있는데, adstar_ram.ld 파일은프로그램을 SDRam 에서동작시킬때사용하는 Linker Script 파일로 bootloader 가올라간상황에서프로그램을동작시킬때사용할수있다. 이번장에서는 bootloader 없이프로그램을동작시키는방법에대한설명으로, adstar_ram.ld 파일대신 adstar.ld 파일을사용한다. 따라서 Linker Script 에서마우스오른쪽을클릭하여 Set Linker Script File 을선택하여, startup 폴더의 adstar.ld 파일을선택해준다. < adstar_ram.ld 파일을 adstar.ld 파일로변경 > 18 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 Linker Script 를변경하였으면, build Build Project 를실행하거나 F7 키를눌러서 project 를 build 한다. build 가완료되면 Output View 에다음과같이출력된다. [ Output View ] Build 가정상적으로완료되면, output 폴더에 usb_mass_storage.elf.bin 파일이생성된것을 확인할수있다. 다음으로 build 로생성된 usb_mass_storage.elf.bin 파일을 STK board 로 download 하는방법에 대해알아보겠다. Download 는 download 할 project 를 EISC Studio3 에열어놓은상태에서 E- CON 을사용하여다음의순서대로진행하면된다. 1. Download 를하기위해 adstar board 와 E-CON 장비를준비한다. (EISC Studio 3 가설치되어있어야하고, E-CON Driver 가설치되어있어야한다. 설치방법은 1 장의 Software 개발환경을참고하기바란다.) 2. adstar board 와 E-CON 장비를연결한후 board 의전원을켠다. 3. Build 메뉴의 Download Option 을클릭한다. 그러면다음과같이 Download Manager 창이뜨는데, Set Command 에는 EISC Studio3 를설치한폴더에서 econ 이라는폴더안의 EConMan.exe 라는 E-CON 용다운로드프로그램을선택해준다. (default 값인 EconMan.exe 로하여도된다. 그리고 Set Argument 에는 target adstar sysinit ffw 0x0 $(TargetPath).bin -exit 이라고입력하고 OK 를클릭한다. Advanced Digital Chips Inc. 19

Ver 1.30 adstar SDK Reference Manual Argument 에대해설명하면, -target 은말그대로 download 할 target 을말하며 adstar 로적어주면된다. -sysinit 는 download 를위한초기화를해주는 command 이다. -ffw 는 build 결과물로나온 bin 파일을다운로드하는 command 로 0x0 은 download 할주소이고, $(TargetPaht).bin 은 download 할파일명으로 $(TargetPath).bin 은현재열려있는 project 의 bin 파일을뜻한다. -exit 는 download 가완료되면자동으로종료하라는 command 이다. (Set Argument 에대한자세한내용은 www.adc.co.kr Product System E-CON Download E-CON.pdf 파일을참고하기바란다.) 4. Build 메뉴의 Download to Target 을클릭하면 download 가진행이된다. 2.3.2 Nand Flash(SD Card) 에파일복사하기 (Mass Storage Mode 사용하기 ) Download 가완료된후 usb cable 을컴퓨터와 STK board 의 device 단자에연결을한후 board 에전원을켠다. 전원을켜면다음과같이새로운저장장치가나타난다. 이저장장치가 board 의 Nand Flash 가잡힌것으로이곳에파일을복사하면 NandFlash 에저장되어 adstar 프로그램에서사용할수있다. Demo Project 에서사용하는이미지및사운드파일은 example 폴더의 flash_data 폴더안의 내용을복사하면된다. 만약 Nand Flash 대신 SD Card 에파일을복사하기위해서는 usb_mass_storage project 의 mass_stor.c 파일을열어상단에주석으로처리되어있는 #define SDCARD_STORAGE 를주석을푼다음 build 한후 board 에 download 하면위와같은방법으로 SD Card 에파일을복사할수있다. 2.3.3 Demo Program build & download Nand Flash 에 Demo Project 에서사용하는이미지및사운드를복사하였으면 example 폴더의 Demo Project 를열어서이전 usb_mass_storage project 때와마찬가지로 Linker Script 를 adstar.ld 파일로변경한후 build 하여 E-Con 으로 download 하면 Demo 동작을확인할수있다. 20 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 2.4 adstar 새프로젝트만들기 이번장에서는 Hello adchips! 라는문장을 UART 를통해출력하는프로그램을작성하면서새프로젝트를만드는법에대해알아보겠다. 1. 먼저 EISC Studio3 를실행한다. 2. 메뉴의 File New Project 를클릭하면다음과같은창이나오는데, 아래그림과같이 EISC General.dll 을선택한후 OK 버튼을누른다. 3. 다음과같이, project 설정창이출력되는데, CPU Type, Build Type, Project Name, Project Directory 를결정해주어야한다. adstar 는 CPU Type 으로 AE32000 을선택해주면되고, 동작프로그램을작성할것이기에 Build Type 으로 Executable 을선택해준다. 다음으로 Project Name 과 Project 를생성할위치를정해주면된다. Project Directory 옆에위치한체크박스 (Make New Project Folder) 는 Project Name 과같은이름의폴더를생성유무를결정하는것으로, 체크하게되면 Project Directory 로지정해놓은폴더에 Project Name 과같은이름의폴더를생성한후그안에 Project file 을생성해준다. 체크하지않을경우에는 Project Directory 로지정해놓은폴더에 Project file 을생성한다. 모든설정이끝나면 OK 를클릭하여새프로젝트생성을완료한다. Advanced Digital Chips Inc. 21

Ver 1.30 adstar SDK Reference Manual 4. 새로운프로젝트가생성되면다음과같이 Project Explorer 창에 Projet 명과 Project tree 를 확인할수있는데, 이곳에 adstar 용 project 에기본적으로필요한파일들을추가해주어야 한다. 5. 먼저 Source Files 에서마우스오른쪽키를클릭하여 Add Exist Files 를선택하여파일을 추가한다. 추가할파일은 SDK 의 startup 폴더에있는 startup_adstart.s, adstarinit.c, stk_board.c 이다. (stk_board.c 파일은 adstar 용 stk board 를사용할경우추가해주면된다.) 22 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 6. 다음으로 Source Files 와마찬가지로 Header Files 에서도마우스오른쪽키를클릭하여 include 폴더에있는 adstar.h 파일을추가해준다. adstar.h 파일만추가해줘도되지만프로그램작성시함수사용에도움을받기위해서는 include/adstar 폴더에있는관련 header 파일도같이추가해주면좋다. 여기서는 UART 를사용하는프로그램을작성해볼것이므로, UART.h 파일도추가하도록하겠다. 7. 다음으로 Linker Script 에 startup 폴더에있는 adstar.ld 파일을추가하고, Static Library Files 에 lib 폴더에있는 libadstar.a 파일을추가한다. 그리고지금작성하고있는 UART 예제프로그램에는필요없지만, MP3 재생이나, JPG 이미지파일을출력하는프로그램작성시에는 libmad.a 파일과 libjpeg.a 파일도추가해주어야한다. Advanced Digital Chips Inc. 23

Ver 1.30 adstar SDK Reference Manual 8. 위처럼추가를다했으면 Source Files 에서마우스오른쪽키를누르고 Add New File 을 클릭 main 프로그램을작성할 main.c 를생성해주면된다. 다음은 main.c 를생성하고, UART 를통해 Hello adchips! 라는문자열을출력하는코드를작성한것이다. 9. 코드를살펴보면, 제일먼저 boardinit() 함수를호출하여사용하는 board 에맞게 pin 설정을한다. (boardinit() 함수는사용하는 board 마다다르므로 board 에맞게 pin 설정을해주어야한다.) 다음으로 uart_config() 함수를호출하여 UART 를설정한값대로초기화해준다. 그리고 debugprintf() 함수를사용하여 hello adchips! 를출력한다. 10. 코드작성을마쳤으면, project 를 build 해야하는데, 그전에먼저 project 설정을해주어야한다. Project Explorer 창에서 project 명에서마우스오른쪽을클릭하여 Properties 를클릭한다. 그러면다음과같은창이나오는데, Directory 에서 Include Directory 에 SDK 의 include 폴더를추가해준다. ( 우측상단의점선박스를클릭하면폴더를추가할수있다.) 24 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 11. include 폴더까지추가를했으면 Build 메뉴에서 Build Project 를클릭하거나, F7 을누르면 Project Build 가이루어진다. Build 가정상적으로완료되었다면, Output View 창에다음과 같이출력되고, output 폴더에 project name.elf.bin 파일이생성된다. 12. 생성된 bin 파일을 E-Con 을사용하여 STK board 에 download 하면 Uart 0 번채널을통해 hello adchips! 가출력되는것을확인할수있다. Advanced Digital Chips Inc. 25

Ver 1.30 adstar SDK Reference Manual 3. Bootloader 이번장에서는 adstar Bootloader 에대해설명한다. adstar 내부에 Flash 를포함한것과, Flash 를포함하지않은칩을위해, 내부 Flash Booting 과 Nand Booting 이가능하다. 이에맞춰 Bootloader 도 Flash Booting 을위한 bootloader 와 Nand Booting 을위한 Nand Boot Code 를지원한다. 3.1 Bootloader Bootloader 는 Serial Flash 를사용한 Flash Boot Mode 3 일경우에사용할수있도록제작된 booting 프로그램으로, SDK Example 의 bootloader 폴더안에있으며, adstar Booting 기능외에다음의기능을제공한다. 가. Remote Communication Mode. 나. Mass Storage Mode. 다. Execute Mode. 라. User Define Mode Remote Communication Mode 는 RemoteManCLI 프로그램을사용하여 adstar 와 Communication 할수있는 mode 로, 주로 USB 를사용하여 application 프로그램을 DRAM 으로 download 하여실행할때사용한다. application 프로그램의동작을빠르게확인해볼수있는장점이있다. 단 DRAM 에 download 하는것이기때문에, 동작을확인할때마다 download 해주어야한다. Mass Storage Mode 는 example 의 usb_mass_storage 와같은동작을수행하는 Mode 로 adstar board 의 Nand Flash 를 usb memory 와같이컴퓨터에서저장장치로인식되도록해준다. 따라서 bootloader 가 adstar 칩에 download 되어있으면, Nand Flash 에 file 을복사하기위해 usb_mass_storage 예제를 download 하지않고도, bootloader 의 Mode 만변경하여 file 을복사할수있다. Execute Mode 는실행모드로, Flash 의 0x14000(sector number : 20) 번지에저장된실행프로그램을 Dram 으로복사한후복사한프로그램을실행하는 Mode 이다. 마지막으로 User Define Mode 는사용자가원하는동작을코딩하여사용하도록해놓은 Mode 인데 Bootloader 에서는기본적으로 Execute Mode 와비슷한동작을하도록프로그램되어있다. Execute Mode 와다른점은내부 Flash 에서실행프로그램을복사하는것이아니라, Nand Flash(SD Card) 에 boot.bin 이라는파일을 Dram 으로복사한후실행하도록되어있다. 자세한동작및사용법에대해서는뒤에설명하도록하겠다. 3 adstar 의 Boot Mode 중하나로 Serial Flash 를사용하여 booting 하는 mode 이다. 자세한사항은 datasheet 를참고하기 바란다. 26 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 3.1.1 Bootloader 사용하기 Bootloader 는 SDK example 안에들어있다. 다른 application 과마찬가지로 project 를열어서 build 후에 adstar 에 download 하면동작을확인할수있다. Bootloader project 를열었으면 build Build Project 를실행하여프로그램을 build 한다. Build 가완료되면, E-Con 을 board 와연결한후전원을켜고, build Download to Target 을실행하면 download 가진행된다. (build 및 download 의좀더자세한설명은본매뉴얼의 2.3.1 장을참고한다.) Bootloader 에몇가지의모드가있는데, 코드상에서다음부분이모드를설정하는부분이다. < bootloader project 의 main.c > 코드를보면 P0.2 와 P0.3 PIO 를입력으로받아 mode 를선택하게되어있는데, STK 보드상에서는 SW4 번과 SW5 번에연결되어있다. ( STK board 와다른 PIO 를사용하고싶다면, 위코드를수정하여사용자가원하는 PIO 를사용하면된다.) <SW4, SW5 과 SW setting 방법 > 위의사진에서보듯이 booting mode 별 SW 설정은다음과같다. MODE SW4 SW5 Execute Mode down down USB Communication Mode down up Mass Storage Mode up down User Define Mode up up Advanced Digital Chips Inc. 27

Ver 1.30 adstar SDK Reference Manual 3.1.2 Bootloader Mode 가. Remote Communication Mode Remote Communication Mode 는 RemoteManCLI 프로그램을사용하여 adstar 와 Communication 할수있는 mode 로, 주로 USB 를사용하여 application 프로그램을 DRAM 으로 download 한후바로실행하여, 동작을빠르게확인해볼때사용한다. Remote Communication Mode 로부팅을하면다음과같은 debug message 가출력된다. [ Remote Communication Mode ] Remote Communication Mode 는 adstar USB device 를사용하기때문에 adstar USB Driver 를설치해주어야된다. USB Driver 는 pc-util/usb_driver 폴더에들어있는데, 설치하는방법에는두가지가있다. 하나는 usb_driver 폴더에있는 DPInstx86.exe(DPInstx64.exe) 4 파일을이용하는방법이고, 다른하나는 windows 의장치관리자에서직접 usb_driver 폴더의 driver 파일을직접찾아설치해주는방법이다. 이문서에서는 DPInstx86.exe(DPInstx64.exe) 파일을사용하기를권장한다. DPInstx86.exe(DPInstx64.exe) 파일을사용하여 usb driver 를설치하는방법은다음과같다. 1. Usb_driver 폴더의 DPInstx86.exe(DPInstx64.exe) 파일을실행하여설치를진행한다. 2. 설치가정상적으로완료되면, usb 를연결하고, bootloader 의 Remote Communication Mode 로부팅을한다. 3. 새로운장치를찾았다고화면의우측하단에표시되면서, driver 설치를시작하게된다. Windows7 을사용하는사용자라면 dpinst.exe 에의해서 driver 가복사되었기때문에자동으로설치가이루어진다. Windows xp 를사용하는사용자라면 새하드웨어검색마법사 창이나타나는데, 소프트웨어자동으로설치 ( 권장 ) 을선택한후다음을누르면역시 driver 파일을찾아자동으로설치가이루어진다. 4. 만약자동으로설치가이루어지지않는다면, 목록또는특정위치에서설치 ( 고급 ) 을선택해서 usb_driver 폴더를선택해주거나, 장치관리자에서 driver update 를해서 usb_driver 폴더를선택해주어야한다. 5. USB driver 설치가완료되면, 장치관리자에서 adstar USB driver 가설치된것을확인할수있다. 4 32 bit OS 사용시 DPInstx86.exe 를사용하고, 64 bit OS 사용시 DPInstx64.exe 를사용한다. 28 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 [ 장치관리자 ] USB Driver 설치를완료했으면 Remote Communication Mode 에서 example 폴더에있는 application 프로그램을 Dram 에 download 하여바로확인을해볼수있는데, Dram 에서 application 을동작시키기전에 application project 를열어 link script 파일을확인하도록한다. [ Linker Script ] Demo Project 는기본적으로 Linker Script 에../../startup/adstar_ram.ld 파일로되어있는데, 확인하였을때 adstar_ram.ld 로되어있으면프로그램이 Dram 에서동작하도록되어있는것이기때문에그대로 build 하면된다. 만약 adstar.ld 파일로되어있다면, 이는 Dram 이아닌 flash 에서동작하도록되어있는것으로 startup 폴더의 adstar_ram.ld 파일로변경해야한다. 정리하면 Flash 에서동작하는프로그램은 link script 에 adstar.ld 파일을 load 하면되고, Dram 에서동작하는프로그램의경우에는 link script 에 adstar_ram.ld 파일을 load 하면된다. 같은프로그램에서 link script 파일만변경하여 Flash 또는 Dram 에서동작하는 binary 를생성할수있다. (bootloader 를사용할경우 Dram 에서 application 을동작시키므로 Bootloader 를사용할경우특별한경우가아니라면 application 의 link script 는 adstar_ram.ld 파일을사용하면된다.) Advanced Digital Chips Inc. 29

Ver 1.30 adstar SDK Reference Manual Link script 를확인하였으면다음으로 Dram 에 download 하여실행하는방법에대해 알아보겠다. build 한후에 adstar 를 Remote Communication Mode 로부팅한다. 그런후에 ECon 으로 download 할때와마찬가지로 build download option 을실행한다. [ build -> download option ] Dram 에 download 하기위해서는 EConMan 프로그램이아닌 RemoteMenCLI 라는프로그램을사용해야하는데, pc_util 폴더에있으므로찾아서선택하면된다. Argument 는 EConMan 과비슷한데, 설명하면다음과같다. -target adstar EConMan 과동일하게 target 명을명시하는부분으로 adstar 로지정한다. -frun 0x20000000 $(TargetPath).bin binary file 을 downlaod 하고실행하는명령어로, Dram 영역인 0x20000000 에현재 project 에서생성된 binary 파일을 download 한후실행한다. -exit 모든동작이정상적으로이루어졌으면프로그램을종료한다. 위처럼 download option 을설정한후에, Remote Communication Mode 상태에서 build download to target 을실행하면현재열려져있는 project 의 binary 파일 download 가 진행되고, 진행이완료되면바로실행한다. 처음에설명했듯이, Remote Communication Mode 상태에서 application 을빨리확인을해볼수있지만, Dram 에 download 하여실행하는것으로, reset 시다시 download 해야한다는점을알고있어야한다. reset 시에도항상같은동작을하도록하고싶은경우에는 Flash 에서 application 을동작하도록하거나, 뒤에설명할 Execute Mode 를사용하면된다. 나. Mass Storage Mode Mass Storage Mode 는 example 의 usb_mass_storage 와같은동작을수행하는 Mode 로 adstar board 의 Nand Flash 를 usb memory 와같이컴퓨터에서저장장치로인식되도록해준다. 따라서 Mass Storage Mode 를이용하여 usb_mass_storage 프로그램을새로 download 할필요없이 Nand Flash 를저장장치로사용할수있다. Mass Storage Mode 로부팅을하면다음과같이 30 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 debug message 를출력하고, usb_mass_storage 와같이이동식디스크장치라는저장장치가 생성된다. [ Mass Storage Mode ] [ 이동식디스크저장장치 ] usb_mass_storage 와마찬가지로이저장장치에이미지및사운드파일을복사할수있다. 다. Execute Mode Excute Mode 는 booting 과동시에 application 이동작하는모드로, 주로 application 개발이 완료되었을때사용하는모드이다. Excute Mode 로 booting 을하면다음과같이터미널창에 출력되는것을확인할수있다. [ Execute Mode ] Advanced Digital Chips Inc. 31

Ver 1.30 adstar SDK Reference Manual Execute Mode 는내부 Flash 의 data 를 Dram 으로복사하여실행하는형태는 build 하여생성된 project_name.elf.bin 파일을지정된내부 Flash 영역에 download 한후에 Execute mode 로부팅을하면 application 이동작을한다. Dram 으로복사되어실행될프로그램이기에 link script 는 adstar_dram.ld 파일을사용한다. 지정된내부 Flash 영역은 20 번째섹터로 address 로하면 0x14000 번지이다. bootloader 에서 0x14000 번지에서부터 data 를 dram 에복사하여실행하게된다 [ bootloader main.c ] Main.c 의 46 번재줄을보면 Flash 영역의시작주소가정의되어있는데, bootloader 의 size 가커져서영역이겹치게되면정의값을수정해주어야한다. 내부 Flash 의 0x14000 번지에 download 하는방법은다음의두가지방법중하나를사용하면된다. 1) EConMan 을사용 [ download option ] 기존에 EConMan 프로그램을사용하여 download 하는방법에서 address 를 0x14000 으로만해주면된다. 이런식으로원하는 address 에 binary 파일을 download 할 수있다. 2) RemoteManager 사용 Bootloader 의 Remote Communication Mode 로 booting 하여 RemoteManCLI 를사용하여 0x14000 에 download 할수있다. 방법은 Download Option 을실행하여다음과같이적어주면된다. 32 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 -flash_filewrite 라는 command 를사용하여 Flash 의지정한 0x14000 번지에 application 을 download 한다. EConMan 또는 RemoteManCLI 를사용하여 download 를완료한후에 Excute mode 로 booting 하면 application 이동작하는것을확인할수있다. 라. User Define Mode (execute_fat) User Define Mode 는사용자가원하는동작을코딩하여사용할수있도록만들어놓은 Mode 이지만, bootloader 에서기본적으로 Execute Mode 와비슷한동작을하도록프로그램되어있다. Booting 을하면 Execute Mode 와같이바로 application 이동작을한다. 다만 Execute Mode 가내부 Flash 에저장되어있는프로그램을 Dram 에복사하여실행하는것이었다면, User Define Mode(execute_fat) 에서는 Nand Flash(SD Card) 의 boot.bin 파일을 Dram 으로복사한후에실행한다는점이다르다. Nand Flash(SD Card) 의 boot.bin 파일을 Dram 으로복사하여실행하는형태에대해설명하면, build 하여생성된 project_name.elf.bin 파일을 boot.bin 파일로이름을변경하여 Mass Storage 모드로부팅, 저장장치 root 에복사를한후, User Define Mode 로부팅을하면저장한 application 이동작을한다. 여기서주의할점은 application 을 Dram 에서동작시키기때문에 link script 를 Dram 에서동작하도록설정된 adstar_dram.ld 파일을사용하여야한다. [ Nand Flash 의 boot.bin 파일 ] Advanced Digital Chips Inc. 33

Ver 1.30 adstar SDK Reference Manual SD Card 에서 boot.bin 파일을 Dram 으로복사하여실행할수도있는데, main.c 의 4 번째줄의 #define FAT_APP_TYPE DRIVE_NAND 대신 #define FAT_APP_TYPE DRIVE _SDCARD 를사용하면, SD Card 의 boot.bin 파일을 Dram 에복사하여실행한다. 3.2 Nand Boot Code Nand Boot Code 는내부 Flash 가없는 adstar 를사용할경우사용하는 Nand Booting 용 bootloader 로 Nand Flash Auto Boot Mode 5 로설정이되어있어야한다. Nand Flash Auto Boot Mode 는 Nand Flash 0 번블록의 2Kbyte data 를내부 sram 에복사하여 booting 하는 mode 이기때문에, Nand Boot Code 의크기는 2Kbyte 로제한된다. 따라서 Nand Boot Code 는수정없이제공되는것을그대로사용하기를권장한다. Nand Boot Code 가하는역할은 Nand Flash 1 번블록부터 7 개블록의 data(application program) 를 Dram 으로복사하여실행하는역할을수행한다. [ nand_boot_code 의 main.c ] 3.2.1 Nand Boot Code 사용하기 Nand Boot Code 는 SDK example 안에들어있다. 다른 application 과마찬가지로 project 를열어서 build 후에 Nand Flash 의 0 번블록에 download 하면된다. Build 는이전에설명한방법대로진행을하면되는데, download 는기존내부 Flash 에 download 하는것과는 command 가다르다. 다음은 Nand Flash 에 download 시 download option 이다. 참고하기바란다. 5 adstar 의 Boot Mode 중하나로 Nand Flash 를사용하여 booting 하는 mode 이다. 자세한사항은 datasheet 를참고하기 바란다. 34 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 [ Download Option ] -nand writefile command 를사용하여 Nand Flash 에 download 한다. 다음으로 Nand Boot Code 에서 Dram 에복사하여실행할코드를 download 하는방법에대해알아보겠다. 먼저 Nand Boot Code 에의해 Dram 에복사될코드는 Dram 에서수행되기때문에 link script 가 adstar_ram.ld 인지확인을한다. [ Linker Script ] 확인을한후 build 과정을거쳐 download 를진행하면된다. 이역시 Nand Flash 에 download 하므로 Nand Boot Code 를 download 할때와같은 command 를사용한다. 다른점은 download 하는위치가달라진다. Nand Boot Code 에의해 Dram 에복사되어실행할코드는 Nand Flash 의 1 번블록에 download 한다. Nand Flash 1 번블록의 address 는 Nand Flash 마다다르므로주의하기바란다. ( 기본적으로 small page Flash 의경우 1 번블록은 0x4000 이고, large page Flash 의경우 1 번블록은 0x20000 이다.) Advanced Digital Chips Inc. 35

Ver 1.30 adstar SDK Reference Manual [ Download Option ] Download 완료후실행하면다음과같이 Nand Booting 라고출력되고, 1 번블록에 download 한 application 이실행되는것을확인할수있다. 3.3 BootLoader 없이사용하기 지금까지 Bootloader 와 Nand Boot Code 에대해서알아보았는데, 이번에는 Bootloader 를사용하지않고프로그램을실행하는방법에대해설명하도록하겠다. Bootloader 를사용하지않으면 Linker Script 파일과, 프로그램을 download 하는위치가달라지게된다. Linker Script 는 adstar_ram.ld 파일대신 adstar.ld 파일을사용한다. 앞에서몇차례설명하였지만, adstar_ram.ld 파일은 Dram 에서프로그램이동작하도록설정되어있는파일이고, adstar.ld 파일은 flash 에서프로그램이동작하도록설정되어있는파일이다. Bootloader 를사용하지않으면실행프로그램을 flash 에서동작시켜야하므로 adstar.ld 파일을사용해야한다. adstar.ld 파일은 startup 폴더에있으므로변경해주면된다. 36 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 [ Linker Script ] Linker Script 를변경하였으면, build 후에 download 해주어야하는데, bootloader 를사용하지않기때문에, RemoteCLI 프로그램을사용할수없고, EConMan 프로그램을사용해서 download 해야한다. Build Download Option 에다음과같이적고, Download to Target 을실행하면된다. [ Download Option ] Bootloader 를사용하지않기때문에 0 번지에바로 download 하면된다. Download 가완료된후 reset 을하면동작을확인할수있다. 정상적으로 download 하였는데도아무런동작을하지 않는다면, Linker Script 가 adstar.ld 로되어있는지확인하기바란다. Advanced Digital Chips Inc. 37

Ver 1.30 adstar SDK Reference Manual 4. lib_config.h adstar SDK 의 lib_src 를보면 Header Files 에 lib_config.h 파일이있는데, 파일명에서도알수있듯이 lib_config.h 파일은 adstar SDK library 의설정파일이라고보면된다. 이장에서는 lib_config.h 파일에대해설명하도록하겠다. [ lib_config.h 요약 ] lib_config.h 는 Nested Interrupt 설정에대한내용으로시작한다. 38 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 Nested Interrupt 사용을설정하는부분으로 1 로설정하면해당 Interrupt routine 에서 Nested Interrupt 를허용한다는의미이다. Nested Interrupt 설명에적혀있듯이, MP3 decoding 이 DMA Interrupt 내에서 frame 단위로이루어지는데, 그사이에다른 Interrupt 를받아들여야하므로 DMA 쪽 Interrupt 는 default 로 Nested Interrupt 를허용해놓는다. 이외에도 Nested Interrupt 를허용하고싶은경우에는 1 로설정하면된다. 중첩허용은최대 14 개까지가능하므로, 꼭필요한경우만사용하기바란다. 다음은 TWI Timeout count 값을설정하는부분이있고, 사용할저장장치를설정하는부분이 있다. 이곳에서사용할저장장치를설정하여사용하지않는저장장치에관련된부분의 size 를줄일 Advanced Digital Chips Inc. 39

Ver 1.30 adstar SDK Reference Manual 수있다. default 로모두 1 로되어있다. 그리고 SD Card 의경우에는 adstar chip 에서사용할수 있는 Pin 이두곳이존재하는데, 어디를사용할지에따라설정을해주면된다. default 값은 STK board 와같이 Nand Flash 와같은 port 를사용하도록되어있다. 다음은 library 에서지원할이미지포맷을결정하는부분으로 default 로모두사용하도록되어 있다. 하지만굳이사용하지않을이미지포맷은 0 으로설정하여코드의사이즈를줄이는것이좋다. 사용하는저장장치의 driver number 를설정하는부분과 driver 의개수를설정하는부분이다. 그리고 filesystem 에서영문만을사용할지한글도사용할지에따라설정을해줄수있는데, 적힌 내용처럼영문만사용할경우변경을해주면 filesystem 관련코드사이즈가줄어든다. Uart Config 에서는 Uart library 에서기본적으로 RX interrupt 를사용하고, Ring buf 를사용하여 uart 로전송되는 data 를저장을하는데, data 를저장하는 Ring buf 의사이즈를결정하고, 사용할 Interrupt 를설정한다. 기본적으로 library 에서 RX interrupt 사용하도록설정되어있고, Uart Interrupt Routine 도작성되어있다. 40 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 lib_config.h 의마지막으로 System clock 설정과 Sound mixer 에대한설정이있다. Sound mixer 와관련하여 buffer size, volume, output channel, sample rate 를설정할수있다. 그리고 System clock 에서는입력 clock 을설정하는부분이있는데, 입력 clock 으로 10Mhz 가아닌다른 Clock 를사용할경우이부분을수정해주면된다. 그리고 PMUInit() 함수에서입력 Clock 에대한 PLL setting 을해주어야원하는 System clock 으로 adstar 를동작시킬수있다. lib_config.h 파일의모든설정이완료되었으면 library 를다시 build 하여 libadstar.a 파일을새로 생성하여사용하여야한다. Advanced Digital Chips Inc. 41

Ver 1.30 adstar SDK Reference Manual 5. UART 5.1 uart_config BOOL uart_config(int ch, int baud, UART_DATABITS databits, UART_STOPBITS stopbit, UART_PARITY parity ) UART 사용을위한초기설정을하는함수이다. lib_config.h 파일에 #define CONFIG_UART_RX_INTERRUPT 가정의되어있으면, Uart Rx Interrupt 설정도같이한다. ( 기본적으로 CONFIG_UART_RX_INTERRUPT 가정의되어있다.) ch UART channel 값. 초기설정할 channel 을입력한다. baud UART baud rate 값. Baud rate 값을설정한다. SDK 는기본적으로 115200 을사용한다. databits UART 전송 data bit 을설정한다. SDK 에서는 data bit 를다음과같이정의하고있다. typedefenum{ DATABITS_5 = 5, DATABITS_6 = 6, DATABITS_7 = 7, DATABITS_8 = 8 }UART_DATABITS; stopbit UART 의 stop bit 를설정한다. SDK 에서는 stop bit 를다음과같이정의하고있다. Typedefenum{ STOPBITS_1 = 1, STOPBITS_2 = 2 }UART_STOPBITS; parity UART 의 parity bit 를설정한다. SDK 에서는 parity bit 를다음과같이정의하고있다. Typedefenum{ UART_PARNONE = 0, UART_PARODD, UART_PAREVEN }UART_PARITY; Return Value TRUE( 1 ) or FALSE( 0 ) 42 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 5.2 uart_putch BOOL uart_putch(int n, char ch ) UART n 채널을통해 ch 값 ( 한문자 ) 을출력한다. n 값을출력할 UART channel 값. adstar 는 UART 5 개 channel 을가지고있다. Ch UART 를통해출력할값. Return Value TRUE( 1 ) or FALSE( 0 ) 5.3 uart_putdata BOOL uart_putdata(int n, U8* buf, int len ) UART n 채널을통해 buf 에저장되어있는문자를 len 만큼출력한다.. n 값을출력할 UART channel 값. adstar 는 UART 5 개 channel 을가지고있다. buf 출력할문자열이저장되어있는 buffer. len 출력할문자열의개수. Return Value TRUE( 1 ) or FALSE( 0 ) 5.4 uart_putstring BOOL uart_putstring(int n, U8* buf) UART n 채널을통해 buf 에저장되어있는문자열을출력한다. n 값을출력할 UART channel 값. adstar 는 UART 5 개 channel 을가지고있다. buf 출력할문자열이저장되어있는 buffer. Return Value TRUE( 1 ) or FALSE( 0 ) Advanced Digital Chips Inc. 43

Ver 1.30 adstar SDK Reference Manual 5.5 uart_getch BOOL uart_getch(int n, char* ch ) UART n 채널을통해 1Byte 값 ( 한문자 ) 을받아 ch 에저장한다. n 값을입력받을 UART channel 값. adstar 는 UART 5 개 channel 을가지고있다. ch UART 를통해값을입력받을변수. Return Value TRUE( 1 ) or FALSE( 0 ) 5.6 uart_getdata int uart_getdata( int n, U8* buf, int bufmax ) UART n 채널을통해 bufmax 만큼값 ( 문자 ) 을읽어서 buf 에저장한다. n 값을입력받을 UART channel 값. Buf UART 를통해값을입력받을 buffer. Bufmax 값 ( 문자 ) 을읽을개수. (Byte 단위 ) Return Value 읽은 data byte 수. Bufmax 값과비교하여같으면함수가정상적으로처리한것이고, 그렇지않을 경우에는정상처리하지못한것이다. 5.7 uart_rx_flush void uart_rx_flush( int ch ) UART n 채널의 rxfifo 를초기화시킨다. ch 초기화시킬 UART channel 값. 없음. 44 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 5.8 uart_tx_flush void uart_tx_flush(int ch ) UART n 채널의 txfifo 를초기화시킨다. ch 초기화시킬 Uart channel 값. 없음. 5.9 set_debug_channel Void set_debug_channel(int ch ) 디버깅용으로사용하는 debugprintf, debugstring, PRINTVAR, PRINTLINE 함수에의해디버깅 메시지가출력될 UART 채널을결정한다. ch 디버깅용으로사용할 UART 채널. 없음. 5.10 get_debug_channel int get_debug_channel( ) 디버깅용으로사용하는 UART 채널값을 return 한다. 없음 Return Value 현재설정된디버깅용 UART 채널값. Advanced Digital Chips Inc. 45

Ver 1.30 adstar SDK Reference Manual 5.11 debugprintf void debugprintf(const char*const format,... ) c 언어의 printf 와같은역할을하는함수로, UART 를통해, 숫자, 문자, 변수의내용을출력할때 사용한다. 출력되는 UART 채널은 set_debug_channel 함수를통해설정해놓은디버깅채널을 사용한다. 기본으로 0 번채널이설정되어있다. Usage debugprintf( result number : %d\r\n,result); UART 를통해 result number : 라는문자열과 result 변수값을 10 진수로출력한다. 그리고줄바꿈을한다. printf 함수와사용법이같다. 단줄바꿈시 \r\n 을모두써주어야한다. 5.12 debugstring void debugstring(const char* str) 문자열을출력하는함수로, 문자열만출력하기를원할때사용하는함수이다. 출력되는 UART 채널은 set_debug_channel 함수를통해설정해놓은디버깅채널을사용한다. 기본으로 0 번채널이설정되어있다. 참고로 debugprintf 함수를사용하여도문자열만출력가능하다. Usage debugstring( === adstar Start ===\r\n ); 안의문자열을 UART 를통해출력한다. 5.13 PRINTLINE 매크로함수로 PRINTLINE 을호출한곳의줄 (line) 값을 UART 통해출력한다. 채널은설정해놓은 디버깅채널을사용한다. 출력되는 UART 채널은 set_debug_channel 함수를통해설정해놓은 디버깅채널을사용한다. 기본으로 0 번채널이설정되어있다. Usage PRINTLINE; 함수를호출한곳의 line 값을출력한다.. 46 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 5.14 PRINTVAR( A ) 매크로함수로 PRINTVAR 를호출한곳의줄 (line) 값과 A 값을 UART 를통해출력한다. 출력되는 UART 채널은 set_debug_channel 함수를통해설정해놓은디버깅채널을사용한다. 기본으로 0 번채널이설정되어있다. Usage int a = 10; PRINTVAR(a);; 변수 a 의값을출력한다. 레지스터값을출력할수도있다. 5.15 UART Example #include adstar.h Int main() { boardinit(); uart_config(0, 115200, DATABITS_8, STOPBITS_1, UART_PARNONE ); // UART 0 번채널을다음과같이설정한다. // Baud rate = 115200 // Data bit = 8bit // Stop bit = 1 // Parity = none debugstring( ============================================\r\n ); debugprintf( ADSTAR UART Example. System clock(%dmhz)\r\n,get_ahb_clock()/1000000); debugstring( ============================================\r\n ); } U8 ch; While(1) { if(uart_getch(0, &ch)) // UART 0 번에서 1Byte 데이터를읽어 ch 에저장한다. { uart_putch(0, ch);// UART 0 번에서입력받은데이터를 UART 0 번으로출력한다. } } Advanced Digital Chips Inc. 47

Ver 1.30 adstar SDK Reference Manual < UART Interrupt > adstar SDK library 는 lib_config.h 파일의정의에따라 UART Interrupt 를사용하도록설정되어있다. Default 값은 UART Rx Interrupt 를설정하도록되어있다. < lib_config.h > 기본적으로 UART Rx Interrupt 를사용하도록설정되어있기때문에, uart_config( ) 함수를호출하면 UART 초기화를진행하고, Interrupt 를설정한다. Interrupt 가설정된상태에서 UART Interrupt 가발생하면 uart.c 의 UARTxISR() 가호출되어 Interrupt Routine 을수행한다. (uart.c, uart.h 참조 ) 48 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 6. Interrupt 6.1 init_interrupt void init_interrupt(void); interrupt 를초기화하는함수이다. 인터럽트관련함수를사용하기위해서반드시 호출해주어야하는함수로 adstar SDK 의 startup_adstart.s 에서호출하여인터럽트를 초기화한다. 6.2 set_interrupt BOOL set_interrupt(interrupt_type intnum, void (*fp)()); 해당 interrupt 가발생하였을때호출할함수를등록하는함수이다. Uart, Sound mixer 등의 Interrupt 함수는 SDK 에서생성및설정되어있으므로중복 등록하지않도록주의하기바란다. intnum interrupt type (interrupt type 에대한정보는다음장참고 ) (*fp)() interrupt 가발생했을때호출할함수 TRUE or FALSE 6.3 enable_interrupt void enable_interrupt(interrupt_type intnum, BOOL b); 해당 interrupt 를 enable 하는함수이다.set_interrupt 함수로 interrupt 함수를등록하고, enable_interrupt 함수로활성화시킨다. intnum interrupt type (interrupt type 에대한정보는다음장참고 ) b 1 or TRUE => interrupt enable 0 or FALSE => interrupt disable TRUE or FALSE Advanced Digital Chips Inc. 49

Ver 1.30 adstar SDK Reference Manual INTERRUPT_TYPE INTERRUPT_TYPE INTERRUPT_TYPE INTNUM_EIRQ0 External interrupt 0 INTNUM_UART0 UART 0 interrupt INTNUM_EIRQ1 External interrupt 1 INTNUM_UART1 UART 1 interrupt INTNUM_TIMER0 Timer interrupt 0 INTNUM_UART2 UART 2 interrupt INTNUM_TIMER1 Timer interrupt 1 INTNUM_UART3 UART 3 interrupt INTNUM_TIMER2 Timer interrupt 2 INTNUM_UART4 UART 4 interrupt INTNUM_TIMER3 Timer interrupt 3 INTNUM_PMU PMU interrupt INTNUM_SOUNDMIXER Sound mixer interrupt INTNUM_SPIO SPI 0 interrupt INTNUM_DMA0 DMA interrupt 0 INTNUM_SPI1 SPI 1 interrupt INTNUM_DMA1 DMA interrupt 1 INTNUM_USB USB device interrupt INTNUM_DMA2 DMA interrupt 2 INTNUM_USBHOST USB host interrupt INTNUM_DMA3 DMA interrupt 3 INTNUM_NAND NAND Flash interrupt INTNUM_DMA4 DMA interrupt 4 INTNUM_SDHC SDHC interrupt INTNUM_DMA5 DMA interrupt 5 INTNUM_ADC ADC interrupt INTNUM_DMA6 DMA interrupt 6 INTNUM_WATCHDOG Watch dog interrupt INTNUM_DMA7 DMA interrupt 7 INTNUM_TWI TWI interrupt INTNUM_FRAMESYNC Frame sync interrupt INTNUM_CAPOVERFLOW Capture INTNUM_GPIOA GPIO A interrupt overflow interrupt INTNUM_GPIOB GPIO B interrupt INTNUM_MOTORFAULTA Motor INTNUM_GPIOC GPIO C interrupt Fault A interrupt INTNUM_GPIOD GPIO D interrupt INTNUM_MOTORFAULTB Motor INTNUM_GPIOE GPIO E interrupt Fault B Interrupt INTNUM_GPIOF GPIO F interrupt INTNUM_MOTORQEI Motor QEI interrupt INTNUM_GPIOG GPIO G interrupt INTNUM_MOTORPWM Motor PWM interrupt INTNUM_GPIOH GPIO H interrupt INTNUM_GPIOI GPIO I interrupt INTNUM_GPIOJ GPIO J interrupt 50 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 6.4 Interrupt Example #include adstar.h void EIRQ0ISR( ) { debugprintf( EIRQ0 Interrupt\r\n ); } int main() { boardinit(); uart_config(0, 115200, DATABITS_8, STOPBITS_1, UART_PARNONE ); set_interrupt( INTNUM_EIRQ0, EIRQ0ISR ); //External Interrupt 0 번이발생하였을때호출될 interrupt 함수를등록한다. enable_interrupt( INTNUM_EIRQ0, TRUE ); // External Interrupt 0 번을 enable 시킨다. } while(1) return 0; Advanced Digital Chips Inc. 51

Ver 1.30 adstar SDK Reference Manual 7. TIMER 7.1 set_timer BOOL set_timer(int nch, U32 ms) nch 채널 timer 를설정및동작시키는함수이다. 사용할 timer 채널과주기를결정하고 timer control register 에서 timer 동작을 enable 한다. 그리고마지막으로 timer interrupt 를 enable 한다. set_interrupt 함수로 timer interrupt 등록한후이함수를호출하면설정한주기만큼 timer interrupt 가발생한다. nch 설정할 timer 채널값. ms timer interrupt 주기. (ms 단위 ) Return Value TRUE( 1 ) or FALSE ( 0 ) 7.2 stop_timer BOOL stop_timer(int nch) nch 채널 timer 를정지시키는함수이다. nch 채널의 timer 동작을 disable 시킨다. nch 정지시킬 timer 채널값. Return Value TRUE( 1 ) or FALSE ( 0 ) 7.3 delayms BOOL delayms(u32 ms) ms 만큼 delay 가걸린다. ( 단위는 ms 이다 ) ms delay 걸리는시간단위는 ms. 52 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 Return Value TRUE( 1 ) or FALSE ( 0 ) 7.4 TIMER Example #include adstar.h void TIMER0ISR( ) { debugprintf( ==TIMER0ISR==\r\n ); } int main() { boardinit(); uart_config(0, 115200, DATABITS_8, STOPBITS_1, UART_PARNONE ); set_interrupt( INTNUM_TIMER0, TIMER0ISR ); //Timer 0 번 Interrupt 가발생하였을때호출될 interrupt 함수를등록한다. set_timer( 0, 1000); // 1 초마다 Timer0 Interrupt 가발생한다. delayms(5000); // 5 초간 delay 가발생. stop_timer( 0 ); // Timer 0 번 Interrupt 를 disable 시킨다. 더이상 Timer 가발생하지않음. while(1) return 0; } Advanced Digital Chips Inc. 53

Ver 1.30 adstar SDK Reference Manual 8. Graphic 8.1 setscreen void setscreen(screenres size, U32 screenmode) LCD 해상도와 RGB 모드를설정하는함수. LCD 출력을위해처음으로설정해주어야한다. 설정한해상도에맞게 CRT Controller 를설정한다. size LCD 의해상도값으로, 사용하려는 LCD 의해상도로설정을해주면해상도에맞게 CRT Controller 를설정한다. SCREENRES 는다음과같이정의되어있다. (LCD 마다특성이다르기때문에해상도와맞게설정하였는데도 LCD 가정상적으로나오지않을경우에는 crt.c 의 setscreen( ) 함수에서 LCD 특성에맞게값을수정해주어야한다.) Typedefenum { SCREEN_480x272 = 0, SCREEN_640x480, SCREEN_800x480, } SCREENRES; Screenmode RGB 모드를설정하는값으로, 다음과같이정의되어있다. SCREENMODE_RGB888 SCREENMODE_RGB565 없음 8.2 createframe SURFACE* createframe(u32 w, U32 h, U32 bpp) 화면에출력될 frame( 메모리영역 ) 을생성하는함수. 가로크기가 w 이고, 세로크기가 h 인이미지 또는도형을그릴수있는영역을생성한다. 화면출력을위해서한개이상의 frame 이필요하다. w 생성될 frame 의가로크기를설정한다. 54 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 h 생성될 frame 의세로크기를설정한다. bpp 생성될 frame 의 bit per pixel 값을설정한다. frame 의정보를가지고있는 SURFACE 구조체를 return 한다. SURFACE 는다음과같이정의되어있다. typedefstruct { U32 w; U32 h; U32 bpp; void* pixels; U32 pixtype; PALETTE* pal; U8 ashiftbit; U8 rshiftbit; U8 gshiftbit; U8 bshiftbit; void* reserve; } SURFACE; 8.3 setframebuffer void setframebuffer(surface* surf) 화면에보여지는 frame 을선택하는함수. createframe() 으로생성한 frame 을선택하면그 frame 이화면에보이게된다. ( single frame ) 화면출력을위해서반드시 setframebuffer(), setdoubleframebuffer() 중한가지를호출하여 frame 을선택해야한다. surf createframe() 에의해생성된 SURFACE 구조체. 없음. Advanced Digital Chips Inc. 55

Ver 1.30 adstar SDK Reference Manual 8.4 setdoubleframebuffer void setdoubleframebuffer(surface* surf, SURFACE* surf2) 화면에보여지는 frame 을두개설정하는함수. frame 을두개설정한후, getbackframe() 함수와, flip() 함수를사용하여두개의 frame 을번갈아가며화면에보여지게할수있다. ( double frame ) 두개의 frame 은편의상현재보이는 frame 을 front frame, 현재보여지지않고있는 frame 을 back frame 이라고한다. (setdoubleframebuffer() 함수를사용하기위해서는 frame 을두개생성해야한다.) 화면출력을위해서반드시 setframebuffer(), setdoubleframebuffer() 중한가지를호출하여 frame 을선택해야한다. surf surf2 createframe() 에의해생성된 SURFACE 구조체화면출력에사용될첫번째 frame 포인터이다. createframe() 에의해생성된 SURFACE 구조체화면출력에사용될두번째 frame 포인터. 없음. 8.5 setframebufferxy void setframebufferxy(surface* surf, U32 x, U32 y); 화면에보여지는 frame 의시작위치를조정하여, frame 의특정지점부터화면에보여지도록하는함수이다. frame 크기가화면보다클경우에적용할수있으며, x 와 y 값은 frame 의크기에서화면해상도의차이값을 Max 로가질수있다. ( 예 : 800*480 해상도, frame size : 1024*512 면, Max x = 224, Max y = 32 ) setframebufferxy() 함수를사용하기전에 setframebuffer() 또는 setdoublebuffer() 함수로화면에출력할 frame 선택을반드시해주어야한다. surf createframe() 에의해생성된 SURFACE 구조체. x 전체 frame 중출력할부분의시작 x 좌표. y 전체 frame 중출력할부분의시작 y 좌표. 없음. 56 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 8.6 setdrawtarget Void setdrawtarget(surface* surf) 이미지를출력하거나, 도형을그릴 frame 을선택하는함수. createframe() 으로생성된 frame 을 인자로적어주면, draw 관련함수를호출했을때해당 frame 에 draw 하게된다. surf frame 포인터. createframe() 로생성된 SURFACE 구조체 없음. 8.7 getdrawtarget SURFACE* getdrawtarget( ); 현재 drawtarget 으로지정된 frame 의포인터를불러온다. 없음. frame 포인터. createframe() 로생성된 SURFACE 구조체 8.8 getbackframe SURFACE*getbackframe() setdoubleframebuffer() 함수를사용하여 frame 두개를사용할경우, 현재화면에보여지지않고 있는 frame 의포인터를반환하는함수이다. 주로 setdrawtarget() 함수와함께사용하여현재 보여지지않고있는 frame 에 draw 하는경우에사용한다. 없음. createframe() 에의해생성된 SURFACE 구조체를 return 한다. frame 의정보를가지고있다. Advanced Digital Chips Inc. 57

Ver 1.30 adstar SDK Reference Manual 8.9 getfrontframe SURFACE*getfrontframe() setdoubleframebuffer() 함수를사용하여 frame 두개를사용할경우, 현재화면에보여지고있는 frame 의포인터를반환하는함수이다. 없음. createframe() 에의해생성된 SURFACE 구조체를 return 한다. frame 의정보를가지고있다. 8.10 flip void flip() setdoubleframebuffer() 함수를사용하여 frame 두개를사용할경우, frame 간에전환을할때 사용하는함수이다. 없음. 없음. 8.11 getscreenwidth U32 getscreenwidth( ) 현재화면의가로크기값을반환하는함수. setscreen() 함수를통해설정된 width 값이반환된다. 없음. 화면의가로크기값을반환한다. 58 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 8.12 getscreenheight U32 getscreenheight( ) 현재화면의세로크기값을반환하는함수. setscreen() 함수를통해설정된 height 값이반환된다. 없음. 화면의세로크기값을반환한다. 8.13 getscreenpitch U32 getscreenpitch() 화면의 pitch 값을반환하는함수. Setscreen() 함수를통해서설정된 pitch 값이반환된다. pitch 값은 screen width bpp 8 이다. 없음. 화면의 pitch 값을반환한다. 8.14 getscreenbpp U32 getscreenbpp(). 화면의 bpp(bit per pixel) 값을반환하는함수. setscreen() 함수를통해설정된 bpp 값이반환된다. 없음. 화면의 bpp 값을반환한다. Advanced Digital Chips Inc. 59

Ver 1.30 adstar SDK Reference Manual 8.15 drawsetrgb Void drawsetrgb(u8 sr, U8 sg, U8 sb) 선및도형의색상을설정한다. 설정된색으로선및도형이그려지게된다. sr RGB 중 R 의값. ( 0 ~ 255 ) sg RGB 중 G 의값. ( 0 ~ 255 ) sb RGB 중 B 의값. ( 0 ~ 255 ) 없음. 8.16 drawgetrgb void drawgetrgb(u8* dr, U8* dg, U8* db) 선및도형의현재설정되어있는색상을읽어온다. dr 현재설정되어있는 R 값이저장될변수. dg 현재설정되어있는 G 값이저장될변수. db 현재설정되어있는 R 값이저장될변수. 없음. 8.17 drawputpixel void drawputpixel(int x, int y, U8 r, U8 g, U8 b); 한점을찍는함수. 지정한위치에지정된색의점을찍는다. RGB 값을직접주는함수로 drawsetrgb( ) 함수의영향을받지않는다. x 점을찍은 x 좌표 y 점을찍은 y 좌표 r 점의색상중 r 값. ( 0 ~ 255 ) g 점의색상중 g 값. ( 0 ~ 255 ) 60 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 b 점의색상중 b 값. ( 0 ~ 255 ) 없음. 8.18 drawline void drawline( U32 x1, U32 y1, U32 x2, U32 y2 ) x1, y1 위치에서 x2, y2 위치로선을그린다. 선의색은 drawsetrgb( ) 함수에의해설정된색을 사용한다. x1 선의시작점의 x 좌표. y1 선의시작점의 y 좌표. x2 선의끝점의 x 좌표. y2 선의끝점의 y 좌표. Return Value 없음. 8.19 drawrect void drawrect(s16 x, S16 y, U16 w, U16 h) x, y 좌표를시작점으로가로가 w, 세로가 h 인사각형을그린다. 사각형의색은 drawsetrgb() 함수에의해설정된색을사용한다. x 사각형의시작점의 x 좌표 y 사각형의시작점의 y 좌표 w 사각형의가로길이. h 사각형의세로길이. 없음. Advanced Digital Chips Inc. 61

Ver 1.30 adstar SDK Reference Manual 8.20 drawrectfill void drawrectfill(u32 x, U32 y, U32 w, U32 h) x, y 좌표를시작점으로가로가 w, 세로가 h 인사각형을그린다. Drawrect 와다른점은안을 채운사각형을그린다. 사각형의색은 drawsetrgb() 함수에의해설정된색을사용한다. x 사각형의시작점의 x 좌표 y 사각형의시작점의 y 좌표 w 사각형의가로길이. h 사각형의세로길이. 없음. 8.21 drawround void drawround(s16 x0, S16 y0, U16 w, U16 h, U16 corner) x, y 좌표를시작점으로가로가 w, 세로가 h 인모서리가부드러운사각형을그린다. corner 값에 따라모서리의부드러운형태가조정된다. 색은 drawsetrgb() 함수에의해설정된색을사용한다. x0 사각형의시작점의 x 좌표 y0 사각형의시작점의 y 좌표 w 사각형의가로길이. h 사각형의세로길이. corner 모서리의부드러운형태조정값. 이값이클수록부드러운부분이넓어진다. 없음. 8.22 drawroundfill void drawroundfill(s16 x0, S16 y0, U16 w, U16 h, U16 corner) x, y 좌표를시작점으로가로가 w, 세로가 h 인모서리가부드러운사각형을그린다. corner 값에 따라모서리의부드러운형태가조정된다. drawround 와다르게안을채운사각형을그린다. 색은 drawsetrgb() 함수에의해설정된색을사용한다. 62 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 x0 사각형의시작점의 x 좌표 y0 사각형의시작점의 y 좌표 w 사각형의가로길이. h 사각형의세로길이. corner 모서리의부드러운형태조정값. 이값이클수록부드러운부분이넓어진다. 없음. 8.23 drawcircle void drawcircle(u32 x, U32 y, U32 rad) x, y 좌표를원점으로하고반지름이 rad 인원을그린다. 원의색은 drawsetrgb() 함수에의해 설정된색을사용한다. x y rad 원점의 x 좌표 원점의 y 좌표 원의반지름 없음. 8.24 drawcirclefill void drawcirclefill(u32 x0, U32 y0, U32 rad) x, y 좌표를원점으로하고반지름이 rad 인안을채운원을그린다. 색은 drawsetrgb() 함수에 의해설정된색을사용한다. X0 Y0 rad 원점의 x 좌표 원점의 y 좌표 원의반지름 Advanced Digital Chips Inc. 63

Ver 1.30 adstar SDK Reference Manual 없음. 8.25 drawellipse void drawellipse (S16 x0, S16 y0, U16 Xradius, U16 Yradius); x0, y0 좌표를원점으로하고 x 축반지름이 Xradius 이고 y 축반지름이 Yradius 인타원을 그린다. 색은 drawsetrgb() 함수에의해설정된색을사용한다. x0 x0 Xradius Yradius 원점의 x 좌표원점의 y 좌표타원의 x 축반지름타원의 y 축반지름 없음. 8.26 drawellipsefill void drawellipsefill (S16 x0, S16 y0, U16 Xradius, U16 Yradius); x0, y0 좌표를원점으로하고 x 축반지름이 Xradius 이고 y 축반지름이 Yradius 인안을채운 타원을그린다. 색은 drawsetrgb() 함수에의해설정된색을사용한다. x0 x0 Xradius Yradius 원점의 x 좌표원점의 y 좌표타원의 x 축반지름타원의 y 축반지름 없음. 64 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 8.27 loadbmp SURFACE* loadbmp(char* fname); Bmp 파일을 load 하는함수. bmp 파일을 load 하여메모리영역을생성 drawsurface( ) 함수를 사용하여이미지를출력할수있도록 SURFACE 구조체를생성후저장을한다. fname bmp 파일이름 이미지가정보와이미지데이터가저장된메모리영역의포인터. 8.28 loadbmpp SURFACE* loadbmpp(u8* startaddr) BMP 이미지를메모리에서 load 하는함수. Loadbmp 와다른점은파일을 load 하는것이아니고, 메모리에서 load 한다는점이다. startaddr 이미지가저장되어있는메모리주소. 이미지가정보와이미지데이터가저장된메모리영역의포인터. 8.29 loadjpg SURFACE* loadjpg(char* fname); jpg 파일을 load 하는함수. jpg 파일을 load 하여메모리영역을생성 drawsurface( ) 함수를 사용하여이미지를출력할수있도록 SURFACE 구조체를생성후저장을한다. ( 참고로 jpg image 출력을위해서는 libjpeg.a 파일을 project 에추가해주어야한다.) fname jpg 파일이름 이미지가정보와이미지데이터가저장된메모리영역의포인터. Advanced Digital Chips Inc. 65

Ver 1.30 adstar SDK Reference Manual 8.30 loadjpgp SURFACE* loadjpgp(u8* databuf, U32 len) JPG 이미지를메모리에서 load 하는함수. Loadjpg 와다른점은파일을 load 하는것이아니고, 메모리에서 load 한다는점이다. databuf 이미지가저장되어있는메모리주소. len 이미지데이터의길이 이미지가정보와이미지데이터가저장된메모리영역의포인터. 8.31 loadtga SURFACE* loadtga(char* fname) tga 파일을 load 하는함수. tga 파일을 load 하여메모리영역을생성 drawsurface( ) 함수를 사용하여이미지를출력할수있도록 SURFACE 구조체를생성후저장을한다. fnametga 파일이름 이미지가정보와이미지데이터가저장된메모리영역의포인터. 8.32 loadtgap SURFACE* loadtga(u8* startaddr) tga 이미지를메모리에서 load 하는함수. loadtga 와다른점은파일을 load 하는것이아니고, 메모리에서 load 한다는점이다. Startaddr 이미지가저장되어있는메모리주소. 이미지가정보와이미지데이터가저장된메모리영역의포인터. 66 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 8.33 loadpng SURFACE* loadpng(char* filename) png 파일을 load 하는함수. png 파일을 load 하여메모리영역을생성 drawsurface( ) 함수를 사용하여이미지를출력할수있도록 SURFACE 구조체를생성후저장을한다. ( 참고로 png image 출력을위해서는 libpng.a 와 libz.a 파일을 project 에추가해주어야한다.) filenamepng 파일이름 이미지가정보와이미지데이터가저장된메모리영역의포인터. 8.34 loadpngp SURFACE* loadpngp(u8* pngbuf, U32 datalen) png 이미지를메모리에서 load 하는함수. loadpng 와다른점은파일을 load 하는것이아니고, 메모리에서 load 한다는점이다. Pngbuf Datalen 이미지가저장되어있는메모리주소 이미지데이터길이 이미지가정보와이미지데이터가저장된메모리영역의포인터. 8.35 loadimage SURFACE*loadimage(char* fname) 이미지를 load 하는함수. bmp,jpg,tga,png 이미지에구분없이이함수로모두로드가능하다. 함수내부에서이미지를구분하여각각이미지에맞는 load 함수를호출한다. fname 이미지파일이름 이미지가정보와이미지데이터가저장된메모리영역의포인터. Advanced Digital Chips Inc. 67

Ver 1.30 adstar SDK Reference Manual 8.36 drawsurface BOOL drawsurface(surface* src_surf, int dx, int dy) 이미지를출력할때사용하는함수. src_surf load 함수에서 return 받은이미지데이터가저장된메모리영역포인터. dx 이미지가위치할 x 좌표. dy 이미지가위치할 y 좌표. TRUE or FALSE 8.37 drawsurfacerect BOOL drawsurfacerect(surface* src_surf, int dx, int dy, int sx, int sy, int w, int h) 이미지중지정된영역만출력할때사용하는함수. 이미지를지정한위치부터지정한 사이즈만큼 dx, dy 에출력한다. 이미지의일부분만출력할때사용하면된다. src_surfload 함수에서 return 받은이미지데이터가저장된메모리영역포인터. dx 이미지가위치할 x 좌표. dy 이미지가위치할 y 좌표. sx 이미지중출력할부분의시작 x 좌표. sy 이미지중출력할부분의시작 y 좌표. w 출력할이미지의가로길이. 시작 sx 값부터 w 만큼출력한다. h 출력할이미지의세로길이. 시작 sy 값부터 h 만큼출력한다. TRUE or FALSE 8.38 drawsetclipwinodw void drawsetclipwindow(int x, int y, int w, int h) 이미지가출력될수있는영역을제한한다. 좌표 x, y 부터가로 w 세로 h 영역에만이미지가 출력되고, 그외영역에는출력되지않는다. 68 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 x y w h 이미지출력을허용할영역의시작 x 좌표이미지출력을허용할영역의시작 y 좌표이미지출력을허용할영역의가로길이이미지출력을허용할영역의세로길이 없음. 8.39 drawsurfacescale BOOL drawsurfacescale(surface* src_surf, int dx, int dy, int dw, int dh) 이미지를확대또는축소해서출력한다. 원본이미지의가로세로길이보다 dw, dh 값이크면, 이미지가확대돼서출력되고, dw, dh 값이작으면, 축소돼서출력된다. src_surf load 함수에서 return 받은이미지데이터가저장된메모리영역포인터. dx 이미지가출력될 x 좌표. dy 이미지가출력될 y 좌표. dw 출력될이미지의가로길이, 원본이미지가로길이보다이값이크면 가로길이가확대되어출력되고, 작으면가로길이가축소되어출력된다. dh 출력될이미지의세로길이, 원본이미지세로길이보다이값이크면 세로길이가확대되고, 작으면세로길이가축소되어출력된다. TRUE or FALSE 8.40 drawsurfacescalerect BOOL drawsurfacescalerect(surface* src_surf, int dx, int dy, int dw, int dh, int sx, int sy, int sw, int sh) drawsurfacescale() 함수와 drawrect() 함수를합쳐놓은함수이다. 이미지의특정부분을확대 또는축소하여출력한다. 이미지의 (sx,sy) 부터 sw,sh 영역의이미지를 dx,dy 좌표에 dw, dh 크기로출력한다. sw,sh 값보다 dw, dh 값이크면확대, 작으면축소이다. src_surf load 함수에서 return 받은이미지데이터가저장된메모리영역포인터. Advanced Digital Chips Inc. 69

Ver 1.30 adstar SDK Reference Manual dx 이미지가출력될 x 좌표 dy 이미지가출력될 y 좌표 dw 출력될이미지의가로길이, 출력할부분이미지의가로길이보다크면 가로로확대되고, 작으면가로로축소된다. dh 출력될이미지의세로길이, 출력할부분이미지의세로길이보다크면 세로로확대되고, 작으면세로로축소된다. sx 원본이미지중출력할부분의시작 x 좌표. sy 원본이미지중출력할부분의시작 y 좌표 sw 출력할이미지의가로길이. 시작 sx 값부터 sw 만큼출력한다 sh 출력할이미지의세로길이. 시작 sy 값부터 sh 만큼출력한다 TRUE or FALSE 8.41 releasesurface void releasesurface(surface* surf); 이미지 load 함수에의해생성된메모리영역을해제한다. 메모리가제한적이기때문에사용하지 않는이미지에대해서 releasesurface( ) 함수로메모리해제해주는것이좋다. surf load 함수에서 return 받은이미지데이터가저장된메모리영역포인터.. 없음. 8.42 createsurface_from SURFACE* createsurface_from(surface* src, U32 option); 이미지의복사본을만든다. option 을통해좌 / 우 90 도회전, 180 도회전, 좌우 / 상하뒤집은복사본을만들수있다. 이미지를회전하여출력할경우이미지를 load 한후에 createsurface_ from 함수를사용하여회전한복사본을만들어출력하면된다. 회전과관련된 option 은다음과같으며, 원본그대로의복사본을원하면, option 값으로 0 을적어주면된다. 복사본이생성되는것으로원본이미지는그대로사용할수있다. #define PIVOT_RIGHT (1) #define PIVOT_LEFT (1<<1) 70 Advanced Digital Chips Inc.

adstar SDK Reference Manual Ver 1.30 #define PIVOT_180 (1<<2) #define PIVOT_VFLIP (1<<4) #define PIVOT_HFLIP (1<<5) src option 복사할 surface 의원본 source. 복사본을만들면서적용할 option. 복사본이미지정보와데이터가저장된메모리영역의포인터. Example SURFACE* surface = loadbmp( test.bmp ); SURFACE* surface_right =createsurface_from(surface, PIVOT_RIGHT) // 원본이미지를오른쪽 90 도회전한복사본이미지를만든다. SURFACE* surface_left =createsurface_from(surface, PIVOT_LEFT) // 원본이미지를왼쪽 90 도회전한복사본이미지를만든다. SURFACE* surface_right =createsurface_from(surface, PIVOT_180) // 원본이미지를 180 도회전한복사본이미지를만든다. SURFACE* surface_right =createsurface_from(surface, PIVOT_VFLIP) // 원본이미지를상하뒤집은복사본이미지를만든다. SURFACE* surface_right =createsurface_from(surface, PIVOT_HFLIP) // 원본이미지를좌우뒤집은복사본이미지를만든다. drawsurface(surface,0,0); drawsurface(surface_right,200,0); drawsurface(surface_left,0,200);... Advanced Digital Chips Inc. 71