도와주세요!!
글 수 15,339
2009.02.06 12:38:03 (*.34.186.44)
11866
<<
수정본으로 올립니다. 작업도중 오류를 확인하였습니다.
usb 1.1 드라이버가 아닌 2.0 드라이버가 동작했던 것입니다.
>>
질문 글 중에 타겟보드에 usb 를 포팅하다 안되는 문제로 글을 올린적이 있었습니다.
usbcore
usb-storage
ehci-hcd
이렇게 3개의 드라이버를 올리고 usb를 꼽게 되면 아래와 같은 에러 메세지가 나타났었습니다.
//---------------------------------------------------------------------
-bash-2.05b# hub.c: new USB device 00:0d.2-1, assigned address 2
usb.c: USB device not accepting new address=2 (error=-71)
hub.c: new USB device 00:0d.2-1, assigned address 3
usb.c: USB device not accepting new address=3 (error=-71)
//---------------------------------------------------------------------
(( 그래서 이번엔 usb 1.1 드라이버인 uhci 를 포함하여 올리게 되었고..
usb를 꼽자 어떤 반응이 있는것을 확인 할 수 있었습니다.
.
.
.
라고 올렸습니다만...
확인결과 ehci 드라이버가 반응했음을 확인했습니다 ))
아래 내용은 usb를 꼽고 난 후 콘솔상에 나타난 메세지들 입니다.
//---------------------------------------------------------------------
-bash-2.05b# hub.c: new USB device 00:0d.2-1, assigned address 2
scsi0 : SCSI emulation for USB Mass Storage devices
Vendor: TOSHIBA Model: TransMemory Rev: <7>static void solo600x_interrupt((..)
6.50
Type: Direct-Access <7>static void solo600x_interrupt((..)
ANSI SCSI revision: 02<7>static void solo600x_interrupt((..)
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
SCSI device sda: 3894975 512-byte hdwr sectors (1994 MB)
sda: Write Protect is off
/dev/scsi/host0/bus0/target0/lun0:<7>rtl8139_interrupt: eth0: exiting interrupt, intr_status=0x0000.
usb_control/bulk_msg: timeout
phy_id=20
usb_control/bulk_msg: timeout
usb_control/bulk_msg: timeout
usb_control/bulk_msg: timeout
usb-storage: host_reset() requested but not implemented
scsi: device set offline - command error recover failed: host 0 channel 0 id 0 lun 0
SCSI disk error : host 0 channel 0 id 0 lun 0 return code = 50006
I/O error: dev 08:00, sector 0
I/O error: dev 08:00, sector 2
I/O error: dev 08:00, sector 0
unable to read partition table
usb.c: hotplug path ok
usb_control/bulk_msg: timeout
usb.c: kusbd: /sbin/hotplug add 2
scsi singledevice 0 0 0 0
phy_id=20
//---------------------------------------------------------------------
드라이버는 올라오는 듯한데 제 기능을 못하는 것 같습니다.
또 다른 usb 디스크를 꼽게 되면 맨 위 메세지와 같은 메세지가 출력됩니다.
//---------------------------------------------------------------------
-bash-2.05b# hub.c: new USB device 00:0d.2-1, assigned address 2
usb.c: USB device not accepting new address=2 (error=-71)
hub.c: new USB device 00:0d.2-1, assigned address 3
usb.c: USB device not accepting new address=3 (error=-71)
//---------------------------------------------------------------------
모쪼록 경험있으신 분들에 의견을 듣고 싶습니다.
읽어주셔서 감사합니다.
수정본으로 올립니다. 작업도중 오류를 확인하였습니다.
usb 1.1 드라이버가 아닌 2.0 드라이버가 동작했던 것입니다.
>>
질문 글 중에 타겟보드에 usb 를 포팅하다 안되는 문제로 글을 올린적이 있었습니다.
usbcore
usb-storage
ehci-hcd
이렇게 3개의 드라이버를 올리고 usb를 꼽게 되면 아래와 같은 에러 메세지가 나타났었습니다.
//---------------------------------------------------------------------
-bash-2.05b# hub.c: new USB device 00:0d.2-1, assigned address 2
usb.c: USB device not accepting new address=2 (error=-71)
hub.c: new USB device 00:0d.2-1, assigned address 3
usb.c: USB device not accepting new address=3 (error=-71)
//---------------------------------------------------------------------
(( 그래서 이번엔 usb 1.1 드라이버인 uhci 를 포함하여 올리게 되었고..
usb를 꼽자 어떤 반응이 있는것을 확인 할 수 있었습니다.
.
.
.
라고 올렸습니다만...
확인결과 ehci 드라이버가 반응했음을 확인했습니다 ))
아래 내용은 usb를 꼽고 난 후 콘솔상에 나타난 메세지들 입니다.
//---------------------------------------------------------------------
-bash-2.05b# hub.c: new USB device 00:0d.2-1, assigned address 2
scsi0 : SCSI emulation for USB Mass Storage devices
Vendor: TOSHIBA Model: TransMemory Rev: <7>static void solo600x_interrupt((..)
6.50
Type: Direct-Access <7>static void solo600x_interrupt((..)
ANSI SCSI revision: 02<7>static void solo600x_interrupt((..)
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
SCSI device sda: 3894975 512-byte hdwr sectors (1994 MB)
sda: Write Protect is off
/dev/scsi/host0/bus0/target0/lun0:<7>rtl8139_interrupt: eth0: exiting interrupt, intr_status=0x0000.
usb_control/bulk_msg: timeout
phy_id=20
usb_control/bulk_msg: timeout
usb_control/bulk_msg: timeout
usb_control/bulk_msg: timeout
usb-storage: host_reset() requested but not implemented
scsi: device set offline - command error recover failed: host 0 channel 0 id 0 lun 0
SCSI disk error : host 0 channel 0 id 0 lun 0 return code = 50006
I/O error: dev 08:00, sector 0
I/O error: dev 08:00, sector 2
I/O error: dev 08:00, sector 0
unable to read partition table
usb.c: hotplug path ok
usb_control/bulk_msg: timeout
usb.c: kusbd: /sbin/hotplug add 2
scsi singledevice 0 0 0 0
phy_id=20
//---------------------------------------------------------------------
드라이버는 올라오는 듯한데 제 기능을 못하는 것 같습니다.
또 다른 usb 디스크를 꼽게 되면 맨 위 메세지와 같은 메세지가 출력됩니다.
//---------------------------------------------------------------------
-bash-2.05b# hub.c: new USB device 00:0d.2-1, assigned address 2
usb.c: USB device not accepting new address=2 (error=-71)
hub.c: new USB device 00:0d.2-1, assigned address 3
usb.c: USB device not accepting new address=3 (error=-71)
//---------------------------------------------------------------------
모쪼록 경험있으신 분들에 의견을 듣고 싶습니다.
읽어주셔서 감사합니다.
2009.02.07 09:20:42 (*.34.186.44)
감사드립니다. ^^
os 포팅 및 어플리케이션이 이미 완료된 기존 제품에 usb를 추가하는 것이라서..
커널버젼 변경은 거의 불가능 합니다. (변경하면 싹 다시 만드는수밖에요;; 현재 2.4.21 을 사용합니다) ^^;
그렇잖아두 via 에서 레퍼런스 회로도를 받아보게 되었는데요.
회로도상에 코일(트랜스표시처럼 생겼던..)이 usb 커넥터 바로 옆에 있더군요.
해당 h/w 팀에서 코일을 떼고 쇼트해도 그 전에 사용하던 보드에서는 잘 동작했다고 합니다.
전 보드는 잘되었지만, 이번보드에서는 D+, D- 가 직접 커넥터까지 direct 되어 있어서.. 코일을 붙여 보려고 합니다.
패턴을 끊고 중간에 붙여야 할텐데..usb컨넥터 근처 패턴에 GND와 연결된 저항소자가 있어서
아마 그쪽으로 패턴수정및 와이어 작업이 필요하고 그렇게되면 잡음이 좀 걱정됩니다.
그리고 조금전에 보드를 켜고.. usb드라이버를 올리고.. usb꼽았습니다.
-bash-2.05b# hub.c: new USB device 00:0d.2-1, assigned address 2
usb.c: USB device not accepting new address=2 (error=-71)
hub.c: new USB device 00:0d.2-1, assigned address 3
usb.c: USB device not accepting new address=3 (error=-71)
어제는 어느정도 메세지가 나오는데 오늘은 처음부터 에러 입니다. ㅠㅜ
os 포팅 및 어플리케이션이 이미 완료된 기존 제품에 usb를 추가하는 것이라서..
커널버젼 변경은 거의 불가능 합니다. (변경하면 싹 다시 만드는수밖에요;; 현재 2.4.21 을 사용합니다) ^^;
그렇잖아두 via 에서 레퍼런스 회로도를 받아보게 되었는데요.
회로도상에 코일(트랜스표시처럼 생겼던..)이 usb 커넥터 바로 옆에 있더군요.
해당 h/w 팀에서 코일을 떼고 쇼트해도 그 전에 사용하던 보드에서는 잘 동작했다고 합니다.
전 보드는 잘되었지만, 이번보드에서는 D+, D- 가 직접 커넥터까지 direct 되어 있어서.. 코일을 붙여 보려고 합니다.
패턴을 끊고 중간에 붙여야 할텐데..usb컨넥터 근처 패턴에 GND와 연결된 저항소자가 있어서
아마 그쪽으로 패턴수정및 와이어 작업이 필요하고 그렇게되면 잡음이 좀 걱정됩니다.
그리고 조금전에 보드를 켜고.. usb드라이버를 올리고.. usb꼽았습니다.
-bash-2.05b# hub.c: new USB device 00:0d.2-1, assigned address 2
usb.c: USB device not accepting new address=2 (error=-71)
hub.c: new USB device 00:0d.2-1, assigned address 3
usb.c: USB device not accepting new address=3 (error=-71)
어제는 어느정도 메세지가 나오는데 오늘은 처음부터 에러 입니다. ㅠㅜ
2009.02.09 10:34:10 (*.138.143.83)
에러메세지 "USB device not accepting new address=2 " 이것은 버스가 안정화되있지 않을때 발생합니다.
이때 당시에는 control 모드이기 때문에 1Mbps 도 안되는 속도의 통신을 합니다.
이때도 에러가 났다는 것은 타겟 하드웨어(USB Host)에 심각한 오류가 있거나 또는 Host 가 Device 보다 빨리
반응하는 경우 발생합니다. 후자의 경우 커널을 변경하시면 쉽게 됩니다만.... 커널 변경하는게 큰 작업이군요
이때 당시에는 control 모드이기 때문에 1Mbps 도 안되는 속도의 통신을 합니다.
이때도 에러가 났다는 것은 타겟 하드웨어(USB Host)에 심각한 오류가 있거나 또는 Host 가 Device 보다 빨리
반응하는 경우 발생합니다. 후자의 경우 커널을 변경하시면 쉽게 됩니다만.... 커널 변경하는게 큰 작업이군요
2009.02.10 08:09:30 (*.34.186.44)
답글 고맙습니다.
읽어보니 그렇군요.
일단은 아직 h/w 팀에서 코일 시방작업이 안되었기 때문에..
(레퍼런스 회로도에 있는 EMI 필터 외에 대체품을 찾고 있는 중입니다.)
작업 후 테스트를 해보아야 알겠습니다.
만약 코일 시방이나 D 패턴에 변화가 안먹힌다면.. 더이상 해볼게 없네요.
펌웨어에서 고쳐야 한다는데..;
리눅스가 usb 드라이버를 잘 지원해주는 지금에..
커널 변경외에는 방법이 없다면 큰일이긴 합니다.
아니면.. 상위커널에서 사용한 코드를 다운그레이드ㅡ 한다 라는 엄청난 일이
매우 불안정 함을 안고 있는 일이기에..(할 수 있을까도 의문이구요..)
지금 패턴 수정해보는게 거의 마지막 희망? 이 될 듯 싶습니다.
http://forum.falinux.com/zbxe/?mid=ezboard&document_srl=498531&listStyle=&cpage=
위의것을 한번 해보시기 바랍니다.
역시나 안된다면 PCB 아트웍라인을 확인하세요. usb2.0 은 400MHz diff 라인이기 때문에 아트웍시
조심해야할 사항이 많습니다. 그리고 기본적으로 커먼모드코일을 D+,D- 에 붙이는 걸 권장하고 있습니다.