Diskuze: Obecně o přístupu k periferiím
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Je nějaká speciální instrukce pro práci s nimi nebo je někde vyhrazená pseudopaměť kterou sdílí procesor s onou periférií?
V zásadě se používají obě možnosti. Zjednodušeně řečeno, periferie jsou připojeny na sběrnici (spolu s procesorem), jehož instrukční sada obsahuje instrukce IN a OUT pro čtení a zápis z/do zařízení (zadává se také adresa zařízení na sběrnici). U někerých zařízení je také možné namapovat jejich registry (tzn. to, čím se ovládají) do fyzické paměti a pak do ní přistupovat +- jako do normální paměti.
Oba tyto způsoby používají ovladače operačního systému (instrukce IN a OUT aplikace obvykle vykonávat přímo nemůže, ani přímo nemůže mapovat fyzickou paměť, jakou si zamane). Ovladače pak pro aplikace exportují rozhraní, které se tváří jako soubory. Knihovny/aplikace pak s těmito soubory operují, a tím přeneseně operují se zařízeními
Takže to funguje stejně jako v linuxu, chápu to správně? Dá se k těm "souborům" nějak přímo přistupovat nebo jsou chráněné? Po letmém zagooglení na mě vypadlo několik stránek na kterých se psalo cosi o psaní vlastního driveru, je to nutné, nebo se dá jednoduše využít nějaký driver který už v počítači je?
Takže to funguje stejně jako v linuxu, chápu to správně? Dá se k těm "souborům" nějak přímo přistupovat nebo jsou chráněné?
Ano, jenom ty soubory nejsou přímo součástí souborového systému, ale jsou dostupné pod prefixem \\.\ , např. \\.\COM1 je název prvního sériového portu. Tyto "soubory" jsou chráněné tak, jak uznají ovladače, které je obsluhují, za nutné (aplikují se zde stejná pravidla jako třeba v souborovém systému).
Po letmém zagooglení na mě vypadlo několik stránek na kterých se psalo cosi o psaní vlastního driveru, je to nutné, nebo se dá jednoduše využít nějaký driver který už v počítači je?
Záleží, jakou situaci máš na mysli. Pokud chceš komunikovat s něčím po sériovém portu, ovladač nepotřebuješ (i u Arduina jej potřebuješ na ten jejich USB->sériák převodník, ne na tu samotnou komunikaci). Pokud máš nějaké vlastní USB zařízení s nestandardním rozhraním (tzn. nepoužívá jej žádné jiné známé zařízení), tak se bez něj asi neobejdeš.
Zobrazeno 4 zpráv z 4.