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

얼마전 질문을 올렸었는데요


하드웨어적으로 usb패킷을 분석하는 기기가 있어서 테스트해봤는데

응답이 느린 폰에서는 4초 간격으로 IN 토큰을 보내더라구요.

응답이 빠른 폰에서는 0.5초마다 보내구요.


그러다가 USB 스펙문서에서 bInterval 값에 대한 설명을 봤는데

2^(bInterval-1) microframe(125us)단위로 폴링인터벌이 정해지더라구요.

그동안 이걸 아무생각 없이 ms 단위인줄로 착각하고 있었네요...ㅠㅠ


bInterval 값이 16이었고

계산해보니 약 4초로 결국엔 응답이 빠른 폰은 정상적으로 동작한다는 

결론이 나오더라구요.


어떤 안드로이드폰에서는 약 0.5초 간격으로 패킷을 보내는걸 봐서는

OS마다 리미트값이 있는것 같아요. bInterval이 13이면 그 정도로 반응하는게 맞는것 같네요. 


libusb를 다른 우분트 컴퓨터에 설치해서 테스트해보니 1초 간격이 나왔구요. 


그렇다면 리눅스 소스 중에서  Endpoint descriptor를 확인하고 polling interval을 결정해서

주기마다 신호를 보내는 부분은 어디이고 그 polling interval을 어떻게 결정하는지

그리고 혹시라도 바꾸는 방법이 있을지 궁금합니다. 




Jazzguitar

2017.11.08 23:08:36
*.122.242.77

오래된 글인데 리플이 없어서 정보 공유차원에서 남깁니다.


polling interval 값은 해당 device driver 에서 설정합니다.


예를 하나 들어보죠. Interrupt IN 1개와 Bulk In/OUT endpoint 를 갖는 cdc-acm(window장치에서 모뎀장치 생각하시면 됩니다.) 장치가 있다고 생각해 보죠.


http://elixir.free-electrons.com/linux/latest/source/drivers/usb/class/cdc-acm.c#L1417

여기서 interval값을 가져오고, 


http://elixir.free-electrons.com/linux/latest/source/drivers/usb/class/cdc-acm.c#L1461


static inline void usb_fill_int_urb(struct urb *urb,

    struct usb_device *dev,

    unsigned int pipe,

    void *transfer_buffer,

    int buffer_length,

    usb_complete_t complete_fn,

    void *context,

    int interval)

device쪽에서 endpoint descriptor에 넣어서 host로 전달하는 값이기 때문에 변경하고 싶다면 device단에서 변경해야 합니다.

List of Articles
번호 제목 글쓴이 날짜sort 조회 수
6248 IEEE1394 포트에 외장하드 연결해서 리눅스부팅<==완료 [3] 오주열 2006-07-28 1187
6247 3차보드구매하고 싶습니다. <= 완료 [1] 마승환 2006-07-29 1034
6246 질문) 2440 의watchdog 사용에 관해서 [4] 김형기 2006-07-30 1188
6245 [질문] 이번에는 su 관련 질문입니다. 이재훈 2006-07-31 1307
6244 ==>이렇게 하시면 됩니다. [1] 고현철 2006-07-31 1237
6243 aesop 2440과 smdk2440 질문입니다. <= 완료 [4] 안정섭 2006-08-02 2145
6242 2차 보드에서 LCD 출력을 일반 그래픽 카드의 디지털 출력으로 구... [7] 조준동 2006-08-02 1169
6241 CE 부터로더 다운로드 질문 [3] 안정섭 2006-08-03 1291
6240 안녕하세요 zd1211 컴파일까지 완료 하였습니다만 <==완료 [3] 윤현승 2006-08-05 1067
6239 [질문] Email 전송 애플리케이션을 보다가... [4] 이재훈 2006-08-11 857
6238 이솦 uboot에서 128 nand 지원? [4] 김대영 2006-08-11 1219
6237 SMDK2440A 타겟보드에서 ping 사용하기...ㅠㅠ <= 133에 추... [2] 류민희 2006-08-11 1512
6236 SMDK2440A 보드 ping 문제에 관한 질문 두번째 <= 132번과 ... [5] 류민희 2006-08-12 1363
6235 u-boot 에서 usb 메모리스틱 읽기...<==[완료!] [3] 이율삼 2006-08-12 1858
6234 [고현철님] SMDK2440A 보드 ping 문제에 관한 질문 세번째 &lt... [4] 류민희 2006-08-12 1341
6233 [완료] 디바이스 드라이버에서 플래쉬 메모리에 접근하는법 [2] 오주열 2006-08-14 1299
6232 [질문] 이솝보드에 삼성의 DNW(USB/Sireal 다운로더)사용하려면..? [6] 박재흥 2006-08-16 2760
6231 [질문] u-boot 에서 USB OHCI의 지원 ? [<= 완료] [2] 김정호 2006-08-16 1210
6230 mmc 사용중 질문입니다 <==완료 [1] 박현진 2006-08-17 1285
6229 2440 nandboot 관련 <== 완료 [6] 전병환 2006-08-18 1245

사용자 로그인