사이트맵 보기

활용사례

[이벤트 - 디버깅 경험 수상작] Bit Breakpoint를 활용한 디버깅 방법

작성일

작성자 관리자

조회수 6299

첨부파일
* 문제점 및 증상

개발 폰이 데이터 케이블이 연결된 상태에서 부팅이 되면 Idle 진입직전에 LCD 백화가 나는 문제가 발생하였습니다.



* TRACE32로의 접근 방법(디버깅)

백화가 나고 난 이후에 브레이크를 걸고 하드웨어 개발자에게 LCD 관련 하드웨어 상태를 점검 요청하였더니 해당 부분에서 LCD_RESET/ 핀에 리셋이 걸려 있었습니다. LCD_RESET 포트에 해당하는 GPIO_OUT 레지스터의 해당 비트에 Beta Breakpoint를 걸고 문제의 포트를 LOW_SIGNAL을 출력하는 범인을 기다려 보았습니다.



`1' 로 출력되던 해당 비트를 `0'으로 설정하는 부분은 USB INIT 쪽이었는데, USB가 연결되었을 경우 USB 관련 포트 값을 설정하면서 같은 GPIO 그룹에 속해있는 LCD_RESET 포트를 같이 출력하였습니다.



코드 분석결과 USB 포트 출력 전 GPIO_OUT 의 해당되는 변수 값이 이미 클리어 되어 있는 것을 보고서 해당 버퍼가 위치한 RAM 번지에 Conditional Write Break를 걸어 원인을 확인할 수 있었습니다. 원인은 소스에 GPIO 해당 변수의 초기화 루틴이었는데 무조건 버퍼 값을 특정 값으로 초기화하게 되어 있었기 때문이었고, 해당 코드를 수정하여 결국 문제를 해결할 수 있었습니다.



* 결론

TRACE32의 강점인 Bit Breakpoint를 이용해 실질적인 디버깅 방법으로 문제점을 빠르게 해결하였습니다.
고객문의 기술지원/
데모/
SW요청
031-627-
3116