450 likes | 614 Views
NRS. NAMENSKI RAČUNARSKI SISTEMI PART 2. Autor : Nenad Jovičić. Razvojno okruženje za pisanje softvera.
E N D
NRS NAMENSKI RAČUNARSKI SISTEMI PART 2 Autor: NenadJovičić
Razvojno okruženje za pisanje softvera Za potrebe razvoja softvera koristi se razvojno okruženje IAR Embedded Workbench. Kickstart verzija koja podržava razvoj svih aplikacija koje će biti razvijane u okviru kursa se može download-ovati sa sajta www.iar.com. U okviru paketa integrisani su editor, asembler, C kompajler, softverski simulator, kao i podvarijanta simulatora koja zajedno sa FET debugger-om čini emulator.
Projektnizadatak 1 Napisatiasemblerskiprojekatza razvojni sistem RS-MSP430F449 kojinakomandupritiskatastera BCD sadržajregistra R12 ispisuje na jedan sedmosegmentni displej. Istovremeno, dok je taster pritisnut jedna LE dioda treba da svetli i obrnuto. Projekat treba da se sastoji iz jednog fajla asm.s43 u kome se nalazi glavni program koji testira pritisak tastera i fajla function.s43 u kome se nalazi funkcija za ispis sadržaja registra na displej WriteLed
Opis hardvera Razvojni sistem RS-MSP430 poseduje više funkcionalnih celina od kojih su one interesantne za ovaj projekat prikazane na slici
Organizacija softvera • Pisanje dobrog softvera podrazumeva njegovu podelu na logičke celine, zgodne za samostalnu implementaciju. • Ovaj projektni zadatak se može podeliti na nekoliko programskih celina: • Inicijalizacija resursa mikrokontrolera • Deo glavnog programa koji vrši očitavanje tastera • Funkcija koja vrši uključivanje diode • Funkcija koja vrši ispis sadržaja registra R12 na sedmosegmentni displej
Kreiranje projekta S obzirom da je tražena implementacija u asembleru u dijalogu kreiranja projekta se bira čist asemblerski projekat
Osnovni fajl Predefinisani Template za asemblerski projekat je prikazan na slici
Hardverske specifičnosti Msp430.h je opšti “include” fajl za celu familijuMSP430
Hardverske specifičnosti Unutar fajlaMsp430.h se vrši dalja redirekcija na posebno izabran mikrokontroler
Include fajl Korišćenje pojmova definisanih u “include” fajlu olakšava kodiranje ali i kasniji prelaz sa jednog na drugi mikrokontroler
Program – niz asemblerskih instrukcija • U ovom projektu biće korišćene instrukcije za: • pristup portovima, • ispitivanje uslova, • instrukcije uslovni skokova • i instrukcije za poziv i vraćanje iz potprograma.
Glavni program S obzirom na tražene zahteve po pitanju funkcionalnosti, dijagram toka programa bi trebalo da izgleda ovako
Glavni program – detekcija pritiska tastera Algoritam detekcije pritiska tastera se zasniva na detekciji opadajuće ivice na ulaznom pin-u Glavni program mikrokontrolera treba ciklično (periodično) da očitava stanje ulaznog pin-a,poredi ga sa vrednošću iz prethodnog očitavanja i u slučaju detekcije prelaska sa 1 na 0 izvršava zahtevanu radnju. U ovom projektu zahteva se ispis sadržaja registra R10 da sedmosegmentni displej.
Digitalni portovi • Svaki port se kontroliše sa četiri registra • PxIN – ulazni registar (x=1-6) • Očitani bit =0 – na ulazu je nizak logički nivo • Očitani bit =1 – na ulazu je visok logički nivo • PxOUT – izlazni registar (x=1-6) • upisani bit =0 – na izlazu je nizak logički nivo • upisani bit =1 – na izlazu je visok logički nivo • PxDIR – registar selekcije ulaza ili izlaza (x=1-6) • upisani bit =0 – pin je ulazni • upisani bit =1 – pin je izlazni • PxSEL – registar selekcije alternativnih funkcija (x=1-6) • upisani bit =0 – ulazno/izlazna funkcija pina • upisani bit =1 – alternativna funkcija dodeljena nekoj periferiji
Glavni program - kod Glavni program
BIT instrukcija BIT instrukcija se koristi za testiranje stanja bita u registru.
BIS i BIC instrukcije Koriste se za Set-ovanje/Clear-ovanje pojedinačnog bita u registru.
XOR instrukcija Logička instrukcija koja xor-uje podatak sa konstantom.
AND instrukcija Instrukcija koja vrši logičko I dva podatka.
Instrukcije uslovnih skokova JZ i JNZ Ove instrukcije izvršavaju ili ne skok u zavisnosti od stanja flag-a u SR.
Bezuslovni skok JMP Bezuslovni skok na adresu.
Direktive asemblera • Program predstavlja niz asemblerskih instrukcija i podataka smeštenih negde u memoriji. Da bi se asembleru reklo gde se i na koji način smeštaju ti blokovi instrukcija ilipodatakakoriste se direktive asemblera • Direktiveasemblerasuinstrukcijekojimaprogramervodiasembler u ciljuprevođenjaasemblerskogkodanaodgovarajućiželjeni način
Asembliranje Asembliranje je procesprevodjenjaasemblerskog (simboličkog) u mašinskikod. Alatkakoja to radi se zoveasembler. Da bi proces bio izveden na odgovarajući način potrebno je podesiti odgovarajuće opcije.
Procesasembliranja Izveštaj o procesu asembliranja nalazi se u tzv. list fajlu.
Linkovanje Linkovanje je proces u kome se mašinski kod iz različitih asemblerskih fajlova prevodi u jedan jedinstvenfajl koji se može spustiti u memoriju mikrokontrolera. Sama reč “link” ukazuje da se radi o povezivanju odvojenih delova, u našem slučaju glavnog programa i potrporgrama u jedinstvenu celinu.
Linkovanje Najvažnija uputstva za linker se nalaze u “linker command file”-u
Linkovanje Izveštaj o radu linkera se nalazi u tzv. map fajlu. U njemu je mapiran položaj blokova podataka ili koda u memoriji.
Linkovanje U linker fajlu se daje i pregled zauzetosti memorije.
Kompajliranje Komanda MAKE vrši kompajliranje i linkovanje projekta.
Debug-ovanje Debagovanje je proces u kome se uz pomoć softverskog simulatora, ili harverskog debagera vrši testiranje aplikacije.
Debug-ovanje Debagovanje u simulatoru podrazumeva simulaciju spoljašnjih događaja relevenatnih za projekat. Dobra simulacija je ona koja najvernije simulira spoljašnje događaje. U našem slučaju radi se o simulaciji pritiska na taster S4, koji se očitava preko bita 2 porta P1. Najjednostavniji i najpregledniji vid simulacije je single steping. Problem je što to može dugo da potraje i zamorno je. Mnogo efikasniji vid debagovanja je postavljanjem Brekapoint-a na “dobra” mesta. Generalno Breakpoint se postavlja tamo gde treba simulirati spoljnji događaj preko registra (u našen slučaju pritisak tastera), i tamo gde se očekuje reakcija na taj događaj.
Drugačijipristup - prekidi • Prekidikoji se generišupromenomstanjaulaznihpinovaportova P1 i P2 se kontrolišupreko tri registra • PxIFG – registarflegova (x=1,2) • Očitani bit =0 – na tom pinu se nijedogodilapromenakojiizazivaprekid • Očitani bit =1 – na tom pinu se dogodilapromenakojiizazivaprekid • PxES – registarselekcijeivice (x=1,2) • upisani bit =0 – prekid se događanarastućuivicusignalana tom pinu • upisani bit =1 – prekid se događanaopadajućuivicusignalana tom pinu • PxIE – registardozvoleprekida (x=1,2) • upisani bit =0 – prekidnijedozvoljenzapromenustanjana tom pinu • upisani bit =1 – prekid je dozvoljenzapromenustanjana tom pinu
Simulacija prekida 2 U modu rada sa simulatorom svi prekidi se iniciraju isključivo preko opcija “Forced interrupts”. I pod uslovom da je inicijalizacija svih registara korektno izvedena, naizmenično menjanje stanja u ulaznom registru P1IN neće izazvati prekid.