USB identifikace

Miroslav Mraz mraz na seznam.cz
Úterý Listopad 20 11:36:09 CET 2012


Teď už je informací dostatek. 4 EP je na composite CDC+MSC málo i když
intr ep v CDC celkem k ničemu není. Ale nevím, jak by se choval ovladač,
pokud byste ho vynechal (příp. ho ve firmware neobsluhoval). Takže tudy
asi ne.
Dvojí enumeraci považuji za dost divokou v tom, že zatímco na webu
najdete funkční příklady na composite device, tu dvojí enumeraci budete
muset ve firmware vyřešit sám, s tím vám nikdo asi moc nepomůže, není to
standard. A budete muset zasahovat do té nejnižší vrstvy firmware, která
je dost složitá a přitom naprosto zásadní. Já osobně bych si to dobře
rozmyslel. V tomto případě bych použil jiný PID pro každou enumeraci -
prostě pokaždé by to bylo úplně jiné zařízení.
Co se týče logického vypnutí rozhraní v composite, myslím, že by stačilo
pro CDC zahazovat data přicházející do device z PC, MSC by stačilo aby
ohlásilo nulovou kapacitu média nebo jen zapnout read-only flag. Ale
zase musíte řešit zprávy media changed při opětném zapnutí. V každém
případě by obě rozhraní systém vždy viděl a měl by pro ně mít ovladače.

Já jsem si s něčím podobným hrál loni, mám aplikováno kompozitní
zařízení CDC+MSC, s tím, že je na SPI uP připojena SDHC karta. Obě
rozhraní jsou vždy aktivní, ničemu to nevadí. Jde z toho normálně
bootnout systém, na kartě mám SLAX. Je to ale dost pomalé. CDC je pak
použito pro ostatní komunikaci s uP.

Mrazík

Tomáš Hamouz píše v Út 20. 11. 2012 v 08:59 +0100:
> MM> Neporadí protože moc nerozumí zadání. To jako že po připojení proběhne
> MM> enumerace jako CDC a po nějakém timeoutu se odpojí a proběhne nová
> MM> enumerace jako MSC ? To zní dost divoce, i když i to je možné.
> 
> Tak jsem to myslel.
> Není na tom snad nic divokého, pokud se použije pokaždé jiné PID.
> 
> MM> Asi by bylo lepší použít composite device, které má implementovány obě
> MM> třídy. K tomu máme ale málo informací - musíte mít v procesoru dostatek
> MM> endpointů nehledě na tom že nevíme, zda vám takové řešení vyhovuje.
> 
> Já ten problém potřebuju vyřešit dokonce dvakrát.
> U jednoho MCU je endpointů dost (STR91, 8 EP), u druhého málo
> (AT91SAM7, 4 EP), čímž se to komplikuje.
> 
> Pokud bych použil composite device, dají se jednotlivá zařízení
> logicky vypnout? Tzn. přihlásí se composite device se dvěma
> zařízeníma, ale jedno z nich je vypnuté a pak dojde k nové enumeraci,
> ale aktivní bude to druhé?
> 
> Vůbec netvrdím že chci něco složitého, v podstatě mi stačí i odpověď
> "je to zbytečná komplikace, lepší je použít separátní PID".
> 
> Tomáš




Další informace o konferenci Hw-list