Real-Time operativni sistemi

Započeo gagi, 18.11.2010, 14:04

prethodna tema - sledeća tema

gagi

Za sve one koji su zainteresovani za real-time sisteme evo par linkova ka kernelima koji mogu poslužiti u njihovim projektima. Ono što ja najčešće koristim je FreeRTOS:
http://www.freertos.org/
Reč je o odličnom mini kerenlu koji je portiran na preko 30 različitih mikrokontrolera i sa zaista odličnom podrškom u vidu široke zajednice i jako dobrog foruma. Kernel je besplatan, mada postoji i komercijalna verzija koja se zove OpenRTOS ali po mom mišljenju sva funkcionalnost koju nudi komercijalna verzija se može postići i sa besplatnom verzijom i malo rada.

Pored ovog kernela vredi obratiti pažnju i na Contiki
http://www.sics.se/contiki/
Takođe open-source a projekti u kojima je korišćen ovaj kernel mogu biti zanimljivi CSL-u.

eCos je takođe open-source
http://ecos.sourceware.org/
O njemu ne mogu mnogo da kažem jer nemam nekog iskustva sa njim. Na prvi pogled deluje kao nešto što vredi probati.

TinyOS je kernel koji je usmeren ka bežičnim senzorskim mrežama
http://www.tinyos.net/

Sada jedno atipično rešenje koje zaista vredi pogledati jer rešenje kombinuje intezivnu primenu UML-a i mašina stanja u rešavanju problema. Reč je o QP framework-u
http://www.state-machine.com/
Knjiga koja je predstavljena na ovom sajtu je takođe vredna pažnje.

RTEMS OS je rešenje sa kojim su moje kolege radile i zaista su zadovoljni.
http://www.rtems.com/
Ovo rešenje nije za male mikrokontorlere, ali može se probati na Nios-u a proizvođač na sajtu nudi i rešenje koje radi pomoću VirtualBox-a i na kome se može bezbolno probati ovaj OS. Zanimljivo je da je pre nego sto je postao open-source bio u vlasništvu američke vojske koja ga je i razvila a NASA ga koristi u svojim rešenjima
http://www.rtems.com/sites/default/files/Application-Dawn.pdf

Do sada sam spominjao uglavnom open-source rešenja. Komercijanla rešenja koja su vredna pažnje su
MicroC/OSII: http://micrium.com/page/products/rtos/os-ii
VxWorks: http://www.windriver.com/products/vxworks/
ThreadX: http://www.rtos.com/
Nucleus: http://www.mentor.com/embedded-software/nucleus/
QNX Neutrino: http://www.qnx.com/products/neutrino-rtos/index.html

Dakle ovde sam naveo rešenja koja se mogu koristiti na širokom spektru hardverskih platformi od onih osmobitnih do veoma jakih 64-bitnih procesora. Po meni studentima može da bude zanimljiv neki manji kernel jer na praktičnom primeru mogu da vide dosta stvari o kojima su učili iz operativnih sistema, da malo poboljšaju svoje programersko znanje jer će videti mnogo kvalitetnog koda a uz to često mogu da vide implementaciju mrežnih protokola u okviru kernela ili kao dodatak kernelu.

Marko Аcović

Deluje kao jako zanimljiva tema. Skinuo sam ovaj prvi kernel koji si rekao (FreeRTOSV6.1.0). Now what? :)
Samo sam na blic pogledao. Koliko sam skontao ovo je neka kolekcija C biblioteka. Koje razvojno okruzenje se koristi. Kako bih mogao da napravim i isprobam neki demo program? Da li mi je za to potreban neki mikrokontroler ili postoji emulator ili sl?

gagi

Svaki kontroler ima svoje razvojno okruzenje (MPLab, LPCXpresso, IAR...). Kada raspakujes FreeRTOS imas oko tridesetak primera za razne kontorlere. Svaki primer je uradjen u onom okuzenju koje se koristi za njega (npr PIC24 demo je u MPLab-u). Pored toga, postoje Win i Linux simulator kao zasebni "portovi". Nisam ih probao (radio sam ga na PIC24 i LPC1768) ali mozda mozes da probas Windows port. Imas na zvanicnom sajtu pod "More advanced..." kratak opis (ja nisam stigao do advanced opcija  :D). Ja sam jedno vreme želeo da probam POSIX simulator (odustao usled hroničnog nedostatka vremena) jer bih tako mogao da pišem i testiram  deo aplikacije za kontorler (tj FreeRTOS) na računaru a da ih onda "spuštam" na hardver. Pored samog kernela (imaš detaljan opis onoga što pruža na sajtu, tako da neću opisivati) u većini portova postoji TCP/IP stack, negde USB podrška, FAT32...

Kada sam dobio da radim jedan update firmvera sa PIC18 na PIC24 i pogledao kod koji treba da uradim shvatio sam da ću mnogo više vremena potrošiti da uradim update nego da napišem novu verziju. Kod je bio "super loop" i sve je bilo apsolutno povezano sa hardverom tako da bih lakše razdvojio sijamske blizance nego aplikaciju od hardvera. Počeo sam malo da tragam i našao ovaj kernel pa sam rešio da pokušam sa njim. Pokušaj mi se isplatio, zaista nisam imao nikakvih problema u radu i toliko mi je olakšano programiranje da i ne razmišljam o promeni platforem osim ako ne naiđe neki izuzetno dobar razlog (čitaj: sve dok imam i jedan bajt rama). Pored PIC-a, radio sam i na LPC-u i kada jednom nasetujem hardver više i ne razmišljam o njemu već se fokusiram isključivo na apkikaciju. Nisam probao, ali mislim da i prenošenje aplikacije sa jedne platforme na drugu ne predstavlja veći napor i da se može uraditi u par sati (ako postoji port). Trenutno pokušavam da na LPC1768 "uvaljam" TCP/IP stek, FTP klijent, HTTP server, USB Host, FAT32, ethernet bootloader i naravno UART.


P.S. Ako probaš simulatore voleo bih da čujem tvoja iskustva jer ja sam radio samo na "živom" hardveru.