기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

USB 드라이버를 공부하고 있습니다.


일반적으로 Device에서 Host로 512Byte만큼 100번 Bulk 모드로 전송했다면, 

Host에서 받을 때 512만큼 100번 받는다고 생각할 수 있는데요


512가 아닌 사이즈를 받는 건 무슨 상황인가요?

예를들어 512, 512, 512, 490, 498, 512, 512..... 이렇게 전송이 될 때가 있습니다.

이 상황을 데이터가 손실됐다고 보고 재전송해야 하는 것인지 

아니면 이어받기를 해서  다 받아서 써도 되는 것인지 궁금합니다.


직접 해보는 것이 가장 정확하겠지만 여건이 안되서 질문 남깁니다.

감사합니다.


有口無言

2013.06.12 08:08:02
*.239.155.155

usb 는 host-device 통신을 호스트가 주관합니다. 다시 말해 호스트가 디바이스 쪽으로

데이터 요청(IN Packet)을 던지면 디바이스 쪽에서는 bulk in 인터럽트가 뜨게 됩니다.

디바이스 bulk-in isr 에서 IN Endpoint에 데이터를 실어주면(LoadInEp) 호스트로 전송이 됩니다.

전송되는 패킷 크기는 디바이스의 descriptor 설정에서 정해주게 되며 

전송 방식(bulk, interrupt... )과 full/high speed에 따라 달라집니다. 

호스트 프로그램에서 bulk_read를 하게 되면 드라이버에서 endpoint 크기로 쪼개서

IN packet을 디바이스 쪽으로 내리게 됩니다. 

예를 들어 IN endpoint size가 64 바이트로 설정되었고 호스트에서 bulk_read(128바이트)를 하게 되면

IN Packet <- 64 byte load

IN Packet <- 64 byte load

이렇게 두번의 IN Packet을 통해 128 바이트를 전송받게 됩니다.

제가 예전에 확인한 내용으로는 디바이스에서는 IN packet이 내려왔을 때(bulk-in interrupt) 

호스트가 몇바이트의 데이터를 요청했는 지 알 수 없었습니다. endpoint 크기 만큼 IN-Endpoint에 

데이터를 로드하면 호스트 디바이스 드라이버에서 처리를 하는 것 같았습니다.

호스트가 bulk_read(245바이트)를 하게 되면

IN Packet <- 64 byte load

IN Packet <- 64 byte load

IN Packet <- 64 byte load

IN Packet <- 64 byte load---> 호스트 디바이스 드라이버에서 53 바이트만 취함


따라서 위에서 말씀하신 상황은 

1. 디스크립터의 endpoint 크기

2. 호스트에서 bulk_read 시 크기

3. 디바이스 펌웨어에서 실제로 로드하는 크기

등등을 살펴봐야 할것 같습니다.


저도 오래전에 디바이스을 하면서 본거라 기억이 가물가물 거리고 글로 설명하기가 힘드네요. ㅠㅠ

List of Articles
번호 제목 글쓴이 날짜 조회 수
» USB 전송에 관해서 질문 있습니다. [1] 무우도사 2013-06-12 1400
5847 터치스크린 관련 Drake 2013-06-12 1279
5846 [S5PV210] CUPS 1.6.2 포팅 오류 때끼때끼 2013-06-11 1513
5845 [참고] v210 삼성 커널 포팅 후 부팅 안되는 것 [1] 유구무언 2013-06-11 1262
5844 [v210] SMSC LAN9220 이더넷 문제 [7] 유구무언 2013-06-11 3371
5843 카메라 시스템을 공부하는데 질문이 있습니다. [3] 할라 2013-06-11 1484
5842 안드로이드에서 audio mixer [1] wizard14 2013-06-10 1332
5841 안녕하세요 ISO이미지 관련 [2] 때따뽕 2013-06-10 1341
5840 s3c6410보드에서 rt3070 ap mode 질문입니다 [1] rubio 2013-06-08 1999
5839 s3c6410 usb device [1] 김형영 2013-06-05 1447
5838 wpa_supplicant문의 드립니다. [1] 테크 2013-06-05 3079
5837 S5PV210 TL16C554 적용 문의 [3] 때끼때끼 2013-06-05 1929
5836 안드로이드 Audio Output 관련 문의 [1] 신기루 2013-05-31 1440
5835 3G 모듈 ICS에 동작 시키는 게 잘 안되네요ㅡㅡ 로또리아 2013-05-31 1233
5834 native 서비스 layer에서 자바 layer로 noti? [5] wizard14 2013-05-30 1549
5833 wlan0가 나타나지 않습니다. 조언구합니다. [3] 테크 2013-05-30 1441
5832 booting error 문의 [1] lveritas 2013-05-27 1452
5831 인터럽트 실행 순서 관련(모든task가 resume 이후에 인터럽트 핸들러호... [2] 로이1024 2013-05-26 2426
5830 Nexus 10 Full Source Code ??? [2] Simba444 2013-05-25 1838
5829 arndale 보드에서 DVFS를 끄고 무조건 최고 클럭으로 돌리고 싶습... [3] 김영준 2013-05-25 1643

사용자 로그인