Portál AbcLinuxu, 9. května 2025 16:01
Peter
V podstate jde o to, ze nektere aplikace a ovladace maji extremni naroky na presnost, kdy maji mit procesor. Treba kazde 2 nanosekundy. Normalni kernel toto nedokaze zarucit, jednou to treba stihne, jindy o fous ne a potreti nekdo zrovna provadi neco narocneho a tak se ten proces vzbudi az za 10 milisekund. Jenze ten driver treba kvuli tomu prijde o cenna data, ktere nestihl precist z externiho zarizeni. A kvuli tomu vybuchne jaderna elektrarna nebo umre pacient.
Proto existuji real time operacni systemy, ktere dokazi zarucit, ze se proces dostane ke slovu ve chvili, kdy to potrebuje.
Z pohledu programování je RT-Linux minisystém běžící jako vícevláknová aplikace na úrovni jádra, kdy celé jádro včetně celého user space beží jako jeden thread s nejmenší prioritou, přičemž je v podstatě možné z RT části volat omezené množství funkcí normálního jádra. Takže to máte jako normální vícevláknovou aplikaci, která má jen navíc některé věci ohlědně časování, řízení přerušení apd Ovládáte-li knihovnu pthread, tak umíte i RT-Linux. ) Pro komunikaci s běžnými proecesy v user space se používá buď sdílená pamět nebo speciální RT FIFO. Na stranu komunikace s HW si to každá aplikace obvykle řeší sama, existuje ale dost knihoven pro RT komunikaci po síti, měřicími kartami atd.
RT-Linux upřednosťnuji proto, protože odpovídá v podstatě příslušné POSIX normě, takže pokud nepoužijete některé vylomeniny, tak je to pak přenosné i na další systémy. RTAI (a i RT-Linux 1.X) používal vlstní API, což je trošku nepříjemné, ale možná se to už změnilo. RTAI také špatně nese situaci, kdy v RT části běží více vláken bez nějaké systematické vlastní synchronizace.
Co se licence na RT-Linux týče, tak jsou v podstatě 3: a) plně komerční, kdy podle toho, zda je se zdrojáky, či bez, podpory multiprocesingu atd je cena od 1000 USD výše, b) open RT licence, ta umožňuje používat RT linux i pro uzavřené komerční projekty bez licnčních poplatků za podmínky, že můžete použít jen oficiální verze distribuované FMSlabs, c) zmíňená GPL licence. Doufám, že jsem je pochopil dobře. Ale stejně v tom je dost chaos a budu rád, pokud by to někdo objasnil. Už jen otázka binárních modulů a privátního kódu v nich má několik názorových proudů. )
void *periodic_update_digi_triggers(void *p)
{
struct sched_param sp;
hrtime_t abstime;
unsigned short port=0x300;
unsigned short data;
hrtime_t perioda=100000;
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL);
sp.sched_priority=sched_get_priority_min(SCHED_FIFO)+3;
pthread_setschedparam(pthread_self(), SCHED_FIFO, &sp);
abstime=clock_gethrtime(CLOCK_REALTIME);
while (1) {
data=inw(port);
data=~data;
outw(data, port+1);
abstime+=perioda;
clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, hrt2ts(abstime), NULL);
}
return NULL;
}
Nektere reakce od Linuse tak jak se je docitam (tedy zprostredkovane) mi pripadaji jako od cloveka, ktery si na kritice vybere jen kousek ktery mu sedne a zbytek ignoruje :o(
V podstatě FSMLabs čas od času vydá vlastní verzi s kódem jen od nich a tu bafne banda lidí a dál si ji rozvíjí. Tyto rozšíření jsou dostupné na FTP FSMLabu, ale oni je do dalších verzí nepoužijí. Takže se majetkem firmy se další kód nestane (pokud se samozřejmě nějak s autorem nedohodnou), spíše jsou další autoři točeni z toho, že jejich úpravy jsou ignorovány do dalšího hlavního vývoje. Trochu začínám mít pocit, že se tento spor asi brzo vyřeší, že se FSM na linux úplně vybodne a přejde se k BSD klonům.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.