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

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


하드웨어적으로 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
6368 Apple TV 온보드 메모리 변경 가능할까요? [1] 당그니 2011-01-20 94739
6367 android pwm backlight 밝기 제어 [4] 김태영 2011-07-28 55138
6366 com.google.android.maps.jar는 어디서 얻는 것인가요??? [2] 천동이 2014-09-02 52326
6365 USB bluetooth dongle on jellybean [4] 신현호 2014-02-21 50327
6364 우분투 리눅스 ip 변경 도중에 "No such process" [5] 이세종 2009-04-01 46089
6363 OpenOCD 0.2.0 [1] 김광준 2009-10-24 44839
6362 [질문]memset, mmap, memcpy에 대해서 질문 있습니다. [5] 이태간 2007-05-22 44802
6361 libpcap 설치 [1] Apostasy 2011-04-12 43980
6360 램디스크 파일 시스템 만들기 [4] sinwho 2015-08-19 43585
6359 USB 포팅관련 질문드립니다. [1] 김승한 2010-01-07 33319
6358 android에 libusb porting 해보신 분?? [2] 꿈의사람 2014-02-13 29616
6357 오드로이드 배터리 패치 문의 [1] 이종문 2010-07-01 29064
6356 ODROID-T 2.2 셧다운 후 부팅이 안됩니다. [2] shkim 2010-10-02 26886
6355 오드로이드 디버깅이 안되네요... [2] 현쓰 2010-02-01 26603
6354 [질문]wince 이미지 다운로드시 에러 [3] 이태간 2008-04-06 26265
6353 slide event에 따른 landscape & portrait mode 전환 [1] 나영찬 2010-03-25 24653
6352 Andorid ALSA에 관해서...2 [1] 꺼북이 2011-05-18 24350
6351 wm1811 드라이버를 찾아요 [9] 김민욱 2016-11-01 18782
6350 이더넷 핀에서 값을 읽어 오고 싶은데요... [2] rubio 2013-07-09 13050
6349 usb host api 가 리눅스단에서도 사용가능한가요? [1] biokk 2014-02-07 11392

사용자 로그인