[megoldva]Milyen kernelre fejlesszünk - device driver

Fórumok

Már megint egy példa program, az ldd3 -ból: scull
kuid_t, uid_eq, kernel linux/uidgid.h hiányzik!
Jelenleg, Debian Wheezy linux-3.2.0-4-686-pae kernelben nincs meg ez az include fájl.
Keresgéltem, mivel is kellene pótolni, megkerülni stb. Végül a "Linux CrossReference" kuid_t keresésekor kiderült, hogy ez a 3.2 - 3.3 -ig hiányzik, majd újra előkerül - na ez kiverte a biztosítékot :(
Most akkor min fejlesszek?
Egyedi hw, semmire sem kellő device driver ...
Ha mondjuk áttérek a Jessie -re ott 3.16.0-4-amd64 kernel?
Ott viszont teljes a káosz - most épp több mint 100 csomagot kell frissíteni, benne a gcc -t ...
Valami javaslat?
Nem tudok versenyt futni több tízezer fejlesztővel ...

Hozzászólások

wheezy-backports-bol is felrakhatsz ujabb kernelt, ugy nem kell 100+ csomagot frissiteni.

Rákeresel a neten ldd3 examples linux 3 portra.
Van dögivel.

Nagyon sok alrendszer alakult, egyszerűsödött azóta, hogy megírták a könyvet.
Meg a sysfs sokkal erősebb teret kapott. Sokkal strukturáltabb, rendszerezettebb lett az egész.

Karakteres eszközhöz már lehet, hogy platform device körítést is tennék (ha nem tartozik fizikai buszhoz), hogy sysfs bejegyzéseket tudj létrehozni. Regiszterek beállításához és OOB adathoz jobban szeretik.
Vagy misc device, ha gyorsan akarsz valamit.

Meg: http://lxr.free-electrons.com

Sokat keresgéltem.
A misc drivert (ha jól értem ehhez kapcsolódik a többi, így csak minor számot kap) nem találom az alap kernelben. Az ldd3 -ban szó nincs erről az alfajról. Mintha a misc driver nem tudna interruptot használni? - sok kis cikk van róla, mintaprogramokkal, de egyik sem használ interruptot (vagy legalábbis én nem találtam).
Az "ldd3 examples linux 3 port" -ra rá kerestem, az első oldalon erre a HUP node -ra lyukadtam ki :( Eleve, egy állítólag portolt verziót húztam le a git -ről, de mint mondtam itt volt egy rövid idő amíg néhány dolgot kivettek majd visszaraktak a kernelbe.
Fejlettség? sysfs szép, de elsőre működjön, aztán csicsázunk.
Szóval most jobban örülnék egy kicsit határozottabb javaslatnak, melyik distrót használjam? - csak nem egy LFS -t kell ehhez építenem.
Senkinek nincs tapasztalata, amit megoszthat?

* Én egy indián vagyok. Minden indián hazudik.

https://github.com/duxing2007/ldd3-examples-3.x
Nyilván keresni tudni kell, nem csak egyféle keresőkifejezés létezik.

Mi ez a marhaság, hogy nem kezelhetsz interruptot? Ezt honnan vetted? Mi köze van egy kommunikációs interfacenek (chardev) az interrupthoz?

Amúgy ugyanolyan chardev, mint a többi, kevesebb körítéssel.

Példaprogramnak ott az összes driver...

Disztró teljesen mindegy.

Ezt viszont nagyon köszönöm!
Sajnos nem az első eset, hogy a keresési képességeim nem túl jók :(
Bár az sem kizárt, hogy túl gyorsan várok eredményt?
Az persze továbbra is zavar, hogy egy komplett header file hol megjelenik, hol eltűnik a kernelből. Alig esik szó róla. Ráadásul, ha jól értem a "scull" minta driverben ez a felhasználói réteg memória megosztásával kapcsolatos - szerintem nekem ez nem fog kelleni.

* Én egy indián vagyok. Minden indián hazudik.

Elég sokat lehet olvasni mindenféle változásról. Itt automatikusan gyűjtik is: http://upstream.rosalinux.ru/kernel/
Meg az lxr nagyon hasznos erre. Ha elkezdesz drivert írni, rövid úton rájössz, hogy érdemes használni.

Az egész capable() és társai csak arról szólnak esetünkben, hogy egyszerre csak egy uid férhessen hozzá az eszközhöz (pl. más user ne zavarhassa meg a kommunikációt).

Lehet hogy a Squeeze lesz a megoldás, az oldstable?
Ott a kernel 2.6.32 (erre esküszik az ldd3 is) ráadásul mivel a hardware teljesen egyedi - soha nem lesz mainstream (vagy ha mégis hát átírom) - legfeljebb majd kell egy jó archív distro hozzá.

* Én egy indián vagyok. Minden indián hazudik.

Nagy segítséggel találtam az ldd3 -hoz készült minta program gyűjteményt, amelyet le lehet fordítani a Wheezy 3.2 kernelével.
Nyilvánvaló, hogy a megoldás parciális - azaz az én pillanatnyi gondomat megoldotta.
Köszönöm a hathatós segítséget!

* Én egy indián vagyok. Minden indián hazudik.