Narzędzie deskryptora USB?

9

Czy ktoś mógłby polecić jakieś narzędzie podobne do kreatora do tworzenia deskryptorów urządzeń USB?

Większość (wszystkich?) Przykładów oprogramowania USB, które do tej pory analizowałem, definiuje deskryptory jako prostą tablicę bajtów w pliku .c, wypełnianą ręcznie (z niewielką pomocą makr).

Oczywiście nie jest to czarna magia, ale nadal uważam, że proste specjalistyczne narzędzie może być przydatne. Googling za to nie przyniósł żadnych użytecznych rezultatów, jednak ...

Malarze kodów
źródło

Odpowiedzi:

1

Narzędzie podobne do czarodzieja może być urocze przy pierwszym użyciu, ale potem przeszkadza. Lepszą metodą jest przyzwoita struktura deskryptorów w pamięci oraz kilka pomocnych makr i innej logiki przetwarzania wstępnego, dzięki czemu można dostarczyć informacje na wyższym poziomie, a odpowiednie bajty i bity zostaną automatycznie wypełnione.

Mój stos USB dla PIC 18 działa w ten sposób. Możesz zainstalować to i kilka innych rzeczy ze strony pobierania oprogramowania . Statyczna konfiguracja USB jest zdefiniowana w dwóch plikach. Szablony dla nich mają nazwy QQQ_USB.INS.ASPIC i QQQ_USB0.INS.ASPIC w katalogu SOURCE> PIC. Najpierw należy zdefiniować VID / PID, jakich punktów końcowych używasz i jakie typy przesyłania dla każdego punktu końcowego w pliku usb.ins.aspic. Następnie modyfikujesz deskryptory w usb0.ins.aspic przy pomocy odrobiny, którą musisz dostosować. Ponieważ już zna takie typy, jak typy przesyłania i rozmiary buforów, pozostawiasz te symbole w spokoju i po prostu zmieniasz to, co jest unikalne dla twojej implementacji. W większości przypadków jest to tylko zmiana nazwy producenta i nazwy produktu. Zapisujesz je jako zwykłe ciągi, a makro dba o właściwe formatowanie.

Olin Lathrop
źródło
oba sposoby mają zalety i wady. Zakładam, że poprawnie napisane narzędzie może przechowywać ustawienia w jakimś pliku tekstowym (aby można je było przechowywać w repozytorium kodu) i pozwalać na edytowanie ustawień i ponowne generowanie pliku deskryptora, kiedy tylko zajdzie taka potrzeba. Uważam, że może to być przydatne z co najmniej 2 powodów: a) upewnij się, że deskryptor jest prawidłowy, b) zapewnij jakąś przydatną pomoc kontekstową dla każdego pola. Innym przydatnym przypadkiem użycia jest import deskryptora z faktycznego urządzenia USB podłączonego do komputera.
Code Painters
@Czajnik: Czy w ogóle spojrzałeś na kod, o którym wspominałem? Naprawdę nie jest tak trudno wypełnić to, co chcesz.
Olin Lathrop
1
Tak, zrobiłem (btw, plik exe jest nieco nieprzyjazny dla użytkowników Linuksa). I już wcześniej tworzyłem własne deskryptory, jak powiedziałem, nie jest to dla mnie czarna magia. Chyba to kwestia osobistych preferencji, naprawdę :)
Code Painters