Software projekti

Autor: Stevan Tošić

E-mail: office@mikroe.com

 

VEZNI IGRAČ

U fudbalskom timu postoji vezni igrač koji obično nosi dres sa brojem 10 i koji je mozak cele ekipe. U mikrokontrolerskom sistemu takva uloga je poverena dispečeru...

Pretpostavljam da ste često bili u prilici da uživate u majstorijama Piksija, legende fudbala. U čemu je tajna njegovog majstorstva? Odgovor je da u pravom trenutku pronalazi najbolje postavljenog saigrača, i njemu dodaje loptu. Nešto slično se događa i u računarskom sistemu. Programi koji izvršavaju određene zadatke se nazivaju “drajveri” i namenjeni su za podržavanje rada ulazno/izlaznih uređaja (i nekih drugih spoljašnjih događaja). Broj takvih uređaja zavisi od zadataka koji se moraju obavljati. Drugi (odgovorniji) program koji se naziva dispečer, odlučuje kada se treba pokrenuti neki drajver u zavisnosti od situacije u sistemu. Jednostavno rečeno, ovakva softverska podrška koja omogućuje korisniku da koristi rapoložive fizičke uređaje (ekran, tastaturu, printer, miš, hard disk itd.) naziva se operativni sistem (OS). Ako se prihvati činjenica da je hardverska podrška takva kakva jeste, za sistem programera uvek ostaje izazov da maksimalno iskoristi raspoložive računarske resurse. Sistem programer koristi neki od programskih jezika (asembler, C ili C++) koji mogu direktno pristupati srcu mašine (registri, memorija itd.) kako bi pisanjem OS omogućili što bolju spregu običnog korisnika i mašine. U daljem tekstu će se pod sistemom podrazumevati skup hardverskih komponenti, a pod operativnim sistemom softver.

1b91.gif (11295 bytes)
Slika 1. Merenje brzine dva motora

Mikrokontroler i operativni sistem

Kako je ovde reč o mikrokontrolerima (minikompjuterima) čiji je zadatak da odrade neke specifične poslove, za projektovanje i izgradnju softverske podrške (za obavljanje tih poslova) neophodno je dobro poznavanje ulazno-izlaznih jedinica. Vrsta poslova koji se mogu odraditi pomoću mikrokontrolerskog sistema su obično merenja i prikaz fizičkih veličina (brzina obrtanja motora, temperatura u prostoriji, pritisak itd.) i eventualno regulacija tih veličina. Obavljanje ovih poslova zahteva određene periferne jedinice. To mogu biti 7-segmentni displeji kao izlazne jedinice za prikaz izmerene veličine, male tastature kojima se može uticati na neke parametre merenja ili upravljanja i merne sonde kao ulazne jedinice (Slika 1). Poželjno je ostvariti i komunikaciju mikrokontrolera sa PC računarom radi čuvanja, obrade i vizuelnog predstavljanja podataka.
Svaki od navedenih uređaja zahteva drajver koji ga opslužuje i povezuje sa ostatkom sistema. Za pisanje drajvera potrebno je poznavanje karakteristika perifernog uređaja relevantnih za programiranje. Sa pretpostavkom da su drajveri napisani, ostaje da se pokuša uskladiti njihov rad sa ciljem da sistem kao skup delova oživi. Ovaj deo posla može izgledati relativno jednostavan. Obično to nije tako lako, naročito ako se u sistemu brzo smenjuje niz događaja. Dodatni otežavajući faktori su upravljački algoritmi koji se moraju odraditi u zadatom vremenu (opet treba vremena!). Drugim rečima, kako zahtevi i broj perifernih uređaja rastu vremenska podela posla postaje sve komplikovanija. Naravno, prva reakcija može biti da treba nabaviti moćnije “mašine” (brže, sa više mogućnosti) i sve će biti OK, što i nije loša ideja. Međutim, koliko dodatnih novčanih troškova zahteva takvo rešenje je novi problem, koji postaje naročito neugodan ako se radi o velikim serijama. Ovde se treba prisetiti ranije pomenutog motiva da se raspoloživi hardver treba maksimalno iskoristiti (pristup je više inžinjerski od uobičajenog “kupi novo”), odnosno da se napravi takav OS koji podržava rad čitave “skalamerije” u stvarnom (realnom) vremenu. Sada bi trebalo biti jasno zbog čega se nekim OS (RTOS) dodaje atribut “stvarno vreme” (engl. Real-Time).
Programeri obično instinktivno koriste programske mehanizme da bi uspešno uskladili rad na više poslova u sistemu, bilo da su ti poslovi samostalni ili međusobno utiču jedni na druge. Na početku razvoja OS ovakvi intuitivni mehanizmi su davali zadovoljavajuće rezultate. Razvoj industrije je nametnuo zahtev za standardizacijom i formalizacijom rada OS. Raznovrsnost i složenost zadataka zahtevaju složeniji i bolje osmišljen softver. Od procesora se traži da brzo reaguje na vanjske (i unutrašnje) događaje. Obično je reakcija na događaj vremenski ograničena, odnosno postoji kritično vreme u kome se mora obaviti zadatak.

Primena RTOS-a

Osnovna činjenica kod projektova-nja real-time OS (RTOS) sa jednim procesorom je da se u jednom trenutku može izvršavati samo jedna procesorska naredba, a da broj različitih poslova (operacija ili zadataka) može varirati. Posledica toga je da poslovi moraju deliti procesorsko vreme. U takvim uslovima od najvećeg je značaja da se određeni vremenski intervali u kojima je procesor dodeljen određenom poslu raspodele tako da ceo sistem skladno funkcioniše. To znači da procesor malo radi ovo, malo ono, tačno onda kada je to potrebno, i tako redom. Ilustracije radi na Slici 2a i 2b masnim linijama je prikazana podela procesorskog vremena za podržavanje rada tastature, displeja1, displeja2, (označeni kao 1 i 2), obradi rezultata merenja brzine obrtanja vratila motora i komunikacije sa računarom.

 1b92a.gif (6238 bytes)
Slika 2.a Vremenska raspodela rada procesora

U prvom slučaju (Slika 2.a) nema tastature ni komunikacije sa računarom. Zadatak se sastoji u tome da se svakih 5 ms meri brzina dva motora (brojači 1 i 2), da se ulazne digitalne reči preračunaju u vrednosti brzine (broj obrtaja u minuti - engl. Rotation Per Minute RPM) koje se zatim ispisuju na displejima 1 i 2. Nema nepredviđenih događaja, a jedino je kritično da se unutar 5 ms obave navedeni zadaci. Prosečan mikrokontroler može obaviti navedene zadatke u zadatom vremenu. Situacija postaje nezgodnija kada se u sistem dodaju tastatura i mogućnost komunikacije sa računarom (Slika 2.b.). Na pritisak tastera na tastaturi se mora reagovati u smislu da se kod tastera zapamti, a to zahteva da procesor obradi taj događaj. Ako od strane računara stiže poruka prema mikrokontroleru (ili mikrokontroler šalje poruku računaru), tada se i ovom događaju mora posvetiti procesorsko vreme. Ova dva događaja se mogu pojavljivati nepredviđeno i ne smeju se ignorisati. Na neki način oni kradu procesorsko vreme i time smetaju ostalim poslovima tako da se dolazi u situaciju kada se postavlja pitanje da li se ceo posao može odraditi korektno. Posebna tema su principi na kojima se bazira programiranje u real-time OS da bi odrađivanje celokupnog posla bilo što efikasnije. Neka to ostane otvoreno pitanje za daljnju diskusiju.


1b92b.gif (13687 bytes)

Slika 2.b Raspodela rada procesora kada se u sistem dodaju tastatura i komunikacija sa PC računarom

Asembleri i kompajleri za programski jezik C ili C++ se mogu nadograditi skupovima funkcija koje podržavaju rad u stvarnom vremenu. Ove dodatne softverske biblioteke se mogu nabaviti nezavisno od asemblera i kompajlera i koštaju neretko i više nego sami jezici. Ako se pravilno koriste navedene funkcije stiče se utisak da je sam hardver moćniji jer je procesor maksimalno zaposlen. Za upotrebu funkcija iz takve biblioteke nije neophodno razumevanje samog jezgra (kernela) RTOS. Njima treba pristupiti kao crnim kutijama za koje se zna šta se dobija na izlazu za poznati ulaz. Kada se izvežba korišćenje funkcija koje su deo RTOS-a tada postoje dobri uslovi da se raspoloživi mikrokontrolerski sistem maksimalno iskoristi.


Pročitajte više o ovoj temi
MCX11 MicroController eXecutive za 68HC11
Programiranje u MCX11
Semafori
Tajmeri

C o p y r i g h t  1998 mikroElektronika. All Right Reserved. Za sva pitanja obratite se redakciji