사이트맵 보기

활용사례

[디버깅사례-휴대폰] 녹화영상 재생중 Noise

작성일

작성자 관리자

조회수 4714

첨부파일


1. 증 상:
휴대폰의 영상 녹화 내용을 재생하면 휴대폰 화면에 Noise 발생하여 개발 진행(Release)을 못하고 있는 상황

2. 증 상 재 현:
캠코더 기능 녹화 버튼 선택 -> 키패드에 무작위로 키를 입력한 후 -> 녹화 내용 재생 -> 재생 중간에 녹화 내용과 무관한 녹색화면(Noise)이 간헐적으로 발생함 확인

3. 사용장비와 고객 개발환경
TRACE32-PowerTrace과 Auto Focus용 Preprocessor, ARM9-License Module ARM926EJS

4. 해 결 절 차:
먼저 상기 증상을 재현하고 재현되었을 때 그때까지의 Program 실행 내역을 저장하여 분석함

1) 촬영소자(CCD)를 통해 첫 Data를 가져오는 프로그램 Line에 Break Point(Trace “ON”) 설정
    

2) 영상 촬영을 완료하는 프로그램 Line에 Break Point(Trace “OFF”) 설정
    

3) Program의 실행내역 분석
    - 키패드에서 Key 입력 시 Trace 받은 Data에는 Interrupt(IRQ)라고 표현이 되고 임의의 번지로 Branch가 이루어졌음.
    - IRQ(interrupt)이전의 레지스터 값과 이후의 레지스터 값의 변동은 없었으므로 개발자의 프로그램에 의한 IRQ 영향은
      아니었음
    - 메모리 특정 주소(예: 0x24000004)에 영상 Data가 적히는 구간 파악하고 이 주소에 Read한 내역을 정렬해서 확인해
      보니 일시적으로 “0” 값을 읽어오는 구간이 있음을 확인함
    

    - 0x24000004번지(가칭)부터 0값이 read되고 있는 부분은 문제가 있으나 ARM core 자체의 Exception 상황은 아닌 것으로
      판단하여 Chip 문제 또는 신호의 공유 부분으로 판단함

4) 0x24000004번지부터 값이 다른 Device들하고 공유하는지 확인
    - Memory 내의 4개의 Bank가 LCD 이외 다른 Device와 공유함을 확인하고 Write 기록을 모두 Trace하였고 회로상의
      Chip Select 공유 핀 확인

5) 결국 카메라 데이터가 중간에 LCD Display Data로 Write 되는 부분 발견하여 문제의 근본원인을 밝혀냄

5. 결 론:
Key 가 눌려지게 되면 인터럽트가 먼저 발생되고 MMI에서는 Back Light를 On하기 위해서, LCD display device를 선택하는 과정에서 0x24000004번지가 카메라의 데이터가 아닌 LCD 데이터의 값을 Read 하게 되는 과정에서 초기 0x0 값의 데이터 가 읽혀지게 되어, 다음 프레임(0x24000004번지가 카메라 데이터가 될 때)을 담을 때까지 Noise가 발생하게 된 Case로서 LCD가 계속 켜있는 촬영 상황에서는 Access 못하게끔 코드 수정하였고 이후 문제 발생하지 않음을 확인함

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

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