사이트맵 보기

활용사례

[디버깅사례-휴대폰] Serial Download시 동작 안하는 Target

작성일

작성자 관리자

조회수 5003

첨부파일


1. 증 상:
휴대폰 개발 시 Compile 된 이미지를 타깃 메모리에 Serial Cable로 다운로드 하는 도중에 타깃이 간혹 아무 동작을 하지 않는 상황(Mal-function, Dead lock) 발생함

2. 사용장비와 고객 개발환경
TRACE32-PowerDebug와 ARM9-License Module
ARM926EJ Core, Nucleus OS

3. 해 결 절 차:
1) 먼저 증상을 재현하여 TRACE32 S/W에서 본 결과도 마찬가지로 랜덤하게 Exception이 발생함(아래 그림)

* ARM Architecture상 Exception 발생한 위치를 Link Register(R14)에 의해서 참조가 가능하나 랜덤하게 발생하는 경우에는 큰 도움이 되지 못함

2) 프로그램의 어떻게 흘러 왔는지 확인하기 위해서 TRACE32-PowerDebug(JTAG)에서도 Trace가 가능한 CTS(Context Tracking System)을 통해 Back Step을 통해 프로그램 수행 내역을 추적 하기로 함

* 상기와 같이 추적 결과 Context Switching할 때 새로운 task의 stack에서 TCB address와 SPSR, CPSR을 가져오도록 하는데 이미 이 Data가 깨져 있는 상황을 확인함


3) 어떤 원인에 의해서 Data가 깨져 보이는지 찾기 위해 TRACE 받은 결과 Find 기능을 통해 원인 Code를 찾았고 Task8이 수행 중에 Stack이 Overflow 나서 죽는 현상이 발생하였다는 것을 찾게 되어 문제 해결함


4. 결 론: Code의 수행 내역을 History로 저장하여 Back trace가 가능한 기능인 CTS 기능 및 Find 기능을 통하여 문제의 원인을 빠른 시간 내에 찾을 수 있었고 특히 Stack Overflow 및 Stack이 깨지는 현상, 메모리가 깨지는 현상과 같은 Critical한 디버깅에 유용하다는 것을 알 수 있음.

5. 소요시간: Bug 분석과 S/W Patch까지 소요시간: 2시간

고객문의 기술지원/
데모/
SW요청
031-627-
3116