Software projekti

Autor: Stevan Tošić

E-mail: tosic@mikroelektronika.co.yu

 

MCX11-MICROCONTROLLEREXECUTIVE ZA 68HC11

MCX11 je softverska komponenta koja obezbeđuje efikasnije korištenje mikrokontrolera 68HC11

Poznato je koliko gotove softverske bibioteke namenjene za rešavanje specifičnih problema olakšavaju programiranje. Ta činjenica nameće programerima zadatak da ispitaju postojeći softver koji im je dostupan pe nego što se sami upuste u realizaciju nečega što je urađeno, a dostupno. U slučaju da su određene programske rutine napisane ili se mogu nekako nabaviti treba ih iskoristiti. Samo u slučaju kada se u predviđenom vremenu ne mogu dobiti zahtevane programske ko-mponente, treba pristupiti pisanju sopstvenog programa. Jedan primer gotove softverske biblioteke je MCX11. MCX11, biblioteka funkcija za mikroko-ntroler MC68HC11, je efikasan softverski alat za razvojne real-time aplikacije u kojima se koristi Motorolin mikrokontroler MC68HC11. Napisan je u asembleru AS11. Za MCX11 se može reći da je:

  • deterministički
  • vođen događajima (event-driven)
  • multitasking
  • real-time.

MCX11 obezbeđuje mnoge osobine koje su napravljene za podržavanje rada u realnom vremenu. Ovim osobinama je obuhvaćeno:

  1. Multitasking do 126 taskova (task1, task2,..., task126). Svaki taskN (N = 1,2,...,126) je poseban potprogram. Prvi task, task1, je najvećeg prioriteta, sledeći task2 je manjeg prioriteta itd.

  2. Raspoređivanje taskova po prioritetima (uvek se izvršava najprioritetnijni task iz skupa spremnih taskova).

  3. Komunikacija između taskova i sinhronizacija preko semafora, poruka, i redova. Ovim se podrazumeva da se ne izvršava samo najprioritetniji task1, nego da se izvršavanje prebacuje i na ostale taskove. Kada bi se samo izvršavao jedan task, tada čitav sistem (osmišljen kao multitasking) ne bi imao smisla. Postoje situacije kada se taskovi međusobno “dogovaraju “ o tome koji od njih treba da se izvršava. Zbog toga postoje posebne funkcije koje obavljaju takve operacije.

  4. Podrška za vremenski uslovljene operacije. Omogućeno je definisanje tačnog vremenskog intervala po čijem isteku se treba obaviti neki posao.

  5. Brzo preključivanje konteksta taskova.

  6. Veoma mali zahtevi za RAM i ROM.

  7. Petnaest izvršnih funkcija (koje se nazivaju engl. Executive Service Routine - ESR) za rad u realnom vremenu.

MCX11 kao softverska komponentaMCX11 je kod napisan u asembleru AS11 koji nije izvršiv u obliku u kome se distribuira. Može se ase-mblirati odvojeno ili sa programskom aplikacijom i drajverima uređaja koji su potrebni za aplikaciju. MCX11 se može tretirati kao bilo koja druga softvers-ka biblioteka. Korisnik ne mora znati kako MCX11 interno realizuje svoje funkcije. Drugim rečima, korisnik samo treba da zna kako se koriste funkcije iz MCX11 da bi dobio željene rezultate. Na taj način, MCX11 više nalikuje na visoko-integrisanu komponentu (čip) koja je deo hardvera. Poznavanje pravila kako određeni ulazni podaci proizvode određene izlazne podatke je sve što je potrebno da bi se “čip” (tj, MCX11) uspešno koristio. Za razliku od pravog čipa, korisnicima MCX11 je na raspolaganju kernel (izvorni kod) tako da mogu obezbediti potpunu kontrolu za svoje aplikacije. Poznavajući izvorni kod, korisnik čak može proširiti funkcionalnost MCX11 dodavanjem novih mogućnosti. Namera ovog članka je da kratko opiše funkcije iz biblioteke, odnosno da objasni “ulaze” i “izlaze” softverske komponente MCX11.

Ciljno okruženje

MCX11 je projektovan za rad u razvojnim sistemima. Ne zahteva se nikakva pretpostavka o konfiguraciji ciljnog sistema. Obaveza je korisnika da definiše ciljno okruženje i da obezbedi da svi neophodni uređaji imaju softversku podršku. Nema razlike između rada u Single-Chip i Expanding Multiplexed modovima kod projektovanja MCX11. Ako postoje posebni zahtevi u aplikaciji za funkcijama koje trebaju odraditi određene poslove, korisnikova je odgovornost da ih obezbedi odnosno programira

Izvorni fajlovi MCX11

MCX11 se distribuira kao kolekcija fajlova. Sledi opis ovih fajlova i njihova namena.CLKDRVR.ASAS11 izvorni kod za RTI (Real Time Interrupt) drajver i RTI interapt servisnu rutinu. ESREQU.ASU ovom fajlu se nalazi lista od petnaest funkcija.MCX.ASU ovom fajlu se nalazi jezgro (kernel) MCX11. Samo u slučaju kada treba modifikovati postojeći kernel nepohodno je menjati taj fajl. Ovde se “nalazi” disopečer koji određuje koji task se treba izvršavati u određenom trenutku.SYSTEM.ASAS11 izvorni kod sadrži informacije o karakteristikama aplikacije i treba ga vrlo pažljivo proučiti. Takođe sadrži inicijalizacioni kod koji je neophodan da bi se softver prilagodio potrebama konkretne aplikacije (broj taskova, semafori, redovi itd.). Fajl je tako konfigurisan da bi zadovoljio zahteve za demonstracioni program koji se nalazi u fajlu TEST.AS.TEST.ASOvaj fajl sadrži izvorni kod sa potprogramima, koje piše korisnik za potrebe svoje aplikacije,a koji pre-dstavljaju taskove (procese) i koji demonstrira upotrebu funkcija iz MCX11. Kod ne radi ništa posebno praktično osim što daje korisniku kratak uvid u način kako treba pristupiti realizaciji konkretne aplikacije.VECTORS.ASAS11 izvorni kod koji sadrži sve vektore (ukazuju na interapte) koji se koriste u MCX11. ASSEMBLE.BATMS-DOS batch fajl koji se koristi za asembliranje MCX11 i TEST programe. Takođe proizvodi listing fajl.MANUAL.DOCPriručnik za korištenje MCX11 je sadržan u ovom fajlu i u njemu se opisuje kako se koriste pojedine funkcije odnosno kako radi svaka od 15 “crnih kutija” (ESR). README.ASNeke beleške o MCX11.Svi ovi fajlovi se nalaze u jednom direktorijumu. Pažnja programera treba biti usmerena na pisanje koda u fajlu TEST.AS (koji se može drugačije imenovati). Konkretan problem programera je da “razbije” celu aplikaciju na potprograme koji predstavljaju taskove. Svaki task obavlja specifičan zadatak. Malo teži problem je da se odrede prioriteti taskova i na kraju njihovi međusobni odnosi (način na koji komuniciraju).Pokretanjem beč fajla ASSEMBLE.BAT povezuje se kernel (MCX.AS) i korisnikov program (TEST.AS).

2b21.jpg (7565 bytes)
Slika 1. Raspored jezgra OS i korisničkog programa u memoriji

Funkcije MCX11

Lista funkcija koje su deo MCX11 se nalaze u fajlu ESREQU.AS. Obično se MCX11 funkcije dele u više klasa na osnovu zadataka koje obavljaju. Funkcije (ESR) se dele u pet klasa koje su namenjene za rad sa:

  1. Semaforima
  2. Porukama
  3. Redovima
  4. Upravljanje taskovima
  5. Vremenskim zahtevima.

Za svaku funkciju (ili ESR) se daje kratak opis funkcionalnosti svake ESR unutar klase sa pozivnim parametrima respektivno. Pozivni parametri koji su potrebni za svaki ESR pojavljuju se u zagradama. Tamo gde se zahteva dva ili više parametara, oni su odvojeni zarezima. Navedena pozivna sekvenca nije stvarna odnosno parametri su navedeni u pseudoeziku sa ciljem da se što jasnije objasni princip rada svake funkcije. Poenta je u pripremi odgovarajućih ulaznih parametara koji su potrebni da bi funkcija pravilno obavila zadatak. Potprogram može imati povratnu vrednost. Stvarni način pozivanja zahteva detaljnije izlaganje.U paragrafu ispod, ime funkcije je zatvoreno između dve tačke. Ovo će biti konvencija koja se koristi kod MCX11 za označavaje ESR. Za definisanje vrsta (ili tipa) argumenata se koriste sledeće oznake:

  • SEMA broj semafora
  • TASK broj taska
  • QUEUE broj reda
  • TOCK vrednost tajmera
  • PNTR pokazivač na podatak
  • MSG adresa poruke

Za rad sa semaforima se koriste funkcije koje definišu “saradnju” taskova.

.wait. (SEMA) čeka se signal na semaforu
.signal.
(SEMA) davanje signala semaforu (SEMA) davanje signala semaforu (SEMA) davanje signala semaforu
.pend.
(SEMA) resetuje stanje semafora na PENDing . (SEMA) resetuje stanje semafora na PENDing . (SEMA) resetuje stanje semafora na PENDing .

Funkcije za rad sa porukama obezbeđuju način prenosa velike količine podataka između taskova korištenjem pointera (adresa). Potvrda prijema poruke je takođe omogućena zbog eventualne sinhronizacije rada taskova. Dole se navode format MCX11 poruke i prototipovi funkcija

.send. (MSG,TASK) slanje poruke tasku
.sendw.
(MSG,TASK,SEMA) slanje i čekanje potvrde prijema
.receive.
(TASK) primanje poruke (TASK) primanje poruke (TASK) primanje poruke

Funkcije za rad sa redovima obezbeđuju način dodavanja više-bajtnih paketa informacija između taskova sa automatskom sinhronizacijom taskova.

.dequeue. (QUEUE,PNTR) uzimanje ulaznih podataka iz reda
.enqueue.
(QUEUE,PNTR) slaganje podataka u red. (QUEUE,PNTR) slaganje podataka u red. (QUEUE,PNTR) slaganje podataka u red.

Direktive za upravljanje taskovima koje obezbeđuje MCX11 dozvoljavaju određeni stepen kontrole rada taskova i njihovu međusobnu interakciju

.resume.(TASK) obnovi izvršavanje taska
.suspend.
(TASK) suspenduj navedeni task(TASK) suspenduj navedeni task(TASK) suspenduj navedeni task
.terminate.
(TASK) terminiraj navedeni task(TASK) terminiraj navedeni task(TASK) terminiraj navedeni task
.execute.
(TASK) izvršavanje navedenog taska od početka.

Funkcije vezane za tok realnog vremena obezbeđuju sinhronizaciju taskova sa vremenskim događa-jima. Kao dodatak, obezbeđena je uopštena šema vremenski baziranih semafora

.delay.(TASK,SEMA,TOCK) vremensko čekanje
.timer.
(TASK,SEMA,TOCK) lista tajmera za task/semafor(TASK,SEMA,TOCK) lista tajmera za task/semafor(TASK,SEMA,TOCK) lista tajmera za task/semafor
.purge.
(TASK,SEMA,PNTR) izbriši tajmer za task/semafor.

Gornji opis petnaest funkcija koje predstavljaju “interfejs” korisnika-programera i operativnog sistema je vrlo kratak i nepotpun. Praktični primeri i vežbanje su neophodni za ovladavanje mogućnostima MCX11. O tome u sledećem broju.


Pročitajte više o ovoj temi
Vezni igrač
Programiranje u MCX11
Semafori
Tajmeri
cMCX11 Real Time operativni sistemi u programskom jeziku C

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