old USB 에서 HPS USB stack 으로..

Posted: April 4th, 2009 | Author: weongyo | Filed under: FreeBSD |

FreeBSD 8.0 릴리즈를 위한 Code Freeze 가 6월 중순으로 발표되면서 요즘은 회사일 하랴, FreeBSD 포팅하랴 정신이 없을 정도로 한가하지가 않습니다.

이와 관련하여 저에게 닥친 가장 큰 이슈는 역시나 Hans Peter Selasky (일명 hps) 아저씨가 만든 hps USB stack 인데 , 그 동안 만든 드라이버가 USB 와 많은 부분을 공유하다 보니 이런 일이 발생하였네요.

8.0 릴리즈에서 가장 큰 변화중의 하나를 들라면 아마도 USB stack 의 변화가 아닐까 합니다.  그 동안 USB 드라이버들이 모두 Giant Lock 에 둘러싸여져서 돌아갔었는데, hps stack의 경우 Giant free 이기 때문입니다. (좀 더 fine-grained locking 을 SMP 머신입장에서 제공하게 될 듯 합니다.)  하지만 사용자 입장에서는 잘 모르겠지만 드라이버를 개발하는 저에게는 이 변화의 장점보다 단점이 많이 보여서 나름 정리해 보겠습니다.

  • USB KPI가 모두 변해 버렸습니다.  이건 사용자 입장에서도 치명타이고 개발자 입장에서도 마찬가지입니다.  왜냐하면 그 동안 짜놓았던 프로그램을 다시 다 맟춰야 하니까요.  이로 인해 현재 old USB 에서 지원되던 upgt(4), urtw(4) 가 현재 CURRENT 에는 없습니다.  Porting 부터 다시 해야 합니다.  이걸 왜 해야 하는지도 이해를 못하겠습니다만..
  • USB 공부를 다시 해야 합니다.  낯선 KPI 및 xfer 구조체의 변화, PIPE 개념의 제거, xfer callback의 변화 등등 기존 USB1을 이용하여 개발하던 사람들은 처음부터 다시 시작하는 마음으로 공부를 해야 합니다.  이건 좌절이었습니다.
  • 자세한 문서를 찾을 수가 없습니다.  최고의 방법은 hps 아저씨에게 직접 물어보는 겁니다…
  • old USB에서 잘 작동하는 것들이 hps USB에서는 동작하지 않는 경우가 있습니다.  (물론 이 문제는 앞으로 조금씩 해결되어 갈 것이니 걱정하지는 않습니다.)

이 외에도 개발하면서 만나게 되는 문제는 여러가지가 있습니다만 좀 더 지켜볼 필요가 있을 듯 합니다.  저에게 좋은 소식 한가지는 Andrew Thompson 아저씨가 USB data buffer 구조를 기존 old USB stack 과 거의 흡사하게 변경하도록 계획하고 있다는 겁니다.  저는 100% 찬성이거든요.

오늘 저와 Sam Leffler 아저씨가 같이 만든 uath(4) 을 hps USB stack 용으로 commit 을 완료하였습니다.  (아직 build 에 연결하는 것과, amd64 나 big-endian 머신에서의 테스트를 더 해야 하지만..)  이제 upgt(4) 와 urtw(4) 를 porting 해야 합니다.

여전히 할 일이 많고 시간은 촉박합니다…. :-p


TrackBack URL

No comments yet.

Leave a comment