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

안녕하세요 꼭 무슨 문제 있을때만 찾아오게 되네요.. 


이번에도 질문드리기가 너무 죄송스러울 뿐이네요..ㅠㅠ


USB 드라이버를 사용하기 위해 포팅중인데요


하드웨어 스펙으로 인해 Endpoint가 모자라 


Interface Endpoint가 없는 NCM 네트웍 드라이버를 포팅중입니다. 


Device와 HOST 간 연결시에 bind() 에러가 나면서 인터페이스 등록이 안됩니다.


1. 혹시 Interrupt Endpoint를 제거한 NCM 드라이버를 포팅해보신적이 있으신 분 혹시 계신가요??


Device 드라이버쪽은 타 업체 제품이고(물론 Endpoint 가 없는 NCM Device Driver가 올라가 있습니다),
HOST 드라이버에서 이를 처리해서 연결할수 있는 드라이버를 포팅하려고 합니다.


2. kernel-버전/driver/net/usb/cdc_ncm.c 파일에서 cdc_bind 부분에 보니 usbnet_link_change(dev, 1, 2) 가 있는데 

요녀석이 어떤 역할을 하는 녀석인지도 혹시 아시는 분 답변 부탁드립니다.




고도리

2015.12.23 07:44:10
*.200.239.210

일단,


2번에 대한 부분을 찾아봤는데, 다음과 같은 자료들이 나오네요.


https://patchwork.ozlabs.org/patch/235774/


간단하게 말씀드리면, usb network을 power management나 아니면 bus bandwidth를 줄일 때 사용하는 듯 합니다. 예를 들어......cpu가 sleep이 아니고 run-time pm 상황에서도 usb network의 bandwidth를 줄이는 역할을 합니다.


대략 쫓아가 보니..........rx packet을 떨구는 역할을 하는 듯 하네요.

은민아빠

2015.12.23 18:17:18
*.245.242.234

감사합니다.

저도 좀더 세심하게 보다 보니 2번의 경우 usbnet_link호출 부분 위쪽에 아래와 같이 주석도 달려 있었네요..

/*

* We should get an event when network connection is "connected" or

* "disconnected". Set network connection in "disconnected" state

* (carrier is OFF) during attach, so the IP network stack does not

* start IPv6 negotiation and more.

*/

감사합니다.


그나저나 bind 후 인터페이스가 올라가야 다른 테스트를 해볼수 있을텐데 쉽지가 않네요..


은민아빠

2015.12.23 19:18:05
*.245.242.234

고도리님 

usb 드라이버 소스를 참고할만한게 있나 보다보니 huawei_cdc_ncm.c 이 파일이 있는데

혹시 요 드라이버를 호출하기 위해서 vendorid만 맞춰주면 될줄알았는데 잘안되네요.. 

혹시 제가 뭔가를 수정해줘야 되는지 아시는지요??


은민아빠

2015.12.24 01:22:33
*.245.242.234

우선 ncm 드라이버에서 bind  에러가 발생되는 원인은 endpoint가져오기에서 문제가 발생되서 그런것 같습니다.

cdc_ncm_find_endpoints()를 실행 후 in, out, status를 가져와야 되는데 in, out,은 정상으로 가져오는것으로 보이고, status값이 없는걸로 봐서 이쪽이 문제인것 같습니다.

인터럽트 endpoint가 없는 상황이라 그냥 스킵하도록 수정해봐야겠네요..ㅎㅎ 뭐 어찌 동작할지는 모르겠지만 우선 ncm드라이버부터 올려봐야겠습니다.


---------------------------------------------------------------------


음.. 아직까지는 잘모르겠네요.. 좀더 소스를 파봐야겠습니다. ㅠㅠ

고도리

2015.12.25 06:53:08
*.200.239.210

저도 usb는 많이 깡통입니다....ㅠ.ㅠ


근래야 디버깅하느라 조금씩 보고 있기는 합니다만,

endpoint없는 ncm 드라이버는 전문가한테 함 물어는 보겠습니다.

은민아빠

2015.12.28 20:00:54
*.245.242.234

아이고~ 고도리님이 깡통이시라니요.. 가당치도 않습니다~

그나저나 아직 보고있긴한데 아직까지는 확실히 해결을 하지 못했습니다.

함물어봐 주신다니 넘 감사합니다~ ㅎㅎ

크리스마스는 잘 보내셨는지요..

요즘 이쪽으로 좀더 능력을 길러보고 싶어서 자율학습(?)도 하고 있는데, 재미는 있지만 접근이 어렵네요..ㅠㅠ


추가로 궁금한 사항이 

혹시 OpenSource Project나 커널쪽에 contribute 하려면 어떤 절차가 있나요? 비용이 발생하나요?

자꾸 질문만 드려서 죄송합니다....ㅎㅎㅎ

고도리

2015.12.30 16:51:43
*.151.13.59

연말에 처리할 일이 넘 많아서 아직 친구들한테 물어보지는 못했습니다.....ㅠ.ㅠ


크리스마스는 오랜만에 하루 푹 쉬었습니다.

당연히 24일은 과메기와 술과 함께.............알콜과 보냈고요....ㅎㅎ


usb는 일반 프로토콜을 본 적이 거의 없고, 주로 chip level에서의 phy 설정은 꽤 봤었습니다.

일도 그쪽으로 할 일 밖에 없어서요.....


modem관련 드라이버를 디버깅하느라 좀 보기는 했는데, 아직도 usb stack이 확 눈에 들어오지는 않습니다.

예전 firmware로 구현한 적이 있는데, 참.........어려운 녀석이더군요.


오픈소스나 커널쪽에 참여하실 때는 세가지 정도가 필요하다라고 볼 수 있겠네요.


1. 특정 영역에 대한 전문가에 가까운 지식

2. 영어

3. 약간의 끈질김....^^


일단, 커널이나 특정 오픈소스를 잘 파악하고 거기에 있는 버그나 아니면 새로운 디바이스 혹은

새로운 stack을 올릴 수 있어야 참여가 쉬울겁니다.


그리고, 그것에 대한 질답 혹은 영어로 글 싸움....정도를 잘 해야할 수도 있고요.


저같은 경우는 주변에 커널에 이름 올리는 경우 이렇게 했던 것으로 기억이 납니다.


1. 커널 메인테이너 급과 인맥이 형성되어서

2. 새로운 특정 보드 혹은 cpu에 대한 코드를 작성을 해서 해당 인물의 도움으로 올리는 방법.


혹은


1. 새로운 특정 보드 혹은 cpu 코드 및 주변 device에 대한 코드를 세계 최초로 작성을 해서

(이게 재미있는게 내가 코드를 작성해도 안올리는 사람이 꽤 많습니다.....노력이 필요하기도 하고, 궂이

안올리는 경우도 많고요)

2. github나 다른 활동을 혼자서 열씨미 할 경우 누가 해당 코드를 기반으로 올리는 경우도 있습니다.

3. 물론, 이 경우는 코드를 베껴다가 자기것인양 올리는 경우도 있습니다....^^;;;

(메일링 리스트 감시가 필요한 케이스죠)


가장 좋은 것은 직접 한번 오픈소스를 운영해 보시는 것입니다.


저는 영어가 너무 젬병이라 제 말을 외국사람들과 소통이 불가능 해서..................포기했습니다...ㅠ.ㅠ

은민아빠

2016.01.07 01:45:00
*.245.242.234

쉬워보이지는 않네요.. ㅎㅎ

아무튼 이렇게 소개라도 넘 감사드립니다.~^^

은민아빠

2016.01.07 01:47:27
*.245.242.234

우선 find_endpoints 를 하는 부분에서 control 찾는 부분을 주석처리하고 하니 bind 에러는 발생하지 않고 Interface는 올라옵니다

하지만 IP를 할당하고 통신 테스트를 해보는데 정상적으로 동작하지는 않네요

아마도 뭔가가 더 필요해 보입니다


Jazzguitar

2017.11.08 23:43:17
*.122.242.77

gadget(device)쪽에서 interrupt endpoint를 갖지 않는 변태(?) cdc-ncm 드라이버를 이용하시려면, host쪽 cdc-ncm쪽도 변경해야 합니다. 


cdc_ncm_status()가 interrupt endpoint 를 통해서 host와 device가 status를 변경하고 ethernet channel을 setup하기 때문에 둘다 바꿔야 합니다. ncm driver가 probe는 되더라도 정상동작 안되는 이유가 그겁니다. 하지만, net driver 구조는 tty 만큼 헬이기 때문에 naver...

List of Articles
번호 제목 글쓴이 날짜 조회 수
6248 크로스 컴파일러 질문입니다. [2] vain 2015-12-30 254
6247 리눅스에서 인터럽트 트랜스퍼의 폴링인터벌을 조절할 수 있는 방법이... [1] 아라라라기 2015-12-26 215
» USB networ driver CDC NCM endpoint 질문 [10] 은민아빠 2015-12-23 699
6245 6410 Sleep Mode 질문 [1] 깜성 2015-12-18 254
6244 JNI 에서 V4L2를 사용할수 있나요? [5] biokk 2015-12-17 466
6243 안드로이드 버튼입력 지연 [2] 아라라라기 2015-12-15 211
6242 안드로이드 지자기 센서 포팅과 관련하여 질문드립니다. [4] ImYeol 2015-11-26 420
6241 /dev/mmcblk0rpmb가 나오게 하려면 어떻게 해야 하나요? [1] 혜민아빠 2015-11-19 204
6240 udev 를 이용하여 /dev 사용권한을 변경할수 있나요? [1] pedor11 2015-11-18 185
6239 camera HAL시 퍼미션을 얻을 수 있는가요? [2] 조신 2015-11-18 147
6238 slattach 기능을 안드로이드에서 이용할 수 있는 방법 문의드립니다 [4] 엘카 2015-11-03 276
6237 안드로이드 textureview로 동영상 재생시 black screen 질문드려요 새삶 2015-10-28 625
6236 arm컴파일러관련 질문인데요.. [2] pedor11 2015-10-23 267
6235 [안드로이드 서비스 실행관련] [1] 밥줘잉 2015-10-09 229
6234 리눅스 SDL 라이브러리로 4 채널 블랙박스 UI 성능이 나올지 잘 ... 파란새 2015-10-07 531
6233 키이벤트 관련 질문드립니다. [3] 하하호호하하 2015-10-06 188
6232 PWM Timer2 Prescaler값 변경시 시스템 시간 지연 문제? [3] 루벤94 2015-10-06 209
6231 Android HAL의 필요성? [4] Supsupi 2015-10-02 534
6230 AOSP user 모드 빌드 시 주의사항 질문드립니다. [1] 엘카 2015-09-26 256
6229 input device I2C 통신 관련 질문입니다. file [5] ImYeol 2015-09-25 621

사용자 로그인