The IAR C-SPY Debugger 1. C-SPY 소개 IAR C-SPY 디버거와일반적인디버깅, 특히 C-SPY 에관련된개념을소개합니다. 우선통합환경, 일반적인 C-SPY 디버거기능, 그리고 RTOS 인식에대해살펴봅니다. 1.1 통합환경 C-SPY 는임베디드애플리케이션을위한고급언어디버거입니다. IAR 시스템즈컴파일러와어셈블러사용을위해설계되었습니다. 그리고 IDE 에완전히통합되어동일한응용프로그램내에서개발및디버깅기능을제공합니다. 이것은다음과같은내용을가능케합니다. 디버깅하는동안편집. 디버그세션동안디버깅을제어하는데사용되는동일한소스코드윈도우에서직접수정하실수있습니다. 변경된내용은다음의프로젝트재빌드시적용됩니다. 개발주기동안어느위치에도중단점 (breakpoint) 을설정할수있습니다. 디버거가실행되지않은경우에도중단점정의내용을수정하고검사할수있습니다. 임베디드워크벤치의워크스페이스에열려있는모든창은 C-SPY 디버거를시작할때열린상태를유지할것입니다. 또한, C-SPY 전용윈도우들도열립니다. 1.2 일반적인 C-SPY 디버거특징 IAR 시스템즈는전체 toolchain 을제공하기때문에컴파일러와링커에서생성된결과물은디버거에대한광범위한디버그정보를포함할수있으며, 이는좋은디버깅을제공하기위해서입니다. 소스및디스어셈블리 (disassembly) 수준의디버깅 C 또는 C++ 및어셈블러소스코드에대해 C-SPY 는필요에따라소스와디스어셈블리디버깅사이를전환할수있습니다 함수호출수준에서단일스테핑전통디버거에비교해서, 소스레벨스테핑에대해최고의세분화는한라인씩스테핑하는것입니다. C-SPY 는스탭포인트로모든명령문과함수호출을식별하여미세한수준의컨트롤을제공합니다.
코드및데이터중단점 C-SPY 중단점시스템은특별히관심이있는위치에중지할수있도록디버깅을하는응용프로그램에다양한종류의중단점을설정할수있습니다. 예를들어, 프로그램로직이올바른지여부를조사하기위해또는언제어떻게데이터가변하는지를조사하려중단점을설정합니다. 변수와표현식모니터링변수와표현식을위한기능에대해다양하게선택하실수있습니다. 쉽게지속적으로또는필요에따라변수와표현식의지정된세트의값을모니터링할수있습니다. 또한지역변수, 정적변수등을모니터링할수있습니다. 컨테이너인식 C-SPY 에서응용프로그램을실행하면 STL 목록및벡터와같은라이브러리데이터유형을볼수있습니다. C++ STL 컨테이너작업을할때아주좋은전체적인개요와디버깅기회를제공합니다 호출스택정보컴파일러는다양한호출스택정보를생성합니다. 디버거가어떤런타임제약없이프로그램카운터가있던어느곳이든지함수호출에대한완전한스택을보여줍니다. 호출스택에서함수를선택할수있고, 각함수에있어지역변수와사용가능한레지스터에대한유효한정보를얻을수있습니다. 강력한매크로시스템 C-SPY 는수행할작업의복잡한세트를정의할수있도록하는강력한내부매크로시스템을포함하고있습니다. 1.3 RTOS 인식 C-SPY 는실시간 OS 인식디버깅을지원합니다. 다음의운영체제를지원하고있습니다 : AVIX-RT CMX-RTX CMX-Tiny+ eforce mc3/compact esystech X realtime kernel Express Logic ThreadX FreeRTOS, OpenRTOS, and SafeRTOS Freescale MQX Micrium uc/os-ii Micro Digital SMX MISPO NORTi OSEK (ORTI)
RTXC Quadros Segger embos unicoi Fusion. C-SPY RTOS 인식플러그인모듈은 RTOS 를기반으로구축된응용프로그램을통해높은수준의제어및가시성을제공합니다. Task list, queues, semaphores, mailboxes, and 다양한 RTOS 시스템변수들과같은 RTOS 특정항목을표시합니다. 로드된플러그인은디버그세션이시작될때 (RTOS 가응용프로그램과연결되어제공 ) 자체메뉴, 윈도우세트, 그리고버튼을추가합니다. 2. 디버거개념 (Debugger concepts) 일반적인디버깅과특화된 C-SPY 와관련된개념과용어를소개합니다. 2.1 C-SPY 및대상시스템 소프트웨어대상시스템또는하드웨어대상시스템중하나를디버깅하기위해 C-SPY 를 사용할수있습니다. 다음그림은 C-SPY 와가능한대상시스템의개요를보여줍니다. 그림 1 : C-SPY 및대상시스템
2.2 디버거 예를들어 C-SPY 와같은디버거는대상시스템에응용프로그램을디버깅하기위해 사용하는프로그램입니다. 2.3 TARGET 시스템대상시스템은응용프로그램을디버깅할때응용프로그램이실행되는시스템입니다. 대상시스템은평가보드또는자신의하드웨어설계보드중하나의하드웨어로구성할수있습니다. 또한소프트웨어에의해완전히또는부분적으로시뮬레이션할수있습니다. 대상시스템의각유형들은전용 C-SPY 드라이버가필요합니다. 2.4 응용프로그램 사용자응용프로그램이란사용자가개발한소프트웨어이며, C-SPY 로디버깅을원하는 소프트웨어입니다. 2.5 C-SPY 디버거시스템 C-SPY 는디버거기능의기본세트을제공하는일반적인부분과대상특정백엔드 (back end) 부분으로구성되어있습니다. 백엔드는두가지구성요소로구성됩니다 : 프로세서모듈 마이크로컨트롤러의속성으로정의되는모든마이크로컨트롤러그리고 C-SPY 드라이버입니다. C-SPY 드라이버는대상시스템과의통신과제어기능을제공하는부분입니다. 예를들어, 특수중단점과같은대상시스템에서제공하는기능에대해드라이버는사용자인터페이스도제공합니다 - 메뉴, 윈도우, 그리고대화상자. 2.6 C-SPY PLUGIN 모듈 C-SPY 는플러그인모듈의형태로디버거에추가기능을구현하기위해오픈 SDK 방식의모듈형아키텍처로설계되어있습니다. 이모듈들은완벽하게 IDE 에통합되어있습니다. 플러그인모듈은 IAR 시스템즈에서제공하거나또는타사제조사에서제공되기도합니다. 이러한모듈의예는다음과같습니다 : IDE 에통합되어있는코드커버리지 (Code Coverage) 특정디버그시스템을이용하여디버깅을하기위한다양한 C-SPY 드라이버. 실시간 OS 인식디버깅에대하여지원하도록제공되는 RTOS 플러그인모듈 주변장치시뮬레이션모듈은 C-SPY 에서주변장치를시뮬레이션합니다. 이러한플러그인모듈은 IAR 시스템즈에서제공되지않지만타사공급업체에서개발하고배포됩니다.
IAR visualstate 와 IAR 임베디드워크벤치를연결하는 C-SPYLink 는일반 C 수준 심볼릭디버깅을포함한 C-SPY 에서직접적으로진정한높은수준의상태머신디버깅을 제공합니다. 2.7 C-SPY 드라이버개요이가이드를쓰고있는현재에서, ARM 코어를위한 IAR C-SPY 디버거는다음의대상시스템과평가보드용드라이버를사용할수있습니다. Simulator I-jet in-circuit debugging probe / JTAGjet debug probes J-Link / J-Trace JTAG/SWD probes JTAGjet probes RDI (Remote Debug Interface) Macraigor JTAG probes GDB Server ST-LINK JTAG/SWD probe (for ST Cortex-M devices only) TI Stellaris JTAG/SWD interface using FTDI or ICDI (for Stellaris Cortex devices only) TI XDS100 JTAG interface P&E Microcomputer Systems. Angel debug monitor IAR ROM-monitor for Analog Devices ADuC7xxx boards, and IAR Kickstart Card for Philips LPC210x. 참고 : IAR 임베디드워크벤치와함께제공된드라이버뿐아니라, 타사공급업체가제공하는디버거드라이버를로드할수있습니다 2.8 C-SPY 드라이버의차이점 이표는시뮬레이터, I-jet/JTAGjet, J-Link/J-Trace, 그리고 ST-LINK 사이의주요차이점을 요약한것입니다 : Feature I-jet/ JTAGjet J-Link/ J-Trace ST-LINKand ST-LINK Code breakpoints x x x x -- Comment, for I-jet/JTAGjet, J-Link Data breakpoints x x x x -- Interrupt logging x x x x Cortex with SWD/SWO Data logging x x x x Cortex with SWD/SWO Call stack trace -- -- x -- ETM/ETB trace 필요.
Power logging -- x x -- Cortex-M device with SWO and a J-Link or J-Link Ultra debug probe 필요. Event logging -- x x x Cortex with SWD/SWO, ITM channel 사용 Live watch -- x x x Cortex devices 지원. ARM7/9 devices 에서 Live watch 는응용프로그램에서 DCC handler 를추가하여야사용하실수 있습니다. Cycle counter x x x x Cortex-M devices 만지원 Code coverage x x x x J-Trace and J-link with ETB 지원. Cortex-M devices 에대해 I-jet, J-Link and ST-LINK with SWO 로부분적으로코드커버리지 Data coverage x -- -- -- -- Function x x x x SWD/SWO interface 또는 ETM/ETB trace /instruction profiler 지원. 필요. Trace x -- x -- ETM/ETB trace 필요. 표 1 : 드라이버의차이, I-jet/JTAGjet, J-Link/J-Trace 와 ST-LINK 3. IAR C-SPY 시뮬레이터 C-SPY 시뮬레이터는소프트웨어적으로완전하게대상프로세서의기능을시뮬레이션합니다. 이는하드웨어가준비되기전에프로그램로직을디버깅할수있다는것을의미합니다. 하드웨어가필요하지않기때문에또한많은응용프로그램에대해가장비용적으로효율적인솔루션입니다 3.1 시뮬레이터기능 C-SPY 의일반적인기능뿐만아니라, 시뮬레이터는다음의기능도제공합니다 : Instruction-level 시뮬레이션 메모리구성및검증 Interrupt 시뮬레이션 주변장치시뮬레이션 ( 즉각적인 breakpoint 와연계된 C-SPY macro system 을이용 ) 4. C-SPY 하드웨어디버거드라이버 C-SPY 는인터페이스로써 C-SPY 하드웨어디버거드라이버를사용하여하드웨어디버거에연결할수있습니다. 디버깅세션이시작되면응용프로그램이자동으로다운로드되고대상메모리에프로그램됩니다. 필요한경우이기능을해제할수있습니다.
4.1 통신개요많은 ARM core 들은내장, 온칩디버그를지원합니다. 하드웨어디버거로직이코어내에실장되어있기때문에디버그프로브이외의디버깅작업을위해추가하드웨어가필요하지않습니다. 디버그프로브또는에뮬레이터와대상시스템의개요 대부분의대상시스템은에뮬레이터, 디버그프로브또는호스트컴퓨터와평가보드사이에 연결된디버그어댑터로구성됩니다 : 그림 2 : 디버그프로브또는에뮬레이터와 C-SPY 드라이버통신개요 USB 를연결하여사용하는경우, USB 포트를통해프로브를사용하기전에특정 USB 드라이버가설치되어있어야합니다. ARM 용 IAR 임베디드워크벤치설치미디어에서 드라이버를찾을수있습니다. 4.2 하드웨어설치하드웨어설치에대한자세한내용은설명서와제조업체에서제공하는대상시스템과동봉된문서를참조하십시오. 다음의전원인가순서는대상보드, 에뮬레이터또는디버그프로브, 그리고 C-SPY 간의적절한통신을위해권장합니다 :
1 대상보드에프로브를연결합니다. 2 디버그프로브에 USB 케이블을연결합니다. 3 이 USB 를통해전원이공급되지않은경우디버그프로브전원을인가합니다. 4 대상보드에디버그프로브가전원을제공되지못하는경우대상보드에전원을인가합니다. 5 C-SPY 디버깅세션을시작합니다. 4.3 USB 드라이버설치 USB 드라이버도필요합니다. 어떤경우에는이드라이버가자동으로설치되지만일부 프로브는수동으로설치해야합니다. I-jet 와 JTAGjet USB 드라이버설치 USB 포트를통해 I-jet 또는 JTAGjet 인터페이스를사용하기전에적절한 USB 드라이버가설치되어있어야합니다. I-jet 과 JTAGjet 프로브를컴퓨터에연결하려면 USB 케이블을사용하십시오. 윈도우 7 1 Windows 장치관리자를시작합니다. 2 다른장치를선택하고, JTAGjet 에서마우스오른쪽버튼을클릭하고드라이버소프트웨어업데이트를선택합니다. 3 드라이버소프트웨어를내컴퓨터에서찾아보기를클릭하고로 arm\drivers\jet\usb 로이동합니다. 4 다음을클릭한다음설치합니다. 윈도우 7 이전 I-jet 또는 JTAGjet 인터페이스와컴퓨터가처음으로연결되면윈도우는대화상자를열고 USB 드라이버가위치한곳을묻습니다. 드라이버는제품이설치된 arm\drivers\jet\usb 에서찾을수있습니다. 초기설정이완료되면, 다시드라이버를설치할필요가없습니다.