l l Logic Analyzer Background Debug Mode JTAG
강의 순서 l l Logic Analyzer, Background Debug Mode JTAG (Joint Test Action Group), Debug Monitor ROM Emulator, ICE (In-Circuit Emulator) GNU Debugger (Gdb) 2
Logic Analyzer - 그림 timing 모드 state 모드 logic analyzer 4
JTAG cell의 연결 l l 각 JTAG cell은 해당 칩의 한 단자와 대응됨 JTAG cell의 연결은 긴 shift-register를 형성함 칩 cell JTAG connector 입력 출력 target 보드 7
Debug Monitor l target 시스템의 ROM에 상주하는 디버깅 소프트웨어 l host 시스템의 debugger는 serial 혹은 Ethernet 포트를 통하 여 target 시스템의 debug monitor와 통신한다 l debug monitor가 host에 제공하는 디버깅 기능 l target의 memory 및 register 값 변경 l program의 수행 l breakpoint의 설정 8
ROM Emulator l l target 시스템의 ROM 소켓을 host의 serial, Ethernet 혹은 USB 포트에 연결하여 host에서 target 시스템의 ROM을 대 치하는 memory를 제공 - target 시스템의 통신 포트를 사용 않음 ROM emulator가 제공하는 디버깅 기능 l l l memory 및 register의 값을 변경 breakpoint 설정 single step 수행 9
Gdb - breakpoint 설정 특정 함수에 breakpoint 설정 l break function 혹은 break filename: function l 프로그램 소스 줄에 breakpoint 설정 l break linenum 혹은 break filename: linenum l 현재 위치에서 상대적 위치에 breakpoint 설정 l break +offset 혹은 break -offset l 조건 breakpoint 설정 l break. . . if cond l breakpoint 설정 지점 보기 l info breakpoints 참고: breakpoint는 프로그램의 수행을 stop시키는 지점 l 14
Gdb - watchpoint 설정 프로그램에 의하여 expr이 써지면(write) breakpoint 형성 l watch expr l 프로그램에 의하여 expr이 읽혀지면(read) breakpoint 형성 l rwatch expr l expr이 써지거나(write) 혹은 읽혀지면(read) breakpoint 형성 l awatch expr l 설정된 watchpoint 보기 l info watchpoints 참고: watchpoint는 특정 식의 값이 변경되거나 읽혀질 때 프로그램 의 수행이 stop하는 특별한 breakpoint임 l 15
Gdb - continue, step, until, finish l l stop된 프로그램의 수행 l continue [ignore-count] l c [ignore-count] stop된 프로그램의 한 단계 수행 l step count 프로그램의 특정 지점까지 수행하고 stop l until location l u location 현재 수행 중인 함수의 수행을 끝내고 stop l finish 16
Gdb - 소스 파일 점검 l 소스 라인 프린트 l list linenum l list function l list 소스 파일 편집 l edit number l edit filename: number l edit function l edit filename: function l 18
Gdb - 데이터 값 보기 l l l expression 값 보기 l print expr l print /f expr 메모리 값 보기 l x addr l x /nfu addr b, h. w) register 값 보기 l info registers 제외) l info all-registers l print $register // /f는 format(예: /d /o /x) // n은 갯수, f는 format, u는 단위(예: // register 이름 보기(floating-point // register 이름 보기 19
Gdb - symbol table 보기 l 심볼 주소 보기 l l 주소에 있는 심볼 이름 보기 l l info symbol address expression의 type 보기 l l info address symbol ptype expr 어떤 함수 내의 모든 심볼 이름 보기 l info scope function 20
Gdb - 프로그램 수정 l l l 변수 값 수정 l print x=4 다른 곳으로 jump linespec l jump *address 프로그램에 signal 보내기 l signal 함수 부르기 l call expr 함수에서 return l return expr 21
Gdb - remote debugging 환경 l target - gdbserver 및 디버깅할 프로그램의 binary 필요 $ gdbserver host: port prog. . . $ gdbserver /dev/ttya prog. . . l host - gdb 및 디버깅할 프로그램의 binary(unstripped) 필요 $ gdb (gdb) file prog (gdb) target remote host: port 혹은 target remote /dev/ttya (gdb). . . 22
- Slides: 22