FTDI 드라이버 동작을 확인하려고 하는데요
      글쓴이: gokore / 작성시간: 화, 2011/11/22 - 8:29오후    
  
  usb 1-1: new full speed USB device using ar71xx-ehci and address 5
usb 1-1: configuration #1 chosen from 1 choice
ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
usb 1-1: Detected FT232BM
usb 1-1: Number of endpoints 2
usb 1-1: Endpoint 1 MaxPacketSize 16384
usb 1-1: Endpoint 2 MaxPacketSize 16384
usb 1-1: Setting MaxPacketSize 64
usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0
dmesg를 찍어서 위의 결과를 볼 수 있었는데요
지금 제가 원하는 것이 디바이스 드라이버 코드 들이 어떻게 동작하는 지 흐름을 보고 싶은데요.
대체 어떻게 해야할지 감이 오질 않네요
prink()를 모든 코드의 함수 시작 부분에 박아두면 될 것 같긴한데
좀 더 현명한 방법이 없을까요 ??
고수님들의 답변 부탁드립니다.
Forums: 


http://sourceware.org/systemt
http://sourceware.org/systemtap/
fedora 에선..
그리고,
$ sudo stap -gvvv -m test /usr/share/doc/systemtap-1.3/examples/general/para-callgraph.stp 'module("ftdi_sio").function("*")' -c "echo hello > /dev/ttyUSB0 || true"결과는
0 sh(17305):->ftdi_open tty=0xc1250800 port=0xc10c3000 6 sh(17305): ->write_latency_timer port=0xc10c3000 103 sh(17305): <-write_latency_timer return=0x0 347 sh(17305): ->ftdi_set_termios tty=0xc1250800 port=0xc10c3000 old_termios=0xed643360 472 sh(17305): ->change_speed tty=0xc1250800 port=0xc10c3000 476 sh(17305): ->trace_kmalloc call_site=0xf7fb0f1d ptr=0xf1020360 bytes_req=0x1 bytes_alloc=0x8 gfp_flags=0x10 480 sh(17305): <-trace_kmalloc 483 sh(17305): ->ftdi_232bm_baud_to_divisor baud=0x1c200 487 sh(17305): <-ftdi_232bm_baud_to_divisor return=0x1a 597 sh(17305): <-change_speed return=0x0 723 sh(17305): ->update_mctrl port=0xc10c3000 set=0x0 clear=0x6 727 sh(17305): ->trace_kmalloc call_site=0xf7fb0c80 ptr=0xf1020360 bytes_req=0x1 bytes_alloc=0x8 gfp_flags=0x10 730 sh(17305): <-trace_kmalloc 847 sh(17305): <-update_mctrl return=0x0 849 sh(17305): <-ftdi_set_termios 852 sh(17305): ->ftdi_submit_read_urb port=0xc10c3000 mem_flags=0xd0 857 sh(17305): <-ftdi_submit_read_urb return=0x0 860 sh(17305):<-ftdi_open return=0x0 0 sh(17305):->ftdi_dtr_rts port=0xc10c3000 on=0x1 4 sh(17305): ->update_mctrl port=0xc10c3000 set=0x6 clear=0x0 8 sh(17305): ->trace_kmalloc call_site=0xf7fb0c80 ptr=0xf1020360 bytes_req=0x1 bytes_alloc=0x8 gfp_flags=0x10 11 sh(17305): <-trace_kmalloc 0 Xorg(1630):->ftdi_read_bulk_callback urb=0xd8fd0800 5 Xorg(1630): ->usb_serial_debug_data debug=0x0 dev=0xc10c30f0 function=0xf7fb26a4 size=0x2 data=0xdafbf200 9 Xorg(1630): <-usb_serial_debug_data 13 Xorg(1630): ->ftdi_submit_read_urb port=0xc10c3000 mem_flags=0x20 17 Xorg(1630): <-ftdi_submit_read_urb return=0x0 19 Xorg(1630):<-ftdi_read_bulk_callback 133 sh(17305): <-update_mctrl return=0x0 136 sh(17305):<-ftdi_dtr_rts 0 sh(17305):->ftdi_ioctl tty=0xc1250800 file=0xeefe7a00 cmd=0x5401 arg=0xbff25a30 4 sh(17305):<-ftdi_ioctl return=0xfffffffffffffdfd 0 sh(17305):->ftdi_write tty=0xc1250800 port=0xc10c3000 buf=0xc12bc400 count=0x6 5 sh(17305): ->usb_serial_debug_data debug=0x0 dev=0xc10c30f0 function=0xf7fb27e8 size=0x6 data=0xf1020360 8 sh(17305): <-usb_serial_debug_data 12 sh(17305):<-ftdi_write return=0x6 0 sh(17305):->ftdi_chars_in_buffer tty=0xc1250800 3 sh(17305):<-ftdi_chars_in_buffer return=0x6 0 sh(17305):->ftdi_chars_in_buffer tty=0xc1250800 3 sh(17305):<-ftdi_chars_in_buffer return=0x6 0 Xorg(1630):->ftdi_write_bulk_callback urb=0xeefe7480 6 Xorg(1630):<-ftdi_write_bulk_callback 0 sh(17305):->ftdi_chars_in_buffer tty=0xc1250800 3 sh(17305):<-ftdi_chars_in_buffer return=0x0 0 sh(17305):->ftdi_close port=0xc10c3000 0 Xorg(1630):->ftdi_read_bulk_callback urb=0xd8fd0800 3 Xorg(1630):<-ftdi_read_bulk_callback 113 sh(17305):<-ftdi_close저는 printk를 일일이 박아서 ..
저는 printk를 일일이 박아서 확인합니다.
알아보기도 쉽고.. 다만 귀찮은 감이 있지만..
댓글 달기