450 likes | 621 Views
I RS. INTEGRISANI RAČUNARSKI SISTEMI PART 1. Nenad Jovičić nenad@etf.rs. Sadržaj vežbi. Računske vežbe: kroz nekoliko konkretnih projektnih zadataka biće: opisane najčešće korišćene periferije objašnjeno podešavanja tih periferija napisani programi koji obavljaju tražene funkcije
E N D
IRS INTEGRISANI RAČUNARSKI SISTEMI PART 1 NenadJovičić nenad@etf.rs
Sadržaj vežbi • Računske vežbe: • kroz nekoliko konkretnih projektnih zadataka biće: • opisane najčešće korišćene periferije • objašnjeno podešavanja tih periferija • napisani programi koji obavljaju tražene funkcije • prikazane osnovne tehnike rada sa razvojnim okruženjem. • Laboratorijske vežbe: • 3 laboratorijske vežbe, svaka sa trajanjem do 4 sata, • Izvode se u laboratoriji 18 na realnom hardveru, povezanom sa PC-jem i razvojnim okruženjem preko FET debugger-a.
Razvojno okruženje za pisanje softvera • Za potrebe razvoja softvera koristi se razvojno okruženje IAR Embedded Workbench. Kickstart verzija koja podržava pisanje 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.
Projektni zadatak 1 • Napisati asemblerski projekat za razvojni sistem RS-MSP430F449 koji na komandu pritiska tastera BCD sadržaj registra 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 asemblerska implementacija u dijalogu kreiranja projekta se izabira č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 MSP430
Hardverske specifičnosti • Unutar fajla Msp430.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 uslovnih 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 ili podataka koriste se direktive asemblera • Direktive asemblera su instrukcije kojima programer vodi asembler u cilju prevođenja asemblerskog koda na odgovarajući željeni način
Asembliranje • Asembliranje je proces prevodjenja asemblerskog (simboličkog) u mašinski kod. Alatka koja to radi se zove asembler. • Da bi proces bio izveden na odgovarajući način potrebno je podesiti odgovarajuće opcije.
Proces asembliranja • 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.
Debagovanje • 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čiji pristup - prekidi • Prekidi koji se generišu promenom stanja ulaznih pinova portova P1 i P2 se kontrolišu preko tri registra • PxIFG – registar flegova (x=1,2) • Očitani bit =0 – na tom pinu se nije dogodila promena koji izaziva prekid • Očitani bit =1 – na tom pinu se dogodila promena koji izaziva prekid • PxES – registar selekcije ivice (x=1,2) • upisani bit =0 – prekid se događa na rastuću ivicu signala na tom pinu • upisani bit =1 – prekid se događa na opadajuću ivicu signala na tom pinu • PxIE – registar dozvole prekida (x=1,2) • upisani bit =0 – prekid nije dozvoljen za promenu stanja na tom pinu • upisani bit =1 – prekid je dozvoljen za promenu stanja na 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.