소프트웨어의 버그를 찾아내는 디버깅 프로브
상태바
소프트웨어의 버그를 찾아내는 디버깅 프로브
  • 정환용 기자
  • 승인 2018.08.13 10:20
  • 댓글 0
이 기사를 공유합니다

[테크월드=정환용 기자] 디버깅 프로브는 임베디드 소프트웨어의 크로스(Cross) 개발환경에서 개발 PC와 타깃의 다리 역할을 하며 개발되는 소프트웨어의 버그를 찾아내는 주요 기능을 가지고 있다. 현재 디버깅 프로브는 다양한 기능의 여러 종류가 출시돼 사용되고 있으며, 이 중 개발되는 소프트웨어의 복잡도, 난이도 등을 고려해 개발되는 시스템에 가장 적합한 디버깅 프로브를 사용하게 된다. 이 중 IAR 시스템즈에서 제공하고 있는 다양한 디버깅 프로브의 기능 소개와 장비의 테스트, 관리에 대해 알아보자.

 

I-jet

I-jet은 USB 인터페이스를 이용해 칩의 JTAG/SWD 포트와 PC를 연결해 주는 작고 슬림한 인 서킷 디버거다. IAR 임베디드 워크벤치와 완벽하게 플러그 앤 플레이(Plug and Play)로 호환되며, 고속 디버깅(High-Speed Debugging)과 풀파워 프로파일링(Full Power Profiling)이 가능하다. 또한, 파워 디버깅(Power Debugging)과 더불어 전류(Current), 전압(Voltage)을 측정할 수 있는 ‘I-Scope’ 제품과 결합해 확장 사용할 수 있다.

I-jet은 전면부에 MIPI-20 규격의 커넥터를 연결할 수 있고, MIPI-10 또는 ARM-20 규격의 커넥터와 연결할 수 있도록 하는 커넥터와 어댑터를 제공한다. IAR Embedded Workbench for ARM의 C-SPY에서 I-jet을 이용해 파워 디버깅을 할 수 있다.

 

주요 기능
• ARM7, ARM9, ARM11과 코어텍스-M/R/A 코어 지원
• IAR 임베디드 워크벤치 IDE와 호환(Embedded Workbench for ARM 버전 6.30.8 이상)
• Hi-speed USB 2.0 지원(480Mbps)
• USB 전원 사용으로 별도 전원이 필요 없음
• 과부하 보호 기능, Target power 400mA까지 공급
• ~200μA Resolution(at 200kHz)으로 소비전력 측정
• JTAG and SWD(Serial Wire Debug) clocks: 32MHz까지 지원
• UART 포트를 이용한 SW V(Serial Wire Viewer), 맨체스터 인코딩(Manchester Encoding) 지원
• SWO speeds: 60MHz까지 지원
• 다운로드 속도: 1MB/s까지 지원
• 자동 코어 인식
• 자동 체인 검색(Automatic Chain Detection)과 그래픽 디스플레이(Graphical Display)를 통한 다수의 JTAG 기기 지원
• JTAG Adaptive Clocking(RTCK) 지원
• 자동 JTAG/SWD 인식
• JTAG 전원 측정, 모니터링 기능 지원
• 1.65~5V까지 전원 공급
• ARM 코어텍스-M0/M0+에서 MTB(Micro Trace Buffer) 지원

• 프로그램 수행 동안 전류 소비와 소스 코드 수행의 상관관계를 알 수 있다.
• 소스 코드 디버깅과 전류 소비 데이터를 정적, 동적으로 다른 화면에서 비교할 수 있다.
• 애플리케이션의 전류 소비 프로파일 뷰를 제공한다.

 

I-scope

I-scope는 I-jet 또는 I-jet Trace에 연결되며, 보드 타깃 특정 부분의 전류와 전압을 측정할 수 있게 해 주는 작은 프로브다. 측정은 전원 공급원과 관계없이 타깃 보드에 설계된 모든 지점에서 할 수 있으며, IAR Embedded Workbench for ARM의 C-SPY 디버거에 의해 실시간으로 표시될 수 있다.

 

주요 기능
• I-scope는 전류와 전압을 측정하고 I-jet으로 정보를 전달한다, 이때 실행중인 응용 프로그램의 프로그램 카운터 데이터를 동기화한다.
• 데이터는 실시간으로 그래프화하고 프로파일링할 수 있다. 그리고 IAR Embedded Workbench for ARM에서 C-SPY 디버거를 사용해 분석할 수 있다.
• 전류 감지는 타깃 보드에 션트 저항을 통해 두 개의 차동 전류 측정 리드를 연결해 수행된다.

전력 분석
• 개별 함수와 주변 장치의 전력 소비를 파악
• 전류 스파이크를 일으키는 I/O 동작 식별
• 저전력 모드 진단
• MCU Clock과 Power Saving 분석
• 잘못된 하드웨어 설정 파악
• 원치 않는 전류 스파이크를 식별하고 제거해 RF 방출을 감소
• 다양한 MCU들의 Sleep 모드에서 배터리 소모 측정과 비교

 

I-jet Trace

I-jet Trace는 디버깅과 추적(Trace) 기능을 가지고 있는 고급 기능의 프로브다. 대용량의 트레이스 메모리가 있으며 USB 3.0 지원으로 고속 통신을 할 수 있다. I-scope와 연결해 전류 소비량과 전압의 측정값과 코드와의 상관관계를 확인할 수 있는 파워 디버깅 기능을 확장할 수 있다.

I-jet Trace는 전면부에 MIPI-20 규격의 커넥터를 연결할 수 있고, MIPI-10 또는 ARM-20 규격의 커넥터와 연결할 수 있도록 하는 커넥터와 어댑터를 제공한다. ETM Trace 기능은 MIPI-20 규격 연결에서만 가능하며, MIPI-10과 ARM-20 연결에서는 JTAG/SWD/SWO 연결의 디버깅을 할 수 있다.

 

주요 기능
• ARM 코어텍스-M 코어 지원
• IAR Embedded Workbench IDE(for ARM ver 6.30.8 ↑)와 호환
• 고속 USB 3.0 지원(5Gbps)
• USB 2.0 지원(480Mbps)
• USB 전원 사용으로 별도 전원이 필요 없음
• 과부하 보호 기능, Target power 400mA까지 공급
• 자동 코어 인식 기능
• JTAG and SWD clocks : 100MHz까지 지원
• Manchester, UART 사용하는 SWO 지원, 200Mbps 이상
• 자동 체인 탐색과 그래픽 디스플레이를 통한 다수의 JTAG 기기 지원
• JTAG Adaptive Clocking (RTCK) 지원
• 자동 JTAG/SWD 인식
• JTAG 전원 측정과 모니터링 기능 지원
• ~160μA 해상도(at 200kHz)로 소비전력 측정 가능
• ARM 코어텍스-M0/M0+에서 MTB 지원
• ETM Trace clocks : 최대 150MHz
• 메모리 수용 : 32M samples
• 타이밍 분석을 위한 CPU 사이클 정확도의 64비트 타임 스탬프

 

In-circuit debugging probes 사용

앞서 설명한 IAR Systems의 인 서킷 디버깅 프로브를 사용하기 위한 프로젝트 설정 방법이다. 먼저 프로젝트 옵션의 Debugger 카테고리 내 Setup 탭에서 Driver 설정 항목을 I-jet/JTAGjet으로 변경한다.

I-jet/JTAGjet 카테고리 내 Setup 탭에서 Reset 방법, Target power 설정 등 디버거 장비의 일반적인 설정을 할 수 있다. JTAG/SWD 탭에서는 디버거 장비와 타깃과의 연결 관련한 여러 설정을 할 수 있고, Trace 탭에서는 SWO 관련 설정과 추적 데이터 수집에 대한 설정을 할 수 있다.

 

EmuDiag 활용
‘EmuDiag’는 I-jet, I-jet Trace, JTAGjet 등 IAR 시스템즈에서 제공하는 에뮬레이터의 펌웨어 업그레이드, 연결 테스트와 상태 확인을 할 수 있는 프로그램이다. EmuDiag는 기본적으로 IAR Embedded Workbench의 기본 설치 프로그램으로 설치 항목에 자동 포함돼 설치된다.

EmuDiag 실행은 Embedded Workbench의 프로젝트 옵션에서 사용 디버거 장비를 IAR 제품으로 설정한 후, 나타나는 디버거 이름의 메뉴의 EmuDiag 항목을 선택하면 된다. 또는 EmuDiag가 설치된 경로에서 직접 프로그램을 수행한다.

IAR Embedded Workbench가 설치된 폴더 → arm → bin → jet → EmuDiag.exe

경로 예
C:Program Files (x86)IAR SystemsEmbedded Workbench x.xarmbinjetEmuDiag.exe

EmuDiag 실행 후 에뮬레이터 장비와 연결을 설정한다.

‘Connect to an Emulator Automatically’를 선택하고 Next 버튼을 클릭한다. 연결이 완료되면 화면에서 I-jet의 연결 상태, 버전 등 다양한 정보를 확인할 수 있다.

 

장비 테스트와 JTAG 연결 테스트
EmuDiag는 자동화된 여러 테스트를 지원한다. 화면 오른 쪽 중간 부분의 테스트 항목 버튼을 눌러 테스트를 수행한다.

▲Test Connection - 연결된 에뮬레이터 장비가 정상 동작하는지 지속적으로 읽기/쓰기를 반복하며 테스트를 한다.
▲Test JTAG - 에뮬레이터와 JTAG 연결된 디바이스의 정보를 확인할 수 있고, 연결 시험과 연결 관련 여러 설정을 할 수 있다.
▲JTAG Cmd - JTAG 관련 명령어를 수동으로 입력하고 수행할 수 있다.
▲I-jet Power - I-jet 장비로부터 공급되는 전원의 정보를 확인할 수 있고, 전원 공급의 On/Off를 수동으로 제어할 수 있다.

 

펌웨어 업데이트
EmuDiag를 이용해 연결된 에뮬레이터의 펌웨어를 업데이트할 수 있다. 화면 오른쪽의 ‘Update Firmware’ 버튼을 누르면 된다.

Update Firmware 버튼을 누르면 Firmware Upgrade 파일(.upg)을 선택할 수 있는 창이 뜬다. Firmware upgrade 파일은 <해당 디바이스 이름의 폴더 → 버전명 폴더 → 디바이스 이름.upg> 경로에서 찾을 수 있다.

파일을 선택한 후 열기 버튼을 누르면 EmuDiag에서 자동으로 펌웨어를 업데이트한다. 업데이트가 완료되면 다음과 같은 팝업창을 확인할 수 있다. 업데이트 중 장비를 PC에서 분리하거나 PC를 강제 종료하면 고장의 원인이 될 수 있으니 업데이트가 끝날 때까지는 반드시 PC와 연결 상태를 유지하자.

 

맺음말
IAR Embedded Workbench와 호환되는 디버깅 프로브의 기능과 사용법, 관리방법 등을 알아봤다. 개발 중인 소프트웨어에 적합한 프로브를 선택하고, 다양한 디버깅 기능을 활용해 개발되는 코드의 품질을 향상시켜 보자.