Co to jest identyfikator produktu na USB i czy muszę go kupić dla mojego projektu?

11

Próbuję opracować urządzenie przenośne, które pozwoli mi przesyłać dane z jednego urządzenia pamięci USB na drugie bez użycia komputera / laptopa. Czytałem przewodnik dla programistów autorstwa Jana Axelsona, w którym natknąłem się na sekcję, w której napisano, że aby stworzyć dowolne urządzenie USB, należy kupić identyfikator dostawcy USB / identyfikator produktu. To samo czytam na Forum Implementatorów USB. Nie jestem pewien znaczenia tego identyfikatora produktu w moim projekcie.

  • Czy to coś w rodzaju adresu MAC dla komputerów / laptopów i czy będę go potrzebować?

  • Czy jest to coś wymaganego tylko do projektowania urządzeń peryferyjnych, a nie urządzeń takich jak to, co chciałbym wdrożyć (co wydaje mi się bardziej jak host)?

Infusion of Wormwood n Asfodel
źródło
Wygląda na to, że w takim przypadku będziesz działał jako gospodarz, więc nie będziesz go wymagał zgodnie z odpowiedzią Woutera.
PeterJ
@PeterJ Przykro mi, że przyniosłem to późno, ale planuję również opracować interfejs ekranu dotykowego, aby przeoczyć i zarządzać przesyłaniem urządzeń. Czy nadal mogę korzystać z identyfikatora dostawcy / produktu?
Infusion of Wormwood n Asfodel
Jeśli to połączenie zostało podłączone przez USB do tego samego urządzenia hosta, byłoby to urządzenie i będzie ono potrzebne. Zobacz tutaj cennik: usb.org/developers/vendor . Naprawdę potrzebujesz tylko jednego, aby użyć logo i do produkcji, jeśli jesteś na etapie koncepcji / testowania, możesz po prostu go wymyślić. Nie przydzielono oficjalnego dostawcy o numerze ID 666, na przykład zauważyłem jakiś czas temu. Poza tym nie jestem w 100% pewien, że i tak byś go potrzebował, konflikty nie byłyby problemem, gdyby nie miał on łączyć się z komputerem i prawdopodobnie nie potrzebowałbyś logo USB, chociaż nie jestem pewien prawna strona rzeczy.
PeterJ
Planuję zastosować go w tym samym urządzeniu, co ekran dotykowy w smartfonie. Czy to spowoduje, że będzie on obciążony tą opłatą?
Infusion of Wormwood n Asfodel
Nie, będzie dobrze. Tak naprawdę chodzi tylko o kompatybilność produktów końcowych, gdy są one podłączane bezpośrednio do komputera.
PeterJ

Odpowiedzi:

12

Nie jestem pewien, co dokładnie chcesz zrobić, ale jeśli jest to urządzenie hosta, naprawdę nie potrzebujesz USB VID / PID.

USB VID / PID urządzenia podrzędnego jest używany przez hosta do identyfikacji sterowników, które mają być używane dla urządzenia podrzędnego. Urządzenie hosta nie musi się identyfikować z urządzeniem podrzędnym, dlatego nie potrzebuje VID / PID.

Wouter van Ooijen
źródło
Urządzenie, którego można użyć do przesyłania danych z jednego urządzenia pamięci USB (pendrive) na drugie, eliminując w ten sposób laptopa / komputer, które są najczęściej używane do tego celu.
Infusion of Wormwood n Asfodel
Przeredagowałem pierwsze zdanie, na wypadek gdyby było niejednoznaczne.
Infusion of Wormwood n Asfodel
Ignoruje to urządzenia OTG, które mogą być zarówno hostem, jak i slave.
Passerby
@Passerby: Gdy urządzenie OTG jest urządzeniem, potrzebuje VID i PID, a gdy jest to host, nie ma. Więc musisz kupić VID na czasy, gdy jest to urządzenie.
Warren Hill,
5

Tylko urządzenia potrzebują VID i PID, a nie hostów.

Identyfikator dostawcy lub identyfikator VID to 16-bitowy numer, który należy kupić w usłudze USB Foundation. Jeśli chcesz zrobić urządzenie USB (i w pełni grać zgodnie z zasadami), VID identyfikuje twoją organizację.

Identyfikator produktu lub PID to także 16-bitowa liczba, ale jest pod twoją kontrolą. Kupując VID, masz prawo używać go z każdym możliwym PID, więc daje to 65536 możliwych kombinacji VID: PID. Chodzi o to, aby kombinacja VID: PID jednoznacznie identyfikowała konkretny poduct globalnie.

Gwarantuje to, że żaden komputer nie będzie widział dwóch różnych urządzeń z tym samym VID i PID, ponieważ komputer używa ich do identyfikacji urządzenia, w przeciwnym razie może wystąpić konflikt.

Uwaga: W przeciwieństwie do MAC-ID celem kombinacji VID: PID jest jednoznaczna identyfikacja typu urządzenia, o ile system operacyjny wie, jakich sterowników użyć, nie zawsze jest konieczne rozróżnienie dwóch identycznych urządzeń. Na przykład dwie karty pamięci USB sprawiają, że komputer nie tylko wie, jakie urządzenie to wie, do którego portu jest podłączony.

Po podłączeniu urządzenia USB do systemu operacyjnego urządzenie prosi o podanie identyfikatora VID i PID i podaje mu adres, z którego będzie nadal korzystać, dopóki urządzenie nie zostanie usunięte (lub komputer zostanie wyłączony).

Gdy komputer zna VID i PID, sprawdza, czy już je zna. Jeśli tak, ładuje odpowiednie sterowniki; jeśli nie, masz możliwość zainstalowania odpowiednich sterowników. Ten proces nazywa się wyliczaniem.

Z drugiej strony MAC-ID sam w sobie nie dostarcza żadnych informacji na temat tego, czym jest urządzenie (komputer, drukarka, router itp.), Ale jednoznacznie identyfikuje urządzenie: dwa identyczne komputery będą miały różne MAC-ID tak, jakby oba zostaną podłączone do tej samej sieci Ethernet, która nie będzie działać poprawnie. Jednak dwa identyczne karty pamięci USB będą miały identyczne VID i PID.

Jeśli chcę wyprodukować i sprzedać 1 milion identycznych urządzeń USB, muszę kupić tylko jeden VID. Jeśli chcę wyprodukować i sprzedać 1 milion urządzeń Ethernet, muszę kupić 1 milion MAC-ID

Warren Hill
źródło
Dlaczego po prostu nie wydali wykrywalnego identyfikatora urządzenia USB, takiego jak adres Bluetooth w urządzeniach Bluetooth, a nawet adresy MAC w laptopach?
Infusion of Wormwood n Asfodel
@StaceyMyers Rozszerzyłem swoją odpowiedź, aby wyjaśnić różnicę w tym, co stara się uzyskać kombinacja USB VID: PID w przeciwieństwie do MAC-ID. Nigdy nie projektowałem urządzenia Bluetooth, więc nie rozumiem go wystarczająco dobrze, aby komentować.
Warren Hill,
Jest to bardzo przydatna informacja dla ogólnej wiedzy na temat USB (dlatego też głosowałem za nią), ale nie sądzę, że odpowiada na pytanie OP (jak robi to odpowiedź zaakceptowana), ponieważ rzeczą, którą OP chce zaprojektować, byłby host USB. Nie sugeruję jednak żadnych zmian w tym momencie - tylko FYI.
cp.engr
2

Pamiętaj, że niektórzy dostawcy sprzętu, na przykład Microchip , chcą sublicencjonować swój własny identyfikator dostawcy swoim klientom za darmo.

martinm
źródło
Zasadniczo będziesz mógł wyprodukować maksymalnie 10 000 jednostek swojego urządzenia, jeśli w ten sposób podlicencjonujesz VID dostawcy mikrokontrolera.
cp.engr