On 12.5.2020 11:05, Jozef Drahovsky (FreeBSD cz) wrote:
Vyzera to tak, ze dnes budem donuteny jeden ovladac napisat.
Nie na priamo pripojene zariadenie, ale na zariadenie pripojene do USB.

Na te urovni, pod kterou jsem nezalezl pri popisovani PCI nezalezl, se da rict, ze enumerace USB sbernice vypada velice podobne.

Jen je na kazde sbernici pouze jedno zarizeni a misto bridge se pouziva switch (sitari ovsem vedi, ze mezi temito dvema terminy je rozdil spis filozoficky nez realny funkcni).

System ju ako USB zariadenie rozpozna, ale to je vsetko.

To je ekvivalent toho, kdyz na PCI sbernici system vi o karte. V tomhle je to opravdu stejny - system si ze zarizeni precte identifikacni data (coz i u tebe nejspis jeste probehne) a pak dola _probe funkci ovladacu. Pokud se alespon jeden prizna ke schopnosti ovladat zarizeni (coz u tebe patrne nenastane) tak system zavola funkci _attach(). Dal uz to je plne v rezii kodu ovladace.

Vo windovse viem debagovať komunikaciu s USB hubom,
respektive aj s konkretnym zariadenim a vidim co si sw a kamera posielaju.

To je podminka nutna, k uspesnemu reverznimu inzenyrstvi nikoliv vsak dostatecna. jeste musis byt schopen pochopit co videna vymena dat znamena.

Prikladmo - podari se ti uhadnout, ze po zaslani nejake sekvence prikazu ze zarizeni zacalo lezt neco, co pravdepodobne jsou nasnimana video data. ta al emohou byt v prakticky libovolnem formatu, vcetne zcela proprietarniho, odvozeneho napriklad od technologickeho provedeni pouziteho CCD snimace. To nejakeho standardniho tvaru ta data muze postprocessingem prevadet az softwarovy ovladac. Nemusi byt vubec trivialni zjistit jak predavana data chapat.

Obdobne netrivialni vztah muze platit i pro konfiguracni data, ktera ovladac zariznei posila. To, ze v konfiguracnim dialogu ovladace zvysis jas o jednicku (a na nic jinyho nesahnes) vubec enznamena, ze zarizeni od ovladace dostane nejaka konfiguracni data, v nichz se jen v jednom miste bude hodnota o jednotku lisit od tech minulych.

Bylo by pro tebe ohromnou pomoci, kdybys pro dane zarizeni dokazal najit ovladac ve zdrojovyvh kodech pro jakykoliv (i zcel ajiny) operacni system. Rozhrani "nahoru" k systemu bude jine, ale "dolu" bude stejne jake potrebujes a usetris tim strasnou spoustu casu.

Pokud nic takoveho nenajdes, muze se stat, ze budes muset vzit ovladac pro Windows, disasssemblovat ho a tim potrebne "zdrojove kody" ziskat.

Nekdy se muze stat, ze nenajdes ovladac primo pro to co mas, ale vyrobcu hardwarovych chipu neni zas tak moc - takze i zarizeni se zcela ruznou identifikaci mohou byt postavene okolo stejneho chipu. A i kdyz jeho chovani muze zasadne ovlivnovat firmware, kterym vyrobce dany choip ozivil, neni nijak vyjimecne, ze takovy firmware cyvhazi z referencniho navrhu vyrobce hardware a tedy jsou si i nezavisle implementace vice ci mene podobne.

Pokdu bys to musel rozlejzat uplne kompletne sam, pocitej s tim, ze to muze byt casove opravdu extrenme narocnej projekt.

Vie ma niekto nasmerovat na nejaky zmyslupny priklad pisania ovladacov / drajvrov pre uzivatelske zariadenia pripojene cez USB.

Jakykoliv existujici ovladac USB - tedy neco z toho co je v /usr/src/sys/dev/usb/...

Treba /usr/src/sys/dev/usb/serial/u3g.c

Ideálne funkcný priklad, ktory by som postupne modifikoval.

FreeBSD nema nativni podporu pro video vstup (jedno z jakeho zdroje). Neco by se mozna podarilo najit v portech.

Dan


--
FreeBSD mailing list (users-l@freebsd.cz)
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem