NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
tomekmichalhu:4.9.2017 23:46

Zdravím, potřeboval bych pošťouchnout správným směrem. Už dlouho mi v hlavě vrtá myšlenka, jak programy kominikují s periferiemi. Na všechno jsou knihovny, ale jak a v čem jsou psané. A jak vlastně k periferiím přistupuje procesor? 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í? Co třeba USB port? Jak se skrz něj pošlou data? Rozumím hardwaru (jednočipy, arduino, komunikace přes GPIO), ruzumím softwaru (c, c++, c#...), ale co je mezi tím? Jsem z toho zmaten.

 
Odpovědět
4.9.2017 23:46
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na tomekmichalhu
Martin Dráb:5.9.2017 0:05

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

Nahoru Odpovědět
5.9.2017 0:05
2 + 2 = 5 for extremely large values of 2
Avatar
tomekmichalhu:5.9.2017 6:32

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?

 
Nahoru Odpovědět
5.9.2017 6:32
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na tomekmichalhu
Martin Dráb:5.9.2017 9:07

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š.

Editováno 5.9.2017 9:08
Nahoru Odpovědět
5.9.2017 9:07
2 + 2 = 5 for extremely large values of 2
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.