사이트맵 보기

뉴스레터

TRACE32 – uTRACE를 이용한 uClinux 디버깅

작성일

작성자 관리자

조회수 2992

첨부파일


TRACE32 – uTRACE를 이용한 uClinux 디버깅


TRACE32는 Multitask 환경에서 Real Time Operating System을 지원하고 있습니다. TRACE32의 소프트웨어 (PowerView) 에서는 uClinux kernel 디버깅을 위한 환경이 설정되어 있으며 Process list, Process information, Perfomance analysis 데이터 등을 간단히 확인하며 디버깅 할 수 있습니다.

Printk()출력과 Console Driver를 위한 Terminal Emulation

TRACE32 - PowerView에서 Terminal emulation 창을 띄워 볼 수 있도록 지원하고 있습니다. 이 Terminal 통신 Interface는 Serial interface routines을 대신하여 이용할 수 있습니다. 이 기능은 타겟 리소스 또는 Serial 장치 없이 빠른 속도로 데이터 loss없이 통신할 수 있습니다. 이를 이용해 각종 디버그 메시지를 출력할 수 있으며 TRACE32에서는 console/shell 통신 채널의 Serial driver를 제공합니다. 무엇보다 어떤 하드웨어 interface없이 타겟을 컨트롤 할 수 있다는 것이 장점입니다.


[Terminal 창을 통한 Printk() 출력]


[ Console/Shell]

Real Time, uCLinux System Resources

TRACE32에서는 uCLinux의 system resources를 멈추지 않고 볼 수 있습니다. 아래 그림과 같이 shell 명령어 “ps”처럼 process정보를 보여줍니다. 이 기능은 uClinux image에 “ps” 명령어를 사용하지 않아도 볼 수 있을 뿐만 아니라 모든 영역을 멈추지 않고 Real-time으로 볼 수 있습니다. 이는 application에 전혀 영향을 주지 않으면서도 원하는 정보를 볼 수 있게 됩니다.


[Task list & task 창]


[“ps”명령어에서 볼 수 있는 Process list]

Trace Listing

Trace buffer에 저장된 데이터를 보여줍니다. Trace listing, Task switch, memory, assembler와 High Level language정보 등을 확인 할 수 있습니다.

[Trace list, task switch (access at aligned_data), memory accesses, assembler/High Level Language 정보]


Task의 run time 및 통계 분석

Task switch와 run time 정보들을 볼 수 있습니다. 이로 어떤 시점에서 task가 활성화 되는지 볼 수 있으며 시스템의 동작을 명확히 확인할 수 있습니다.



함수 수행에 관계된 Task 정보 (Task Tree)

실행중인 함수 호출 정보와 함수 수행 시간도 볼 수 있습니다. 이는 다른 task들이 하나의 함수를 동시에 호출할 때나 task switch 가 함수 사이에서 발생했을 때 유용하게 쓰입니다.


[함수 트리, 관련된 task 통계]


[호출된 task에 대한 함수 수행 경로]

Task 상태에 대한 그래픽 통계 분석

Task상태에 대한 표와 그래픽 분석은 Task의 변화 상태(running, ready, waiting, suspended, undefined) 와 수행된 task의 시간을 볼 수 있습니다. 그래서 병목현상이나 우선순위 문제를 해결하는데 도움을 줄 수 있습니다.


[통계와 task상태 흐름]

uCLinux Kernel, Driver, Process 디버깅

TRACE32로는 bootstrap 코드, 초기화 구문, Interrupt 동작, driver, Kernel 등 사용자가 보고자 하는 것들을 디버깅해서 볼 수 있습니다. 그렇기에 uCLinux application도 물론 디버깅 할 수 있습니다.

Task Stack Coverage

Real time 시스템에서 각각의 task가 얼마나 많은 Stack 공간을 차지하지 아는 것은 매우 중요합니다. 그렇기 때문에 이러한 목적으로 Task의 실시간 및 최대 사용량을 보여주는 창을 제공하고 있습니다..
[Task stack coverage]

OS 데이터를 위한 PRACTICE 기능

uCLinux의 특정한 데이터를 위해 확장된 PRACTICE 기능을 지원합니다. 예를 들어 TASK.PROC.CODEADDR(“hello”) 기능은 특정 프로세스의 코드세그먼트 시작 주소 id 값을 리턴 합니다.

uCLinux 관련된 pull-down 메뉴

TRACE32의 인터페이스는 사용자 중심으로 변형이 가능하기 때문에 어떤 새로운 pull-down메뉴나 특정OS명령어를 위한 pull-down메뉴를 생성할 수 있습니다. uCLinux를 지원하고 있기 때문에 이에 맞는 빠르게 접근 가능한 pull-down메뉴를 지원하고 있습니다.

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