Fórum Root.cz

Hlavní témata => Hardware => Téma založeno: Electrin 23. 01. 2018, 10:03:55

Název: Mikrokontroléry a POSIX
Přispěvatel: Electrin 23. 01. 2018, 10:03:55
Ahoj,

rád bych se na vás obrátil s dotazem z embedded sféry: v naší takřka garážové firmě fušujeme do vývoje řídicích automatik s mikrokontroléry ARM Cortex-M0/4, FW píšeme rovnou pro holé železo, bez RTOS atd. Máme vytvořené aplikační knihovny, bohužel dost divokým způsobem, zejména co se týče ovladačů. Do budoucna bude vhodné implementovat určitý standard, mně by se líbil POSIX, hlavně z důvodu možného nasazení některého z POSIX-like RTOS či možnosti snažšího přechodu na embedded Linux.

Máte někdo zkušenosti s psaním ovladačů pro malé MCU standardizovaným způsobem, zejména pro POSIX? Co to všechno obnáší? A vyplatí se to vůbec?

Děkuji moc za případné odpovědi.
Název: Re:Mikrokontroléry a POSIX
Přispěvatel: v0.0 23. 01. 2018, 11:22:53
IMHO to nestojí za to, v čem je třeba write(fd_do4, &value_do4, sizeof(value_do4)) lepší než do_set(4, true)?
Název: Re:Mikrokontroléry a POSIX
Přispěvatel: Electrin 23. 01. 2018, 15:37:29
Uznávám, že nasazení standardu typu POSIX atd. přinese určitou režii, ale na druhou stranu mi zajistí jednodušší přenositelnost kódu a jednotné API.
V aktuálním čase připomínají naše knihovny pohádku o kočičce a pejskovi...  :)
Název: Re:Mikrokontroléry a POSIX
Přispěvatel: v0.0 23. 01. 2018, 15:47:05
Uznávám, že nasazení standardu typu POSIX atd. přinese určitou režii, ale na druhou stranu mi zajistí jednodušší přenositelnost kódu a jednotné API.
V aktuálním čase připomínají naše knihovny pohádku o kočičce a pejskovi...  :)
pokud vím tak neexistuje garance, že pro tenhle technologický IO bude k dispozici posixové API a pokud existuje, tak záleží na driveru jak interpretuje data, tj. můžete mít soubor pro GPIO modul nebo jinde soubor pro každý pin zvlášť a dostanete něco jako
#if DESKA_TYP1
value = 0x00ff01000;
write(fd, &value, 1);
#elif DESKA_TYP2
do_write(4, true);
#else
#error deska not supported
#endif

zkrátka to co teď máte schované v knihovnách (jak má být) přenesete do aplikace
Název: Re:Mikrokontroléry a POSIX
Přispěvatel: bez_registrace 23. 01. 2018, 15:51:47
Normálně se to dělá tak, že si uděláte soubory "hw.h" a "hw.c" kam dáte funkce které pracují přímo s HW. V případě změny MCU akorát vytvoříte jiné "hw.h" a "hw.c" - samozřejmě ne vždy je použití elegantní (pokud potřebujete rychle zapisovat do registrů a "smrdí" vám makra, atd. atd.)
Název: Re:Mikrokontroléry a POSIX
Přispěvatel: Ovrscout 23. 01. 2018, 16:49:47
Pár názorů tu už padlo, ještě doplním něco k zamyšlení

Za mne pokud to jde, tak se spíš se snažit IO oddělit do extra souboru/ů než se snažit za každou cenu unifikovat.
Většinou je to docela dobré řešení a je hned vidět kolik kde a jak se využívá RAM/FLASH)

Ono pokud je třeba velká míra abstrakce a znovupoužitelnosti, tak pak už je na zvážení jestli nepoužít nějaký plnotučnější OS, i za cenu většího procesoru/ram/flash. A tyhle střední/menší procesory nechat na jednodušší věci, případně věci kde potřebujete mít zaručené odezvy atp. - v tom případě jsou ale unifikační mezivrstvy někdy spíše naškodu, obzvlášť pokud se na ně spoléháte ale nekontrolujete je.

Editace: (bylo myšleno ponechat střední/menší procesory jako spolupracující jednotky k tomu velkému)
Název: Re:Mikrokontroléry a POSIX
Přispěvatel: Ovrscout 23. 01. 2018, 17:14:43
Zapomněl jsem reagovat ještě na část
Do budoucna bude vhodné implementovat určitý standard, mně by se líbil POSIX, hlavně z důvodu možného nasazení některého z POSIX-like RTOS či možnosti snažšího přechodu na embedded Linux.

Možná se pletu, nejsem specialista na posix, ale posix definuje api směrem k aplikaci, ne směrem k "ovladačům".
Ovladač je podle mne spojen s daným konkrétní operačním systémem a nevystavuje přímo posix api(to je až další vrstvou OS).
Navíc jestli jsem to pochopil správně, tak by se nejdřív psali tyhle ovladače do stávajících aplikací a až pak by se portovalo na nějaký OS. Tj tu posix mezivrstvu by také musel někdo nvrhnout/napsat/odladit.
Jinými slovy jsem skeptický k snadnému portování ovladačů a podle mne to bude spousta zbytečné práce.
Název: Re:Mikrokontroléry a POSIX
Přispěvatel: Electrin 24. 01. 2018, 14:28:47
Pánové,

děkuji moc za vaše názory a připomínky. Když to tedy vezmu kolem a dokola, tak pro začátek bude asi nejlepší učesat a vnést řád do našich knihoven, bez toho, aniž bych nad nimi vyvíjel další vrstvu.

I když se v další iteraci standardizaci nebráním, hlavně z hlediska šťouravosti a osobní zvědavosti  :D