Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ARM7 Procesor
ARM7 Procesor
SEMINARSKI RAD
ARM7 PROCESOR
Predmet: Mikroprocesorska sistemi
Profesor:
Studenti:
Aleksandar Mladenovi 10017 Davor Dejkovi 9885 Bojan Pavlovi 10035 Milo Milenkovi 9989
Mikroprocesorski sistemi
ARM7 procesor
SADRAJ
Uvod..........................................................................................................................4
1. Arhitektura ARM procesora .............................................................................5 1.1 Arhitekturalno naslee .....................................................................................5 1.2 Pogled programera na ARM model .................................................................5 1.3 Razvojni alati ARM .........................................................................................7 2. Organizacija i implementacija ARM ....................................................................9 2.1 Trostepeni komunikacioni kanal (pipeline) ...................................................10 2.2 Peto-stepeni ARM processor .......................................................................12 3. ARM jezgra procesora ......................................................................................14 3.1 ARM7TDMI .................................................................................................14 3.1.1 Hardverski interfejs ...................................................................................15 3.1.2 Kontrola takta ............................................................................................15 3.1.3 Memorijski interfejs ..................................................................................15 3.1.4 MMU interfejs ...........................................................................................17 3.1.5 Stanje .........................................................................................................17 3.1.6 Konfiguracija .............................................................................................17 3.1.7 Prekidi .......................................................................................................18 3.1.8 Inicijalizacija .............................................................................................18 3.1.9 Podrka za debug-ovanje ...........................................................................18 3.1.10 Interfejs za debug-ovanje ........................................................................19 3.1.11 Interfejs koprocesora ...............................................................................19 3.1.12 JTAG interfejs .........................................................................................19 3.1.13 TAP informacije ......................................................................................19 3.1.14 Boundary scan .........................................................................................19 3.1.15 ARM7TDMI u sintezi .............................................................................20 3.2 ARM8TDMI .................................................................................................21 3.3 ARM9TDMI .................................................................................................22 4. Skup instrukcija ARM .........................................................................................23 4.1 Tipovi podataka sa kojima ARM manipulie ...............................................23 5. Tipovi instrukcija procesora ARM ....................................................................23 5.1 Instrukcije za pribavljnje podataka i memorisanje ....................................23 5.1.1 Instrukcije za prenos podataka tipa jedna re ili neoznaeni bajt ..............23 5.1.2 Instrukcije za prenos podataka tipa polurei i oznaenih bajtova ..............26 5.1.3 Viestruke instrukcije za uitavanje i smetanje ........................................28 1
Mikroprocesorski sistemi
ARM7 procesor
5.2 Instrukcije za razmene sadraja memorije i registra .................................29 5.3 Instrukcije pristupa status registara ............................................................30 5.3.1 Instrukcije za prenos stanja statusnog registara u registre opte namene ..30 5.3.2 Instrukcije za prenosa registara opte namene u statusni registar ..............31 5.4 Instrukcije za obradu podataka ....................................................................33 5.4.1 Aritmetike operacije .................................................................................36 5.4.2 Logike operacije .......................................................................................37 5.4.3 Operacije premetanja sadraja registara ...................................................37 5.4.4 Operacije poreenja ....................................................................................37 5.4.5 Neposredni operandi ...................................................................................38 5.4.6 Pomereni registarski operandi ....................................................................38 5.5 Razliite aritmetike instrukcije ...................................................................39 5.5.1 Prebrojavanje poetnih nula (CLZ(Count Leading Zeros) ........................39 5.6 Instrukcije mnoenja .....................................................................................40 5.7 Instrukcije grananja .......................................................................................42 5.7.1 Grananje sa linkom (B, BL) .......................................................................42 5.7.2 Grananje sa linkom i razmenom (BX, BLX) ...............................................43 5.8 Instrukcije za generisanje softverkoih prekida.............................................45 5.8.1 Softverski prekid (SWI) .............................................................................45 5.8.2 Instrukcija prekidna taka (BKPT samo za v5T arhitekturu) ..................47 5.9 Instrukcije koprocesora .................................................................................47 5.9.1 Operacije podataka koprocesora .................................................................47 5.9.2 Prenos podataka koprocesoru .....................................................................48 5.9.3 Prenos registara koprocesora ......................................................................50 6. Hardver i Softver Proces kreiranja ...................................................................52 6.1 Verifikaciona Platforma ....................................................................................52 6.2 Programerski pogled na svet...........................................................................57 6.3 Hardverski pogled na svet ..............................................................................59 6.4 Softverski razvojni alati ..................................................................................59 6.4.1 Editor ...........................................................................................................59 6.4.2 Revizija izvornog koda ................................................................................59 6.4.3 Kompajler ....................................................................................................60 6.4.4 Debager ........................................................................................................60 6.4.5 Simulator .....................................................................................................60 6.4.6 Razvojna ploa ............................................................................................61 6.4.7 Integrisana razvojan sredina (IDE) ..............................................................61 6.5 Povezivanje softvera za debagiranje ..............................................................61 6.5.1 JTAG ...........................................................................................................62 6.5.2 STUB ...........................................................................................................62 6.5.3 Direktna konekcija .......................................................................................62 6.6 Tipovi softvera .................................................................................................63 6.6.1 Inicijalizacija sistema i HAL ......................................................................63 6.6.2 Dijagnostiki test program ..........................................................................63 6.6.3 Operativni sistem za rad u realnom vremenu (RTOS) ................................64 6.6.4 Pokretacki programi i aplikacioni softver ..................................................64 6.7 Proces razvoja softvera ...................................................................................64 6.8 Hardverska razvojna sredstva .......................................................................64 6.8.1 Editor ...........................................................................................................65 2
Mikroprocesorski sistemi
ARM7 procesor
6.8.2 Kontrola revizije izvornog koda ..................................................................65 6.8.3 Alati .............................................65 6.8.4 Pokrivenost koda .............................................66 6.8.5 Alati za debag-ovanje ..................................................66 6.8.6 Programski jezici za verifikaciju .........................67 6.8.7 Tvrdjenja ..............................67 6.8.8 Definisanje debag-ovanja ...............................................................67 6.8.9 Memorijski modeli ..................................................................68 6.8.10 Mikroprocesorski model.........................................69 6.8.11 Proces dizajniranja hardvera ......................................70 6.8.12 Pregled mikroprocesora......................................70 6.8.13 Interakcija hardvera i softvera............................71 7.Opis Starter Kit-a....................................................................................................73 7.1. Kratak uvod ...................................................................................................73 8. ARM starter kit ....................................................................................................74 8.1 Opti opis .........................................................................................................76 CPU .......................................................................................................................82 Kratkospajai .........................................................................................................83 Napajanje (USB plug) ...........................................................................................86 JTAG .....................................................................................................................87 LM386 NF pojaava ............................................................................................88 Pobuda LED dioda ................................................................................................89 Tasteri ....................................................................................................................91 Kolo za prilagoenje MAX563 .............................................................................91 9. Povezivanje sistema i kreiranje aplikacije .........................................................94 Zakljuak....................................................................................................................98 Dodatak A - Prikaz detaljne eme mikrokontrolera LPC 2138 ............................99 Literatura..................................................................................................................102
Mikroprocesorski sistemi
ARM7 procesor
Uvod
ARM procesor pripada RISC familiji procesora. RISC koncept potie iz 80-tih godina i programa istraivanja sa Univerziteta Stanford i Berkeley. ARM je razvijen na Kembridu u Acorn kompaniji iz Engleske u periodu od 1983. do 1985. Bio je to prvi RISC mikroprocesor koji je razvijen za komercijalnu namenu. Jedan od nedostataka RISC dizajna bio je taj da su programi koji su se izvravali na njima bili veliki. Ovo je posledica kompajlera koji su morali da generiu due sekvence od prostijih instrukcija da postignu iste rezultate kao CISC. Dananji raunari su prividno (interno) dvoadresni, a eksterno jednoadresni, jer asemblerske instrukcije imaju samo jedan memorijski argument, a ostalo su konstante i lokalni registri. Nijedan procesor nije posebno primenljiv bez odgovarajue podrke koju mu pruaju hardver i softver, kao i razvojni alati. ARM je opremljen alatom koji sadri: emulator za izvoenje skupa instrukcija za hardversko modeliranje i softversko testiranje, asembler, C i C++ kompajlere, linker i simboliki debuger. Za razumevanje hardversko/softverske ko-verifikacije neophodno je razumeti princip rada alata kao i proces koji se koristi za razvoj hardvera i softvera. Do skora, integracija softvera sa hardverom se izvodila u laboratorijiskom okruzenju konstrukcijom hardvera i pokretanjem softvera. Debagiranje se izvodilo opremom kao to su : in-circuit emulatori (ICE), logiki analizatori i osciloskopi. Debagiranje u kasnijoj fazi projektovanja, kada je pritisak na projektante zbog definisanog roka najvei, je naporan i stresan zadatak. Ko-verifikacijom menja se ovakav pristup jer se koristi virtuelni prototip hardvera koji se izvrava na softveru pre nego sto je prototip dostupan. Testiranje karakteristika gradivnih blokova sistema je danas jednostavno mogue korienjem development kit-ova. To su sistemi za razvoj projektovani po odreenom standardu. Oni su u stanju da ispitaju realne karakteristike odreenih komponenti, kao na primer mikrokontrolera. Dobar development kit sadri funkcionalni primer ureaja koji elimo projektovati i na kome moemo testirati kreirani kod, kao i odgovarajue integrisano razvojno okruenje (Integrated Development Environment - IDE). U sastavu ovakvog IDE okruenja se obicno nalazi editor, debugger, simulator, asembler i kompajler (u najveem broju sluajeva C kompajler). Development kit ima ugradjene gradivne blokove (periferije) kojima se moe pratiti uitavanje i izvravanje neke aplikacije. Ti gradivni blokovi su memorija, portovi za komunikaciju, delovi za hardversku konfiguraciju... Moraju postojati i kablovi i alati za povezivanje i download koda u procesor. U nastavku teksta bice objanjena arhitektura, struktura i mogunosti jednog starter kit-a kao i njegov skup komandi namenjenih za testiranje rada sistema zasnovanih na mikrokontroleru tipa LPC2138.
Mikroprocesorski sistemi
ARM7 procesor
Osobine koje je ARM odbacio, a bile su koriene na RISC I arhitekturi su: Rad sa registarskim prozorima Odloeno grananje Izvrenje svih instrukcija u jednom ciklusu
Mikroprocesorski sistemi
ARM7 procesor
Statusni registar tekueg programa (CPSR) se koristi za uvanje statusnih markera. Ovi markeri se postavljaju nakon izvrenja aritmetiko-logikih operacija. Sadraj ovih bitova definie reim rada procesora,nain prihvatanja prekida i stanje nakon izvrenja operacija. Registri R0 do R12 su registri opte namene, R13 se koristi kao pokaziva magacina,R14 kao registar za povezivanje podprograma, a R15 kao programski broja. Memorija se vidi kao linearno polje bajtova numerisanih od nule pa sve do 2 32 - 1 . Procesor moe da manipulie sa podacima tipa bajt (8 bita), polurei (16 bitova) ili re(32 bita). Rei su uvek poravnjane na granici 4 bajta. ARM je arhitektura tipa Load - Store. To znai da sve aritmetiko-logike instrukcije manipuliu nad sadrajem registara, a jedine dve instrukcije pomou kojih se vri obraanje memoriji su operacije Load i Store. Pomou Load se dobavlja podatak iz memorije u registar, a pomou Store sadraj registra se smeta u memoriju. ARM procesor podrava i zatieni tj. supervizorski reim rada. Mehanizam zatite obezbeuje da se na nivou aplikacionih programa ne moe upravljati sistemskim resursima, a time naruiti integritet u radu sistema.
Mikroprocesorski sistemi
ARM7 procesor
Sve ARM instrukcije su 32-bitne. Najznaajnije osobine skupa instrukcija ARM procesora su sledee: uitaj-smesti arhitektura. 3-adresne instrukcije za obradu podataka. uslovno izvrenje svake od instrukcija. ukljuenje vrlo jakih viestrukih uitaj-smesti instrukcija registara mogunost da se izvedu opte operacije pomeranja kao i opte aritmetiko-logike operacije u jednoj instrukciji, koja se izvrava u jednom taktnom ciklusu. proirenje na otvoreni skup instrukcija preko skupa instrukcija koprocesora, to ukljuuje i dodavanje novih registara i tipova podataka programerskom modelu. 16-bitna predstava skupa instrukcija velike gustine u Thumb arhitekturi.
ARM upravlja U/I periferijama (disk kontrolerima, mrenim interfejsima...) kao memorijski mapiranim ureajima sa podrkom za prekide. Unutranji registri u ovim ureajima se javljaju kao lokacije koje se mogu adresirati unutar memorijske mape ARM-a. Registri mogu biti itani ili zapisivani pomou istih uitaj smesti instrukcija kao i bilo koja druga memorijska lokacija.
Mikroprocesorski sistemi
ARM7 procesor
C source
C libraries
asm source
C compiler .aof
assembler
linker
object libraries
.aif
debug
system model
ARMsd
ARMulator
development board
ARM-ov C kompajler je kompatibilan sa ANSI standardom za C i podran je od strane odgovarajuih biblioteka standardnih funkcija. Kompajler koristi ARM standard za poziv procedure za sve spoljanje dostupne funkcije. Moe mu se narediti da generie asemblerski izvorni izlazni kod umesto ARM-ovog objektnog formata tako da kod moe biti ispitan, ili ak i optimizovan, pa zatim dat na asembliranje.Kompajleru se moe pridruiti i Thumb kod.
ARM asembler je pravi makro asembler koji proizvodi ARM objektni izlazni format koji se moe linkovati sa izlazom iz C kompajlera. Linker prihvata jedan ili vie objektnih fajlova i kombinuje ih u izvrivi program. On reava simbolika referenciranja izmeu objektnih fajlova i poziva objektne module iz biblioteka po potrebi programa. Moe asemblirati razliite komponente programa na vei broj razliitih naina, zavisno od toga da li se program izvrava u RAM ili ROM memoriji, da li je potrebno preklapanje ,itd.
Mikroprocesorski sistemi
ARM7 procesor
ARM simboliki debuger je ulazni interfejs koji pomae pri debugovanju programa koji se ili emuliraju (u ARMulatoru) ili izvravaju na nekom ciljnom sistemu. Primer takvog hardvera je razvojna ploa. Sistem mora podravati odgovarajue protokole za debugovanje bilo preko serijske linije za prenos podataka ili preko JTAG test interfejsa. ARMulator (ARM emulator) je programski paket koji modelira ponaanje razliitih jezgra ARM procesora na softverski nain na nekom drugom raunaru. Moe raditi za razliitim nivoima preciznosti: modeliranje sa preciznim instrukcijama daje tano ponaanje stanja sistema bez obraanja panje na precizne karakteristike tajminga kod procesora. modeliranje sa preciznim ciklusom izvrenja daje tano ponaanje procesora na bazi ciklus-po-ciklus, i time dozvoljava da se ustanovi taan broj taktnih ciklusa koji je potreban programu. modeliranje sa preciznim tajmingom predstavlja predaju signala sa korektnim vremenom u okviru ciklusa pruajui mogunost da se vodi rauna o logikim kanjenjima .
Organizacija jezgra ARM procesora ARM6 i ARM7 se jako malo promenila u odnosu na prve 3-mikronske procesore u tehnologiji razvijene u Acorn-u izmeu 1983. i 1985. Tro-stepeni protoni sistem (pipeline) koji su ovi procesori koristili je postepeno usavravan, a tehnologija CMOS procesa je znatno smanjila veliinu ipova, pa su se performanse ovih jezgara drastino poveale. Osnovni principi operacija su ostali uglavnom isti. Od 1995. se pojavilo jo par novih ARM jezgara koja su imala daleko bolje performanse zbog uvoenja peto-stepene protone obrade kao i zasebnih memorija za instrukcije i podatke obino u formi razdvojenih ke memorija meusobno povezanih preko jedinstvene memorije za instrukcije i podatke.
Mikroprocesorski sistemi
ARM7 procesor
Osnovne komponente ARM-a su: Registarska banka-koristi se za uvanje stanja procesora. Banka ima dva porta za itanje i jedan port za upis. Portovi se mogu koristiti za pristup bilo kom registru. Postoji i dodatni port za itanje i port za upis kojima se pristupa registru R15, programskom brojau. Dodatni port za upis u r15 omoguava njegovo auriranje nakon to se pribavljena instrukcija adrese inkrementira, dok port za itanje obezbeuje da se nastavi sa fazom pribavljanja nakon to je adresa izdata. Barrel pomera- moe da pomera ili rotira bilo koji operant proizvoljan broj bit pozicija. Aritmetiko-logika jedinica (ALU) - obavlja aritmetike i logike funkcije iz repertoara skupa naredbi. Adresni registar i inkrementer- selektuje i uva sve memorijske adrese i generie sekvencijalne adrese kada je to potrebno. Registri podataka- uvaju podatke koji se prenose ili dobavljaju iz memorije. Dekoder instrukcija i upravljaka logika.
10
Mikroprocesorski sistemi
ARM7 procesor
Slika 3 : Trostepena protona obrada ARM procesori do verzije ARM7 koriste tro-stepenu protonu obradu kod koje se identifikuju sledei stepeni: Fetch (pribavljanje)-instrukcija se pribavlja iz memorije i smeta u instrukcioni protoni system Decode (dekodiranje)- vri se dekodiranje instrukcije a upravljaki signali staze podataka se pripremaju za naredni ciklus Execute (izvrenje)- instrukcija se izvrava od strane staze podataka, itaju se sadraji registarske banke, pomera se operant,rezultat koji generie ALU se upisuje u odredini registar. U datom trenutku, mogue je da se izvravaju 3 instrukcije, od kojih se svaka nalazi razliitom stepenu. Kada procesor izvodi jednostavne instrukcije za obradu podataka, protoni sistem (pipeline) omoguava da se po jedna instrukcija izvri u 11
Mikroprocesorski sistemi
ARM7 procesor
svakom taktnom ciklusu. Jednoj instrukciji je potrebno tri taktna ciklusa da bi se izvrila, tako da ona ima kanjenje od tri ciklusa. Stvarni propusni opseg je ipak jedna instrukcija po ciklusu.
12
Mikroprocesorski sistemi
ARM7 procesor
13
Mikroprocesorski sistemi
ARM7 procesor
3.1 ARM7TDMI
ARM7TDMI ima jezgra sa naslabijim performansama. Koristi se kod velikog broja aplikacijaa a tipina je ona koja se koristi za mobilni digitalni telefon. Organizacija procesora ARM7TDMI je prikazana na slici 5. Jezgro procesora ini ARM integer jezgro koje koristi 3 protona stepena i sledeim proirenjima: primenjuje i izvrava ARM arhitekturu verzije 4T sa podrkom koja podrava 64-bitne rezultate mnoenja, operacija Load i Store tipa polure i jedan bajt, kao i skup instrukcija Thumb. Sadri EMbeddedICE modul koji podrava otklanjanje greaka u programu kod ambedet sistema Kod otklanjanja greaka u hardveru pristup procesoru se ostvaruje preko JTAG porta za pristup, pri emu je JTAG logika sastavni deo procesora.
Mikroprocesorski sistemi
ARM7 procesor
15
Mikroprocesorski sistemi
ARM7 procesor
Signali koji oznaavaju tip memorijskog ciklusa, mreq i seq se rano izdaju kako bi se kontrolnoj logici memorije dalo to je mogue vie vremena da odlui kako 16
Mikroprocesorski sistemi
ARM7 procesor
da postupi sa pristupom memoriji. Kada sekvencijalni ciklus sledi nesekvencijalni, nova adresa e biti ona adresa iz nesekvencijalnog ciklusa uveana za jednu re (etiri bajta). U sluaju da sekvencijalni ciklus sledi unutranji ciklus ili transfer ciklus registra koprocesora, adresa iz prethodnog ciklusa se nee menjati. U tipinoj organizaciji memorije se moe koristiti sluaj inkrementiranja adresa zajedno sa informacijom o prethodnoj adresi kako bi se memorija pripremila za brzi sekvencijalni pristup, a tamo gde adresa ostaje nepromenjena ovo se moe koristiti za poetak potpunog memorijskog pristupa u ciklusu (zato to nijedan drugi ciklus ne koristi memoriju).
3.1.5 Stanje
Tbit izlaz daje informaciju okruenju o tome da li procesor trenutno izvrava ARM ili Thumb instrukcije.
3.1.6 Konfiguracija
bigend menja red bitova izmeu Little- i Big-endian. Ovaj ulaz konfigurie nain na koji procesor radi i ne oekuje se od njega da se dinamiki menja, iako se po potrebi moe menjati tokom faze takta 2.
17
Mikroprocesorski sistemi
ARM7 procesor
3.1.7 Prekidi
Dva ulaza za prekide mogu biti asinhrona u odnosu na takt procesora jer prolaze kroz leeve za sinhronizaciju pre ulaska u kontrolnu logiku procesora. Brzi zahtev za prekid fiq ima vei prioritet od normalnog zahteva za prekid irq . Ulaz isync omoguava premoavanje sinhronizacije prekida u sluaju da okruenje daje ulaze koji su ve sinhronizovani sa mclk, to uklanja sinhronizaciono kanjenje usled prekida.
3.1.8 Inicijalizacija
reset startuje procesor iz poznatog stanja kada izvavanje poinje sa adrese 00000000 16 . ARM7TDMI jezgro signalizira kada je u ciklusu zapisivanja pomou signala enout . Tamo gde je eksterna magistrala podataka dvosmerna, enout se koristi za omoguavanje pristupa signalu dout(31:0) na magistralu. Ponekad je poeljno odloiti operaciju zapisivanja kako bi drugi ureaji mogli koristiti magistralu. Signal za omoguavanje korienja magistrale podataka dbe se moe koristit za osiguranje da e enout ostati neaktivan pod takvim okolnostima. Jezgro se mora stopirati (korienjem wait ili produavanjem takta) sve dok maagistrala ne postane dostupna. dbe ima spoljanji tajming koji zahteva eksterna logika. Ostali signali za kontrolu magistrala su enin , enouti , abe, ale, tbe, busen, highz, busdis, i ecapclk i izvode razliite operacije.
18
Mikroprocesorski sistemi
ARM7 procesor
rada. Inspekcija stanja sistema se obavlja tako to ARM pristupa memorijskim lokacijama velikom brzinom i zatim se vraa u stanje debug-ovanja.
signal koji daje koprocesor je opc koji pokazuje da li e se u memorijskom pristupu pribaviti instrukcija ili podatak. Ovo se moe koristiti za praenje izvrenja ARM instrukcije. Kada ne postoji potreba za povezivanjem koprocesora, cpa i cpb bi trebalo da budu na visokom logikom nivou. To e dovesti do toga da sve instrukcije koprocesora dou u nedefinisano stanje.
Mikroprocesorski sistemi
ARM7 procesor
tclk i tclk2 formiraju nepreklapajui par taktova za kontrolu lanaca za skeniranje, dok tdoen pokazuje kada se serijski podaci izdaju preko tdo.
Mikroprocesorski sistemi
ARM7 procesor
Uz odgovarajue tehnologije procesa su dobijene jako velike efikasnosti snage pomou ARM7TDMI jezgara. Jedan primer koji koristi 0.25 mm -sku tehnologiju i napon napajanja od 0.9V moe imati 12.000 MIPS/W.
3.2 ARM8TDMI
ARM8 jezgro je nastalo u kompaniji ARM Limited u periodu izmeu 1993. i 1996. kako bi ispunilo zahteve za ARM jezgrom koje e imati bolje performanse od onih koje je postizalo dotadanje ARM7 jezgro. Danas su ga nasledila ARM9 i ARM10 jezgra ali je njegov dizajn izazvao veliko interesovanje. Performanse procesora su poboljane na sledee naine: Poveavanjem taktne frekvencije. Ovo zahteva pojednostavljenje logike u svakom protonom stepenu (pipelinu) to povlai poveanje broja protonih stepena Smanjenjem CPI taktnih ciklusa po instrukciji. Ovo zahteva smanjenje broja komunikacionih kanala koje zauzimaju instrukcije, ili smanjenje zavisnosti meu instrukcijama tako da one ne izazivaju zastoje u komunikacionim kanalima. Najbolja je kombinacija oba metoda.
Mikroprocesorski sistemi
ARM7 procesor
ARM8 procesor se sastoji iz jedinice za pribavljanje instrukcija i integer staze podataka. Jedinica za pribavljanje je zaduena za pribavljanje instrukcija iz memorije i njihovo baferovanje u unapred zadati redosled. Taj redosled mora omoguiti maksimalno korienje propusnog opsega memorije. Zatim se integer jedinici prosleuje po jedna instrukcija u svakom taktu zajedno sa vrednou programskog brojaa za datu instrukciju. Jedinica za pribavljanje je takoe zaduena za predikciju grananja, i koristi statiko predvianje kod odreivanja smera grananja (za grananja unazad se predviaju da e se desiti, dok se grananja unapred predviaju kao nee se desiti).
AMR processor koristi petostepenu protonu obradu pri emu jedinica za unapred pribavljanje instrukcija odgovara prvom stepenu protone obrade dok se integer jedinici pridruuju ostala 4 stepena. Organizacija ARM 8 procesora je prikazana na slici 7, a ine je sledei stepeni: 1. Instruction prefetech - unapred pribavljanje instrukcije 2. Instruction decode and register read dekodiranje instrukcije i itanje stanja registra 3. Execute (shift and ALU) izvrenje (pomeranje i ALU operacija) 4. Data memory access pristup memoriji za podatke 5. Write-back results upis rezultata
3.3 ARM9TDMI
ARM9TDMI jezgro poseduje funkcionalnost ARM7TDMI jezgra ali sa znaajno poboljanim performansama. Poput ARM7TDMI jezgra (na suprot od ARM8 jezgra) ovo novo jezgro podrava Thumb skup instrukcija i EmbeddedICE modul za podrku debugovanja na samom ipu. Poboljanja u performansama su ostvarena nakon prihvatanja petostepenog protonog sistema (pipelina) ime se obezbedilo poveanje pobudne taktne frekvencije kao i korienje posebnih memorijskih portova za pristup instrukcijama i podacima ime se znaajno poboljao CPI. ARM9TDMI jezgro ima odvojene portove za instrukcije i podatke. U osnovi je mogue povezati ove portove na jedinstvenu memoriju, ali je posledica toga smanjenje performansi tako da se povezivanje ne izvodi. ARM9TDMI se pravi za vee radne frekvencije u poreenju sa ARM7TDMI jezgrom, tako da sve aplikacije koje koriste ARM9TDMI jezgro imaju sloenije i bre memorijske podsisteme. Maksimalna brzina takta koju ARM jezgro moe podrati je odreena najsporijom logikom putanjom u bilo kojem od komunikacionih kanala. ARM procesori se primenjuju u : Industrijskoj kontroli,medicinskim sistemima kontroli pristupa,komunikacionim skretnicama,ugradjenim modemima i u primenama opte namene. 22
Mikroprocesorski sistemi
ARM7 procesor
5. Tipovi instrukcija procesora ARM Procesor ARM podrava sledee tipove instrukcija:
U nastavku ovog teksta bie dat pregled sintakse svake od instrukcija kao i odgovarajui primer u cilju pojanjenja efekta izvrenja instrukcije.
5.1 Instrukcije za pribavljnje podataka i memorisanje 5.1.1 Instrukcije za prenos podataka tipa jedna re ili neoznaeni bajt Ove instrukcije su najfleksibilniji nain za prenos (premetanje) bajtova ili rei podataka izmeu registara ARM i memorije. Premetanje velikih blokova podataka je obino bolje izvesti korienjem viestrukih instrukcija za prenos registara, dok
23
Mikroprocesorski sistemi
ARM7 procesor
najnoviji ARM procesori takoe podravaju instrukcije za premetanje polurei i oznaenih bajtova. Nain kodiranja je prikazan na slici 1.
31 28 27 26 25 24 23 22 21 20 19 16 15 12 11 0
cond
01
Rn
Rd
offset izvorini/odredini registar bazni registar uitavanje/smetanje write-back (auto-index) neoznaen bajt/re gore/dole pre-/post-index
25 7 6
11
12-bit immediate
25 7 6
11
7 6
#shift
Sh
Rm
Slika 1. Binarno kodiranje instrukcije za transfer podataka od jedne rei ili neoznaenog bajta
Post-indeksirani oblik:
LDR | STR{<cond>} {B} {T} Rd, [Rn], <offset>
Mikroprocesorski sistemi
ARM7 procesor
LDR je registar uitavanja, STR je registar smetanja, opcioni B bira prenos neoznaenog bajta, inicijalno je re. <offset> moe biti #+/- <12-bitna vrednost> ili +/- Rm (, shift) gde specifikator pomeraja je indentian za instrikcije koje specificiraju podatke, izuzev to nisu dostupne vrednosti pomeraja navedene u registru. ! bira ponovno zapisivanje. T fleg bira korisniki progled memorije. Opis. Ove instrukcije formiraju adresu pristupa na taj nain to baznom registru (Rn) dodaju (U=1) ili oduzimaju (U=0) neoznaenu neposrednu vrednost ili (po mogunosti skaliran) registarski ofset. Izraunata bazna adresa se koristi za punjenje (L=1) ili smetanje (L=0) neoznaenog bajta (B=1) ili rei (B=0) u registar ili iz registra (Rd), iz ili u memoriju. Kada se bajt uita u registar on se nulama proiruje do duine od 32 bita. Kada se bajt smeta u memoriju, osam bitova najmanje teine registra se smetaju na adresiranoj lokaciji. Pre-indeksirani adresni nain rada (P=1) koristi izraunatu adresu kod operacija punjenje ili memorisanje, a zatim kada se zahteva ponovni upisi (W=1), aurira bazni registar na izraunatu vrednost. Post-indeksirani (P=0) adresni nain rada koristi nemodifikovani bazni registar radi preenosa, a zatim aurira bazni registar da izrauna adresu u zavisno od stanja W bit. Postavljanje W=1 uzrokuje da procesor zahteva pristup memoriji u korisnikom reimu rada, to omoguava operativnom sistemu da prihvati korisniki pogledu kao i metode prevoenja i zatite. Primeri:
LDR LDR LDR STR LDRB LDRB STRB LDR STRB LDR LDR STRB LDR STR LDR r1, [r0] r8, [r3, #4] r12, [r13, #-4] r2, [r1, #0x100] r5, [r9] r3, [r8, #3] r4, [r10, #0x200] r11, [r1, r2] r10, [r7, -r4] r11, [r3, r5, LSL #2] r1, [r0, #4] ! r7, [r6, #-1] ! r3, [r9], #4 r2, [r5], #8 r0, [r1], r2 ; uitaj r1 iz adrese u r0 ; uitaj r8 iz adrese u r3 + 4 ; uitaj r12 iz r13 - 4 ; smesti r2 na adresu u r1 + 0x100 ; uitaj bajt u r5 iz r9 ; uitaj bajt u r3 iz r8 + 3 ; smesti bajt iz r4 u r10 + 0x200 ; uitaj r11 iz adrese u r1 + r2 ; smesti bajt iz r10 na adresu u r7 - r4 ; uitaj r11 iz r3 + (r5 x 4) ; uitaj r1 iz r0 + 4, zatim r0= r0 + 4 ; smesti bajt iz r7 u r6 - 1, zatim r6= r6 - 1 ; uitaj r3 iz r9, zatim r9= r9 + 4 ; smesti r2 u r5, zatim r5= r5 + 8 ; uitaj r0 iz r1, zatim r1= r1 + r2
25
Mikroprocesorski sistemi
ARM7 procesor
5.1.2 Instrukcije za prenos podataka tipa polurei i oznaenih bajtova Raniji ARM procesori nisu podravali ovakve instrukcije. Adresni naini rada dostupni kod ovih instrukcija su podskup instrukcija koji monipuliu su oznaenim bajtovima ili reima. Nain kodiranja je prikazan na slici 2.
31 28 27 25 24 23 22 21 20 19 16 15 12 11 8 7 6 5 4 3 0
cond
000
Rn
Rd
offsetH
1 S
offsetL
0
25 7 6
Imm[7:4]
Imm[7:4]
11
0 ofset registar
Imm[7:4]
Imm[7:4]
Post-indeksiran oblik:
LDR | STR{<cond>}H |SH |SB Rd, [Rn, <offset>]
26
Mikroprocesorski sistemi
ARM7 procesor
gde je <offset> #+/-<8-bit immediate>, ili +/-Rm, a H SH SB bira tip podataka. U suprotnom je format asemblera isti kao i za prenos rei i neoznaenih bajtova.
Opis. Ove instrukcije su veoma sline instrukcijama koje manipuliu sa neoznaenim bajtovima ili reima, ali u ovom sluaju neposredni ofset je limitiran na osam bitova, a skalirani registarski ofset nije dostupan. U tabeli 1. je prikazan nain kodiranja tipova podataka, definisanjem stanja bita S i H. S 1 0 1 H 0 1 1 tip podataka oznaen bajt neoznaena polu-re oznaena polu-re
Poto ne postoji razlika izmeu memorisanja oznaenih i neoznaenih podataka, jedini bitni oblici ovog formata instrukcija su: LOAD oznaenog bajta, oznaene polurei ili neoznaene polurei. STORE polurei. Neoznaena vrednost se proiruje nulama do duine od 32 bita kada se obavlja operacija LOAD. Oznaena vrednost se proiruje do 32 bita korienjem principa proirenje znaka.
Primeri:
LDRH LDRH LDRH STRH LDRSH LDRH LDRSH LDRSB LDRH STRH r1, [r0] r8, [r3, #2] r12, [r13, #-6] r2, [r1, #0x80] r5, [r9] r11, [r1, r2] r1, [r0, #2] ! r7, [r6, #-1] ! r3, [r9], #2 r2, [r5], #8 ; uitaj polure u r1 iz r0 ; uitaj polure u r8 iz r3 + 2 ; uitaj polure u r12 iz r13 - 6 ; smesti polure iz r2 u r1 + 0x80 ; uitaj oznaenu polure u r5 iz r9 ; uitaj polure u r11 iz adrese u r1 + r2 ; uitaj oznaenu polure r1 iz r0 + 2, ; zatim r0= r0 +2 ; uitaj oznaen bajt u r7 iz r6 - 1, ; zatim r6= r6 -1 ; uitaj polure u r3 iz r9, zatim r9= r9 +2 ; uitaj polure iz r2 u r5, zatim r5= r5 +8
27
Mikroprocesorski sistemi
ARM7 procesor
Lista instrukcija: LDR LDRB LDRBT LDRH LDRSB LDRSH LDRT STR STRB STRBT STRH STRT Load Word Load Byte Load Byte with User Mode Privilege Load Unsigned Halfword Load Signed Byte Load Signed Halfword Load Word with User Mode Privilege Store Word Store Byte Store Byte with User Mode Privilege Store Halfword Store Word with User Mode Privilege
5.1.3 Viestruke instrukcije za uitavanje i smetanje Ove ARM instrukcije omoguavaju da se bilo koji podskup (ili svi) od 16 registara koji su vidljivi u tekuem reimu rada mogu smestiti u memoriju ili proitati iz nje. Jedan oblik ove instrukcije omoguava operativnom sistemu da napuni ili memorie register korisnikog naina rada kao id a zapamti i obnovi stanje korisnikig procesa, a takoe da omogui CPSR registru da obnovi stanje koje se uva u SPSR, a deo je povratne informacije programa za obradu izuzetaka. Ove instrukcije se koriste za ulazak i povratak iz procedura radi smetanja i obnavljanja stanja radnih registara. Nain kodiranja je prikazan na slici 3.
31 28 27 25 24 23 22 21 20 19 16 15 0
cond
100
Rn
register list
bazni registar uitavanje/smetanje write-back (auto-index) vrati PSR i forsiraj korisniki bit gore/dole pre-/post-index
28
Mikroprocesorski sistemi
ARM7 procesor
gde <add mode> navodi jedan od adresnih naina rada. Bitovi u instrukciji odgovaraju mehanikom pogledu opisanom u navedenoj tabeli, gde inkrementiranje odgovara U=1, a prefiks pre odgovara vrednosti P=1. ! navodi auto-indeksiranje (W=1), dok su <registri> lista registara i opsega registara u zagradama, npr. {r0, r3-r7, pc}. U ne-korisnikom nainu rada CPSR se moe obnoviti pomou:
LDM{<cond>}<add mode> Rn{!}, <registers + pc>^
Lista registara mora sadrati PC. Korisniki registri se mogu sauvati ili obnoviti pomou :
LDM | STM{<cond>}<add mode> Rn, <registers - pc>^
Primeri: Da bi se sauvlo stanje tri radna registra i povratne adrese nakon ulaska u subrutinu potrebno je izvriti instrikciju:
STMFD r13!, {r0 - r2, r14}
Ovo pretpostavlja da je r13 inicijalizovan za korienje kao pokaziva magacina. Da bi obnovili stanje radnih registara i obavili povratak koristi se instrukcija:
LDMFD r13!, {r0 - r2, pc}
5.2 Instrukcije za razmene sadraja memorije i registra Ove instrukcije kombinuju uitavanje i smetanje rei ili neoznae-nog bajta u jednoj instrukciji. Obino se dva prenosa kombinuju u jednu memorijsku operaciju koja se ne moe razdvojiti spoljanjim memorijskim pristupom (npr. pomou DMA od kontrolera).Tako se instrukcija moe koristiti kao osnova mehanizam semafora kako bi se obezbedila uzajamna iskljuivost u pristupu strukturama podaka koji su deljivi izmeu veeg broja procesa, procesora ili procesora i DMA kontrolera. Nain kodiranja je prikazan na slici 4.
29
Mikroprocesorski sistemi
ARM7 procesor
31
28 27
23 22
21
20
19
16 15
12 11
4 3
cond
00010
00
Rn
Rd
Rm
source register
Asemblerski format:
SWP{<cond>} {B} Rd, Rm, [Rn]
Opis. Ova Instrukcija puni re (B=0) ili neoznaeni bajt (B=1) u Rd sa memorijske lokacije koju adresira registar Rn, i smeta isti tip podataka iz registra Rm u istu memorijsku lokaciju. Rd i Rm mogu biti isti registar (ali moraju biti razliiti od Rn), i u tom sluaju se razmenjuju vrednosti registara i memorije. ARM izvrava posebno operaciju itanja memorije, a zatim cikluse memorijskog zapisiva-nja, ali aktivira lok signal kako bi ukazala da e momorijski system biti zauzet u toku trajanja dva ciklusa po magisrali. Primeri:
SWP SWPB SWP r12, r10, [r9] r3, r4, [r8] r1, r1, [r8] ; uitaj r12 iz adrese r9 i ; smesti r10 na adresu r9 ; uitaj bajt u r3 iz adrese r8 i ; smesti bajt iz r4 na adresu r8 ; zameni vrednosti u r1 i adresu u r2
5.3 Instrukcije pristupa status registara 5.3.1 Instrukcije za prenos stanja statusnog registara u registre opte namene U sluaju da je potrebno sauvati ili modifikovati sadraj CPSR ili SPSR registra tekueg naina rada, njihovi sadraji moraju se prvo preneti u registar opte namene, zatim da se modifikuju selektovani i na kraju da se povratna vrednost smesti u statusni registar. Ove instrukcije obavljaju prvi korak u zadatoj sekvenci. Nain kodiranja je prikazan na slici 5. 30
Mikroprocesorski sistemi
ARM7 procesor
31
28 27
23
22 21
16 15
12 11
cond
00010
001111
Rd
Slika 5. Binarno kodiranje instrukcije prenosa status registara u registre opte namene
Asemblerski format:
MRS{<cond>} Rd, CPSR|SPSR
gde je Rd odredini registar CPSR - Current Program Status Register SPSR - Saved Program Status Register Opis. CPSR (R=0) ili tekui nain rada SPSR (R=1) se kopira u odredini registar (Rd). Kopiraju se svih 32 bita. Primeri:
MRS MRS r0, r3, CPSR SPSR ; prebaci CPSR u r0 ; prebaci SPSR u r3
5.3.2 Instrukcije za prenosa registara opte namene u statusni registar U sluaju da je potrebno zapamtii ili modifikovati sadraj CPSR ili SPSR tekieg naina rada, njihovi sadraji se prvo moraju preneti u registar opte namene, zatim da se odabrani bitovi modifikuju, a onda se povratna vrednost smeta u statusni registar. Ove instrukcije obavljaju poslednji korak u zadatoj sekvenci. Nain kodiranja je prikazan na slici 6.
31
Mikroprocesorski sistemi
ARM7 procesor
31
28 27 26
25
24
23 22
21 20 19
16 15
12 11
cond
00
10
10
field
operands
25 7 6
11
0 konstanta poravnanja
25 7 6 11
#rot
8-bit immediate
4 3
0 registar operanda
00000000
Rm
Slika 6. Binarno kodiranje instrukcije prenosa registara opte namene u status registar
Opis. Operand, koji moe biti registar (Rm) ili rotirana 8-bitna neposredna vrednost specificirana na isi nain kao i neposredni oblik operanda dva u instrukcijama za procesiranje podataka se kopira u maskirano polje CPSR (R=0) ili u tekui reim rada SPSR (R=1). Maskirano polje uprvlja auriranjem etvoro-bajtnog polja unutar PSR registra. Bit 16 u instrukciji odreuje da li se PSR(7:0) aurira, bit 17 kontrolie PSR(15:8), bit 18 kontrolie PSR(23:16), dok bit 19 kontrolie PSR(31:24). Asemblerski format:
MSR{<cond>} CPSR_f|SPSR_f, #<32-bit immediate> MSR{<cond>} CPSR_<field>|SPSR_<field>, Rm
gde je <field> jedno od: c kontrolno polje PSR[7:0]. x polje proirenja PSR[15:8] (ne koristi se kod trenutnih ARM) s polje statusa PSR[23:16] (ne koristi se kod trenutnih ARM) f polje flegova PSR[31:24]
32
Mikroprocesorski sistemi
ARM7 procesor
Za promenu iz supervizor naina rada u IRQ nain (za inicijalizaciju IRQ pokazivaa steka):
MRS BIC ORR MSR r0, CPSR r0, r0, #&1f r0, r0, #&12 CPSR_c, r0 ; prebaci CPSR u r0 ; obrii dno, 5 bita ; postavi bitove na IRQ mod ; prebaci natrag u CPSR
5.4 Instrukcije za obradu podataka Instrukcije procesora ARM koje se koriste za obradu podataka omoguavaju programeru da izvodi aritmetike i logike operacije nad podacima u registrima. Ovim instrukcijama su tipino potrebna dva operanda i one generiu jedinstven rezultat. Karakteristina operacija je dodavanje dve vrednosti kako bi se dobio jedinstven rezultat koji je jednak njihovoj sumi. Neka od pravila koja se primenjuju na ARM instrukcije za obradu podataka su sledea: svi operandi su 32-bitni, uvaju se u registrima ili su specificirani kao neposredne konstante u okviru same instrukcije. rezultat (ako postoji) je 32-bitni i smeta se u registar (ovde postoji izuzetak: duge instrukcije mnoenja daju 64-bitni rezultat). svaki od registarskih operanada i kao i registar u kome se uvaju rezultati nezavisno se specificiraju u instrukciji. To znai da ARM koristi troadresni format za ove instrukcije. ARM-ove instrukcije za obradu podataka se koriste za modifikaciju vrednosti u registrima. Operacije koje se podravaju su aritmetike i logike. One se izvravaju nad 32-bitnim podacima. Jedan od operanada se moe pomeriti ili rotirati na putu ka ALU-u ime se omoguava istovremeno izvrenje operacija ADD i SHIFT. Nain kodiranja ovih instrukcija prikazan je na slici 1.(ovaj format ne vai za instrukciju MUL). Nain kodiranja je prikazan na slici 7.
33
Mikroprocesorski sistemi
ARM7 procesor
31
28 27 26 25
24
21 20
19
16 15
12 11
cond
00
opcode
Rn
Rd
operand 2
odredini registar registar prvog operanda postavljanje uslovnog koda aritmetika/logika funkcija
25 7 6 11 8 7 0
1 konstanta poravnanja
#rot
8-bit immediate
11
7 6
#shift
25 7 6
Sh
Rm
Sh
Rm
ARM instrukcije za obradu podataka koriste troadresni format, to znai da se dva izvorna operanda i odredini registar specificiraju nezavisno. Jedan izvorni operand je uvek registar, drugi moe biti registar, pomereni registar ili neposredna vrednost. Pomeraj koji se odnosi na drugi operand, u sluaju da je on registar, moe biti logiki ili aritmetiki pomeraj ili operacija rotiranja, a moe biti iznos specificiran bilo kao neposredna vrednost ili preko sadraja etvrtog registra. Kada se instrukcijom ne zahteva dostupnost svim operandima (npr. MOV ignorie Rn, dok CMP ignorie Rd) neiskorieno registarsko polje se treba postaviti na vrednost 0. Asembler to radi automatski. U tabeli 2. su date instrukcije za obradu podataka.
34
Mikroprocesorski sistemi
ARM7 procesor
Opcode [24:21] 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Mnemonic AND EOR SUB RSB ADD ADC SBC RSC TST TEQ CMP CMN ORR MOV BIC MVN
Meaning Logical bit-wise AND Logical bit-wise exclusive OR Subtract Reverse subtract Add Add with carry Subtract with carry Reverse subtract with carry Test Test equivalence Compare Compare negated Logical bit-wise OR Move Bit clear Move negated Tabela 2.
Effect Rd :=Rn AND Op2 Rd :=Rn EOR Op2 Rd :=Rn - Op2 Rd :=Op2 - Rn Rd :=Rn + Op2 Rd := Rn + Op2 + C Rd :=Rn - Op2 + C - 1 Rd :=Op2 - Rn + C - 1 Scc on Rn AND Op2 Scc on Rn EOR Op2 Scc on Rn - Op2 Scc on Rn + op2 Rd :=Rn OR Op2 Rd :=Op2 Rd :=Rn AND NOT Op2 Rd :=NOT Op2
Kada je S-bit (bit 20) postavljen tada se izvrenjem ovih instrukcija postavljaju markeri uslova (flegovi) CPU-a. Kada je S=0, i kada Rd nije r15, markeri uslova ostaju nepromenjeni. Znaenje markera je sledee: N fleg se postavlja ako je rezultat negativan; u suprotno se brie. Z fleg se postavlja ako je rezultat nula, u suprotnom se brie. C fleg se postavlja kada postoji prenos na izlazu ALJ i javlja se kada se izvrava aritmetika operacija (ADD, ADC, SUB, SBC, RSB, RSC, CMP, CMN) ili kada postoji prenos na izlazu pomeraa. Ako se pomeraj ne zahteva sadraj C se ne menja. V fleg ostaje nepromenjen kod izvrenja ne-aritmetikih operacija. Postavlja se kod izvrenje aritmetikh operacija ako postoji premaaj sa bit pozicije 30 na bit poziciju 31, inae se brie. Postavljenje ovog markera je od znaaja samo kod izvrenja aritmetikih operacija koje manipuliu sa vrednostima u prezentaciji komplementa dvojke. Asemblerski format: Opti format asemblerskih instrukcija iz ove grupe je sledeeg oblika:
<op>{<cond>} {s} Rd, Rn, #<32-bit immediate> <op>{<cond>} {s} Rd, Rn, Rm, {<shift>}
Kod monadikih operacija kakve su MOV, MVN izostavlja se Rn tako da je format sledeeg oblika:
<opcode1>{<cond>} {s} Rd, <shifter operand> <opcode1> := MOV | MVN
35
Mikroprocesorski sistemi
ARM7 procesor
Kod instrukcija uporeivanja kakve su CMP, CMN, TST, TEQ postavljaju se samo flegovi, ne specificira se registar Rd pa je format sledeeg oblika: <opcode2>{<cond>} Rn, <shifter operand> <opcode2> := CMP | CMN | TST | TEQ Kod tro-operandskih instrukcija format je oblika: <opcode3>{<cond>} {s} Rd, Rn <shifter operand> <opcode3> := ADD | SUB | RSB | ADC | SBC | RSC | AND | BIC | EOR | ORR
U konkretnom sluaju <shift> specificira tip pomeranja (LSL, LSR, ASL, ASR, ROR, RRX). U svim sluajevima sem u RRX veliina pomeraja moe biti ili 5-bitna ili specificirana sadrajem registra Rs. Rn se odnosi na prvi izvorni registarski operand, a Rd na odredini registarski operand. Opis. Tipina ARM instrukcija za obradu podataka je na asemblerskom jeziku je oblika:
ADD r0, r1, r2 ; r0 :=r1 + r2
Nakon taka-zarez sledi komentar. Ovaj primer pribavlja vrednosti dva registra (r1 i r2), sabira ih, a rezultat smeta u trei registar (r0). Vrednosti u izvornim registrima su 32-bitne i mogu biti neoznaene celobrojne vrednosti ili oznaene celobrojne vrednosti komplementa dvojke. Sabiranje moe dovesti do prenosa, ili do internog premaaja. Primetimo da se pri pisanju asemblerskog izvornog koda mora obratiti posebna panja na pravilan redosled zapisivanja operanada. To znai: prvo registar u koji se smeta rezultat, zatim prvi operand i tek onda drugi operand (iako se za komutativne operacije moe zameniti redosled prvog i drugog operanda ako su oba registri). Kada se izvri ova instrukcija jedina promena stanja sistema je vrednost odredinog registra r0 (i opciono N, Z, C i V flegovi u registar CPSR). 5.4.1 Aritmetike operacije Ove instrukcije izvode binarne aritmetike operacije (dodavanje oduzimanje, ili inverzno oduzimanje tj. oduzimanje sa izmenjenim redosledom operanada) nad dva 32-bitna operanda. Operandi mogu biti neoznaene ili oznaene celobrojne vrednosti u dvojinom komplermentu. Ulazni prenos kada se koristi predstavlja tekuu vrednost C bita registra CPSR.
ADD ADC SUB SBC RSB RSC r0, r0, r0, r0, r0, r0, r1, r1, r1, r1, r1, r1, r2 r2 r2 r2 r2 r2 ; r0 := r1 + r2 ; r0 := r1 + r2 + C ; r0 := r1 - r2 ; r0 := r1 - r2 + C - 1 ; r0 := r2 - r1 ; r0 := r2 - r1 +C - 1
36
Mikroprocesorski sistemi
ARM7 procesor
ADD prdstavlja sabiranje, ADC je sabiranje sa prenosom, SUB je oduzimanje, SBC je oduzimanje sa pozamljivanjem, RSB je oduzimanje sa inverznim redosledom a RSC oduzimanje sa inverznim redosledom i pozamljivanjem. 5.4.2 Logike operacije Ove instrukcije izvode navedene logike operacije Bulove algebre za svaki par bitova ulaznih operanada, tako da je u prvm sluaju r0(i):=r1(i) AND r2(i) od 0 do 31, ukljuujui i 31, i gde je r0(i) i-ti bit r0.
AND ORR EOR BIC r0, r0, r0, r0, r1, r1, r1, r1, r2 r2 r2 r2 ; r0 := r1 and r2 ; r0 := r1 or r2 ; r0 := r1 xor r2 ; r0 := r1 and not r2
Mnemonici AND, ORR, EOR se odnose na logike operacije I, ILI, iskljuivo ILI. Mnemonik BIC se odnosi na brisanje bita gde svaka 1 u drugom operandu brie odgovarajui bit u prvom operandu. 5.4.3 Operacije premetanja sadraja registara Ove instrukcije ignoriu prvi operand koji se izostavlja iz formata asemblerskog jezika, i kopiraju drugi operand u krajnje odredite.
MOV MVN r0, r0, r2 r2 ; r0 := r2 ; r0 := not r2
MVN mnemonik znai kopiranje koplementarne vrednosti u odredini registar. 5.4.4 Operacije poreenja Ove instrukcije ne generiu rezultat (koji je zbog toga izostavljen iz formata asemblerskog jezika) ve samo postavljaju flegove (N, Z, C i V) registra CPSR.
CMP CMN TST TEQ r1, r1, r1, r1, r2 r2 r2 r2 ; postavi cc na r1 - r2 ; postavi cc na r1 + r2 ; postavi cc na r1 and r2 ; postavi cc na r1 xor r2
Mnemonici oznaavaju poreenje (CMP), poreenje sa negacijom (CMN), testiranje sadraja bita (TST) i test nejednakost (TEQ).
37
Mikroprocesorski sistemi
ARM7 procesor
5.4.5 Neposredni operandi Ako umesto sabiranja sadraja dva registra elimo da saberemo neku konstantu sa sadrajem registra tada e drugi operand biti neposredna vrednost koje se definie kao konstanta kojoj prethodi znak #:
ADD AND r3, r8, r3, r7, #1 #&ff ; r3 := r3 + 1 ; r8 := r7[7:0]
Prvi primer ilustruje da iako se koristi troadresni format izvornni i odredini operandi ne moraju da budu isti. Drugi primer pokazuje da se neposredna vrednost moe specificurati u heksa-decimalnom obliku (osnove 16) tako to se navede znak & ispred #.
ADD
r3,
r2,
r1,
LSL #3
; r3 := r2 + 8 x r1
Naglasimo da je ovo jedinstvena ARM instrukcija, koja se izvrava u jednom taktnom ciklusu. Veina procesora u svom repertoaru poseduje operaciju pomeranja kao zasebnu instrukciju, ali ih ARM kombinuje sa optim operacijama ALJ u jedinstvenu instrukciju. LSL oznaava logiko pomeranje u levo za navedeni broj bitova to je u datom primeru tri. Moe se navesti bilo koji broj od 0 do 31 iako se korienje 0 poistoveuje sa izostavljanjem pomeraja. # oznaava ternutnu vrednost. Dostupne operacije pomeranja su: LSL: logiko pomeranje u levo za zadati broj od 0 do 31 mesta; slobodni bitovi najmanje teine na kraju rei se dopunjavaju nulama. LSR: logiko pomeranje udesno; slobodni bitovi najvee teine na poetku rei se dopunjavaju nulama. ASL: aritmetiko pomeranje u levo, sionim za LSL. ASR: aritmetiko pomeranje u desno za 0 do 32 mesta; popunjavaju se prazna mesta na delu rei koja ima najveu teinu nulama ako je izvorni operand pozitivan, ili jedinicama ako je izvorni operand bio negativan. ROR: rotiranje desno za 0 do 32 mesta. Bitovi koji se nalaze na delu najmanje teine u rei i koji otpadaju sa kraja se koriste kako bi se popunila prazna mesta na delu rei koja ima najveu teinu. RRX: rotiranje u desno sa proirenjem za jedno mesto; upranjeni bit (bit 31) se popunjava starom vrednou C flega i operand se pomera jedno mesto udesno. Odgovarajuom primenom uslovnih kodova se koristi 33-bitno rotiranje operanda i C flega. Takoe je mogue koristiti vrednost registra kako bi se naveo broj bitova za koji bi trebalo pomeriti drugi operand: ADD r5, r5, r3, LSL r2 ; r5 := r5 + r3 x 2 r 2 38
Mikroprocesorski sistemi
ARM7 procesor
5.5 Razliite aritmetike instrukcije 5.5.1. Prebrojavanje poetnih nula (CLZ(Count Leading Zeros) arhitektura samo za v5T) Korisna je za ponovnu normalizaciju brojeva i mnogo je efikasnija nego samo korienje nekih drugih ARM instrukcija. Nain kodiranja je prikazan na slici 8.
31
28 27
16 15
12 11
4 3
cond
000101100000
Rd
00000001
Rm
odredini registar
izvorni registar
Asemblerski format:
CLZ{<cond>} Rd, Rm Rd oznaava odredini registar, a Rm izvorni registar
Opis. Instrukcija postavlja Rd na broj nula na mestima najvee teine u odnosu na mesto bita najvee teine koji ima vrednost 1 u Rm. Ako je Rm jednak nuli Rd e biti postavljen na vrednost 32. Primer:
MOV CLZ r0, r1, #&100 r0 ; r1 := 23
39
Mikroprocesorski sistemi
ARM7 procesor
5.6 Instrukcije mnoenja ARM instrukcije mnoenja daju proizvod u vidu dva 32-bitna binarna broja koja se uvaju u registrima. Mnoenje dve 32-bitne celobrojne vrednosti dobija se 64-bitni rezultat, kod koga se 32 bita manje teine smetaju u odredini registar rezultata dok se ostali zanemaruju. Neki oblici instrukcije, dostupni samo na nekim verzijama procesora, smetaju kompletan rezultat u dva nezavisno navedena registra; ostali oblici smetaju samo 32 bita najmanje vrednosti u jedan registar. Nain kodiranja je prikazan na slici 9.
31
28 27
24 23
21 20 19
16 15
12 11
cond
0000
mul
Rd/RdHi
Rn/RdLo
Rs
1001
Rm
Asemblerski format: Instrukcije koje daju 32 bita najmanje vrednosti u proizvodu su:
MUL{<cond>} {s} Rd, Rm, Rs MLA{<cond>} {s} Rd, Rm, Rs, Rn
gde je <mu1> jedan od tipova 64-bitnog mnoenja (UMULL, UMLAL, SMULL, SMLAL). U tabeli 3. su prikazane instrukcije mnoenja.
Meaning Multiply (32-bit result) Multiply-accumulate (32-bit result) Unsigned multiply long Unsigned multiply-accumulate long Signed multiply long Signed multoply-accumulated long
Effect Rd :=(Rm*Rs) [31:0] Rd :=(Rm*Rs+Rn) [31:0] RdHi:RdLo :=Rm*Rs RdHi:RdLo +=Rm*Rs RdHi:RdLo :=Rm*Rs RdHi:RdLo +=Rm*Rs
40
Mikroprocesorski sistemi
ARM7 procesor
Opis. RdHi:RdLo je 64-bitni broj formiran nadovezivanjem RdHi (32 bita najvee vrednosti) i RdLo (32 bita najmanje vrednosti). (31:0) vri odabir samo 32 bita najmanje vrednosti rezultata. Jednostavno dodeljivanje vrednosti se oznaava sa := Nagomilavanje (dodavanje desne strane levoj) se oznaava sa += S bit kontrolie postavljanje markera uslova uz ostale instrukcije za obradu podataka. U sluaju da je ovaj bit postavljen u nekoj instrukciji: N fleg je postavljen na vrednost bita 31 iz Rd za varijante koje daju 32bitni rezultat, ili na bit 31 RdHi za dugake forme. Z fleg se postavlja ako su Rd ili RdHi i RdLo nule. C fleg se postavlja na nebitnu vrednost. V fleg se ne menja. Veoma vana instrukcija koja se koristi kod digitalnog procesiranja signala je: mnoenje sa akumulacijom. U jednom konkretnom primeru ona je sledeeg oblika:
MLA r4, r3, r2, r1 ; r4 := (r3 x r2 +r1)
Mnoenje konstantom se moe obaviti tako to se konstanta uita u registar a zatim se iskoristi jedna od pomenutih instrukcija, ali je efikasnije koristiti kratke nizove instrukcija za obradu podataka koje koriste operacije pomeranja i sabiranje ili oduzimanje. Na primer, za mnoenje r0 sa 35 se koristi sledea sekvenca:
ADD RSB r0, r0, r0, r0, r0, r0, LSL LSL #2 #3 ; r0 := 5 x r0 ; r0 := 7 x r0 (=35 x r0)
Postoje neke vane razlike u odnosu na ostale aritmetike instrukcije: drugi izvorini operand neposredne vrednosti se ne podrava. Odredini registar treba biti razliit od prvog izvorinog. ako je postavljen S bit tada e se V fleg postavljati (kao i kod logike instrukcije) dok e vrednost C flega biti beznaajna. Primeri:
MUL MULS MLA SMULL UMULL UMLAL r4, r4, r7, r4, r2, r2, r8, r8, r1 r1 r9, r3 r2, r3 ; r4 dobija vrednost r2 pomnoena sa r1 ; r4 := r2 x r1, postavi N I Z flegove ; r4 := r8 x r9 + r3 ; r4 := bitovi 0 do 31 od r2 x r3 ; r8 := bitovi 32 do 63 od r2 x r3 ; r8, r6 := r0 x r1 ; r8, r5 := r0 x r1 + r8, r5
41
Mikroprocesorski sistemi
ARM7 procesor
5.7 Instrukcije grananja 5.7.1 Grananje sa linkom (B, BL) Instrukcije grananja i grananja sa linkom su standardni naini za promenu toka izvreenja sekvenci instrukcija. ARM standardno izvrava instrukcije sa sekvencijalnim redosledom adresa u memoriji, a koristi uslovno izvrenje sa grananjem tamo gde je to potrebno. Standardne instrukcije iz ove grupe su Branch i Branch sa linkom. Nain kodiranja ovih instrikcije je prikazan na slici. Nain kodiranja je prikazan na slici 10.
31
28 27
25
24
23
cond
101
Format asemblera:
B{L} {<cond>} <target address>
L specificira grananje i granjanje sa link varijantom. Ako L ne postoji generie se grananje bez linka. <cond> bi trebalo da bude jedna od mnemonika navedena u tabeli ARM uslovnih kodova, a ako se ovo polje izostavi podrazumeva se AL. <target address> je obio labela u asemblerskom kodu; asembler e generisati ofset. Opis. Instrukcije Brandh i Branch with Link uzrokuju da procesor pone sa izvravanjem instrukcija sa adrese koja je se dobija izraunavanjem sledeim izraunavanjem: 24-bitni offset specificiran instrukcijom znakovno se proiruje, pomerajui ga dva mesta ulevo kako bi se dobio offset rei, a zatim se sabira sa sadrajem programskog brojaa koji sadri adresu instrukcije grananja plus 8 bajtova. Opseg instrukcija grananja je +/- 32 MB. Branch with Link kod koje je postavljen bit 24(bit L), takoe kopira adresu instrukcijesledei grananje na koje ukazuje link (r14) tekueg procesorsog reima rada. Ovo se obino koristi za poziv podprograma, gde se povratna adresa uva u link registru. Oba oblika instrukcije se mogu izvravati uslovno ili bezuslovno.
42
Mikroprocesorski sistemi
ARM7 procesor
LOOP
Poziv subrutini:
. . BL . . . . . . MOV PC, r14 SUB ; grananje i veza do subrutine SUB ; povratak ovde ; taka ulaza subrutine ; povratak
SUB
5.7.2 Grananje sa linkom i razmenom (BX, BLX) Ove instrukcije su dostupne kod ARM ipova koji podravaju 16-bitni Thumb skup instrukcija, i jedan su od mehanizama za prebacivanje procesora u reim rada u kada bi izvravao thumb instrukcije ili za povratak na ARM ili Thumb rutine. Sline Thumb instrukcije uzrokuju da se procesor vrati u 32-bitni ARM reim Nain kodiranja je prikazan na slici 11. (1)BX| BLX Rm
31 28 27 6 5 4 3 0
cond
0001001011111111111100
Rm
43
Mikroprocesorski sistemi
ARM7 procesor
1111
101
Slika 11. Binarno kodiranje granjanja (sa opcionim linkom) i instrukcijom razmene
Format asemblera:
1: 2: B{L}X{<cond>} Rm BLX <target address>
<target address> je obino labela u asemlerskom kodu. Asembler generie ofset (koji e biti razlika izmeu adrese rei mete i adrese instrukcije grananja plus 8) i postavlja H bit ako je potrebno. Opis. U prvom formatu je ciljna adresa grananja cpecificirana u registru Rm. Bit(0) u Rm se kopira u T bit CPSR dok se bitovi (31:1) premetaju u PC: Ako je Rm(0) jednak 1, procesor prelazi u izvrenje Thumb reim rada i poinje sa izvrenjem adrese specificiran sa adresom u Rm poevi od granice polu-rei. Ako je Rm(0) jednak 0, procesor nastavlja sa izvrenjem ARM instrukcija i poinje sa izvrenjem adrese specificiran sa adresom u Rm poevi od granice rei. Kod drugog formata je ciljna adresa grananja i adresa koja se dobija izraunavanjem proirenjem znaka 24-bitnog ofseta cpecificiran instrukcijom. Zatim se vri odreeno pomeranje u levo i dodaje vrednost PC koji sadri adresu BX instrukcije plus osam bajtova. H bit (bit 24) se takoe dodaje bitu 1 rezultujue adrese, to omoguava adresiranje neparne polurei u sluaju kada ciljna instrukcija pripada Thumb instrukcijama. Opseg instrukcija grananja je +/- 32 MB. Oba formata instrukcije Branch sa Linkom, koja imaju postavljen L bit (bit 5) u prvom formatu, takoe kopira adresu instrukcije koja sledi nakon instrukcije grananja u link registar (r14) tekueg programskog reima rada. Ova instrukcija se standardno za pamenje povratne adrese pri pozivu Thumb podprogram. Ako se koristi BX kao mehanizam povratka iz podprograma, stanje registra semoe zapamtiti zajedno sa povratnom adresom tako da se isti mehanizam moe koristiti od strane ARM-ovog ili Thum-ovog pozivnog programa kada se izvrava ARM ili Thumb podprogram. Instrukcije formata (1) se mogu izvravati uslovno ili bezuslovno, dok se instrukcije formata (2) izvravaju bezuslovno.
44
Mikroprocesorski sistemi
ARM7 procesor
TSUB
r14
5.8 Instrukcije za generisanje softverkoih prekida 5.8.1 Softverski prekid (SWI) Instrukcija softverskog prekida se koristi za poziv operativnog sistema i esto se naziva poziv supervizoru. Ona postavlja procesor u supervizorski reim rada i zapoinje izvrenje instrukcija sa adrese 0x08. Nain kodiranja je prikazan na slici 12.
31 28 27 24 23 0
cond
1111
45
Mikroprocesorski sistemi
ARM7 procesor
Format asemblera:
SWI{<cond>} <24-bit immediate>
Opis. 24-bitno polje u kome se uva neposredna vrednost ne utie na rad instrukcije ali se moe interpretirati od strane sistemskog koda. Ako se ispuni uslov instrukcija uzrokuje da se ue u supervizorski reim rada. Akcije koje preduzima procesor su: 1. pamti se adresa instrukcije nakon SWI u r14_svc. 2. pamti se CPSR u SPSR_svc. 3. ulazi se u supervizorski reim rada, brane se IRQ-ovi, ali ne i FIQ-ove na taj nain to se postavljaju CPSR(4:0) na 10011 i CPSR(7) na 1. 4. postavlja PC na hex vrednost 08 i zapoinjanje izvrenja instrukcija koja se nalazi na tom mestu. Za povratak instrukciji nakon SWI sistemska rutina mora ne samo kopirati r14_svc u PC, ve takoe mora da obnovi stanje CPSR iz SPSR_svc.
STROUT
46
Mikroprocesorski sistemi
ARM7 procesor
5.8.2 Instrukcija prekidna taka (BKPT samo za v5T arhitekturu) Instrukcije prekidne take se koriste za debagiranje softvera; one uzrokuju da procesor prekine sa normalnim izvrenjem instrukcija i pree na izvrenje odgovarajuu proceduru za debagiranja. Nain kodiranja je prikazan na slici 13.
31 28 27 20 19 16 15 12 11 8 7 4 3 0
1110
00010010
xxxx
xxxx
xxxx
0111
xxxx
Asemblerski format:
BRK
Opis. Ova instrukcija uzrokuje da procesor prekine sa radom kada je hardverska jedinica za debagiranje odgovarajue konfigurisana. Primeri:
BRK ; !
5.9 Instrukcije koprocesora 5.9.1 Operacije podataka koprocesora Ove instrukcije se koriste za kontrolu internih operacija nad podacima u koprocesorskim registrima. Standardni formati odgovaraju tipovima troadresih maina ali su druge interpretacije svih polja u koprocesorskoj instrukciji mogue. Nain kodiranja je prikazan na slici 14.
31
28 27
24
23
20 19
16 15
12 11
8 7
cond
1110
Cop1
CRn
CRd
CP#
Cop2
CRm
47
Mikroprocesorski sistemi
ARM7 procesor
Asemblerski format.
CDP{<cond>} <CP#>, <Cop1>, CRd, CRn, CRm{, <Cop2>}
Opis. ARM korist ovu instrukciju za rad sa bilo kojim koprocesorom. Ako se ona prihvata od strane bilo koji koprocesor ARM produava sa izvreenjen naredne instrukcije, a ko se ne prihvata ARM generie nedefinisani izuzetak tipa trap(koji se moe koristiti za softversku implementaciju bilo koje koprocesorske instrukcije). U naormalnoj situaciji koprocesor se identifikuje CP# na taj nain to prihvata ovu instrukciju i obavlj operaciju definisanui od starne polja Cop1 i Cop2, korienjem CRn i CRm kao izvorne operanade dok rezultat smeta u CRd. Primeri:
CDP p5, 2, c12, c10, c3, 4 ; koprocesor 5 operacija podataka ; opkod 1 = 2, opkod 2 = 4 ; odredini registar je 12 ; izvorni registri su 10 i 3
5.9.2 Prenos podataka koprocesoru Instrukcije za prenos podataka koprocesora su sline instrukcija koje prenose neposredni offset kod podataka tip re i instrukcije koje se koriste za prenos neoznaenih bajtova. Ofset je sada ogranien na 8 bitova, ane na 12 bitova. Nain kodiranja je prikazan na slici 15.
31 28 27 25 24 23 22 21 20 19 16 15 12 11 8 7 0
cond
101
Rn
CRd
CP#
8-bit offset
48
Mikroprocesorski sistemi
ARM7 procesor
Naknadno-indeksirani oblik:
LDC | STC{<cond>} {L} <CP#>, CRd, [Rn], <offset>
U oba sluaja LDC odabira uitavanje iz memorije u registar koproce-sora, STC bira smetanje iz registra koprocesora u memoriju. L fleg, ako je prisutan, bira dugaak tip podataka (N=1) Opis. Instrukcije se koriste id strane bilo kojih koprocesora koji su povezani na system. ako je nijedan ne prihvati ovu instrukciju ARM izvrava instrukcioni trep pri emu softerskim putem emulira rad koprocesora. Kada je prisutan, koprocesor sa koprocesorskim brojem CP# prihvati e ovu instrukciju. Izraunavanje adrese se obavlja u okviru ARM, korienjem baznog registra ARM (Rn) i 8-bitni neposredni ofseta koji se skalira na offset tipa re njegovim pomeranjem u levo za poziciju dva bita. Adresni nain rada i auto-indeksiranje se kontroliu na isti nain kao i instrukcije koje vre prenos neoznaenog bajta ili rei. Na ovaj nain se definie prva adresa prenosa dok se prenos narednih rei obavlja inkrementiranjem adrese. Primeri:
LDC p6, CR1, [r4] ; uitaj iz memorije u koprocesor 6 ; ARM registar 4 sadri adresu ; uitaj u CP regisar 1 ; uitaj iz memorije u koprocesor 6 ; ARM registar r2 + 4 je adresa ; uitaj u CP registar 4 ; smesti iz koprocesora 8 u memoriju ; ARM registar r2 + 4 je adresa ; posle transfera r2= r2 +4 ; smesti od CP registar 8 ; smesti iz koprocesora 8 u memoriju ; ARM registar r2 uva adresu ; posle transfera r2= r2 - 16 ; smesti od CP registar 9
LDC
STC
STC
49
Mikroprocesorski sistemi
ARM7 procesor
5.9.3 Prenos registara koprocesora Ove instrukcije omoguavaju da se celobrojne vrednosti generisane od strane koprocesora prenese direktno u ARM registar, ili u ARM-ov marker registar. Nain kodiranja je prikazan na slici 16.
31
28 27
24
23
21
20
19
16 15
12 11
cond
1110
Cop1
CRn
Rd
CP#
Cop2
CRm
Tipine primene su sledee: FP-ova FIX operacija koja postavlja integer vrednost u ARM registar. FP kompariranje koje vraa rezultat operacije kompariranja u ARM-ov marker registar ime se kasnije odreuje tok izvreenja programa. FLOAT operacija koja pribavlja celobrojnu vrednost iz ARM-og registra, predaje je koprocesorui, gde se konvertuje u FP broj i smeta u koprocesorki registar.
Opis. Ovu insrukciju koristi bilo koji processor pevezan na system; obino e koprocesor sa koprocesorskim brojem CP# prihvatiti ovu instrukciju. Ako koprocesor nije prisutan ARM definie nedifinisani instrukcioni trap. Ako koprocesor prihvati Load od instrukcije koprocesora, on e obaviti operaciju definisanu od strane Cop1 i Cop2 nad izvornim operandima CRn i CRm i smestiti 32-bitni celobrojni rezultat od ARM u registar Rd. Ako koprocesor prihvati Store koprocesorke instrukcije, onda e prihvatiti 32bitnu celobrojnu vrednost od ARM-ovog registra Rd i uraditi neto sa njom. 50
Mikroprocesorski sistemi
ARM7 procesor
Ako je PC naveden kao odredini registar Rd kod insttrrukcije Load iz koprocesorske instrukcije, 4 MS bita 32-bitne celobrojne vrednosti generisane od strane koprocesora se smetaju u N, Z, C i V flegove registra CPSR.
Primeri:
MRC p15, 5, r4, c0, c2, 3 ; koprocesor 15 prebacuje u ARM registar ; opkod 1= 5, opkod 2= 3 ; ARM odredini registar= r4 ; koprocesorski izvorni registri su 7 i 12 ; ARM registar prebacuje u koprocesor 14 ; opkod 1= 1, opkod 2= 6 ; ARM izvorni registar= r7 ; koprocesorki odredini registri su 7 i 12
51
Mikroprocesorski sistemi
ARM7 procesor
6. Hardver i Softver
Proces kreiranja
Za razumevanje hardversko/softverske ko-verifikacije neophodno je razumeti princip rada alata kao i proces koji se koristi za razvoj hardvera i softvera. Do skora, integracija softvera sa hardverom se izvodila u laboratorijiskom okruzenju konstrukcijom hardvera i pokretanjem softvera. Debagiranje se izvodilo sledeom opremom: in-circuit emulatorima (ICE), logikim analizatorima i osciloskopima. Debagiranje u kasnijoj fazi projektovanja, , kada je pritisak na projektante zbog definisanog roka najvei, je naporan i stresan zadatak. Ko-verifikacijom menja se ovakav pristup jer se koristi virtuelni prototip hardvera koji se izvrsava na softveru pre nego sto je prototip dostupan.
52
Mikroprocesorski sistemi
ARM7 procesor
Svaka motoda koja opisuje rad hardvera koristi posebne tehnike za debagiranje,pri cemu svaka ima svoje prednosti i nedostatke. Metode se rangiraju u odnosu na najsporije metoda izvrsenja, koje se karakterisu sa najvecom fleksibilnoscu i najboljim debagiranjem, pa do najbrih,koje karakterise najmanja fleksibilnost i najsporije debagiranje.U daljem tekstu dacemo definicije koje se koriste za opis ovih platformi i nain na koji one rade. Jezik za opis hardvera (HDL) se odnosi na namenske jezike projektovane za opis hardvera. Dva jezika koja se danas koriste su Verilog HDL i VHDL. Ovi jezici se koriste da bi opisali rad ipa ili ploe isto kao to softverski program opisuje rad mikroprocesora ili ugraenog sistema. HDL-ovi sadre kljune rei, sintaksu i semantiku modela hardverskog kola. Softverski alati mogu koristiti ove modele za simuliranje ponaanja hardvera i za sintezu HDL modela u strukturni prikaz koji se moe koristiti za realizaciju hardvera. HDL-ovi se koriste za specifikaciju implementacije ASIC i FPGA kola. Takoe se koriste za modeliranje memorije i drugih digitalnih kola. U odnosu na prvobitne verzij,oba jezika nastavljaju da se razvijaju.Kod Veriloga je standad IEEE 1364 a kod VHDL-a je IEEE 1076. S obzirom da se delovi ipa ili sistema najcesce projektuju od strane razliitih grupa ili kompanija, prirodno je da se koristi kombinacija oba jezika kada se opisuju slozena resenja. Situacija kada se koriste oba jezika se naizva mesoviiti-jeziki projekat, a simulatori koji mogu simulirati Verilog i VHDL u istoj simulacionoj platformi se nazivaju meovito-jeziki simulatori. Veina logikih simulatora danas su meovitojeziki koji su pored toga sposobni da se izvrsavaju na dodatnim jezicima , kao to je SystemC. Softverski simulatori predstavljaju dogadjajno-inicirani logicki simulatori.Oni se izvrsavaju na radnim stanicama i koriste VHDL ili Verilog kao simulacioni jezik za opis dizajna i testbench-eva. Najei tip digitalnog simulatora je dogadjajno iniciran simulator.Kada se vrednost signala menja, parametri vreme, signal i nova vrednost signala se zajednicki nazivaju dogadjaj.Dogadjaj se planira za izvrsenje kada se on smesti u red cekanja dogadjaja ili u listi dogadjaja.Kada dodje trenutak,logicka vrednost signala se menja.Promena utice na ostale signale koji prihvataju ovaj signal kao ulazni.Svi signali nakojima se ima uticaj moraju se evaluirati zato sto uzrokuje unosenje veceg broja dogadjaja u listi dogadjaja. Simulator vodi racuna o tekucem vremenu, tekucem vremenskom markeru i lista dogadjaja u kojoj se cuvaju naredni dogadjaji. Za svaki signal,logicki simulator cuva trag logickog stanja kao i amplitude pobunog generatora(izvora signala). Logiki simulator se najee koristi za simuliciju ponaanja hardverskih dizajna. Logiki simulatori mogu da se realizuju u jedan od sledecih nacina.To su simulatori koji koriste interpreterski kod i simulatori koji koriste kompajlirani kod. Simulator interpreterskog koda koristi HDL model kao podatke, a kompajlira izvrivi model kao deo strukture simulatora, a nakon toga izvrava taj model. Ovakav tip simulatora ima krace vreme kompajliranja, ali duze vreme izvrenja u poreenju sa simulatorom koji koristi kompajlirani kod. Primer simulatora koji koristi interpretirani kod je Verilog-XL. 53
Mikroprocesorski sistemi
ARM7 procesor
Simulator koji koristi kompajlirani kod konvertuje HDL model u neku formu (obino C) a zatim koristi zasebni kompajler za kreiranje izvrivog binarnog koda.U ovom slucaju imamo due vreme kompajliranja, ali i krae vreme izvrenja u poreenju sa simulatorom koji radi sa interpretirskim kodom. Najveci broj simulatora se kategorizira kao native-code kompajlirani iz razloga sto oni premoscavaju medju prezentaciju(kakva je C) i konvertuju HDL u direktno izvrsivi kod. Simulatori ovakvog tipa imaju najkrae vreme izvrenja. To su hibridni simulatori koji se mogu konfigurisati da rade u interpreterskom ili kompajliranim rezimu rada, zavisno od elje korisnika. Ubrzana simulacija se odnosi na proces mapiranja odredjenog dela dizajna koji se moze sintetizopvati na hardversku platformu koja je specificno projektovana sa ciljem da se poveju performance tako sto se evaluacija vrsi HDL konstrukcijama koje se paralelno izvrsavaju.Verilog i VHDL su po definiciji paralelni programski jezici s obzirom da oni opisuju hardver koji obavlja veliki broj konkurentnih operacija.Ovakav paralelizam ini ove jezike razliitim u odnosu na sekvencijalne programske jezike. Ubrzana simulacija se bazira na paralelizmu. S obzirom da se logiki simulatori izvrsavaju na radnoj stanicami, paralelne konstrukcije se realizuju u CPU-ove skupove instrukcija radnih stanica. Proteklih godina veci broj projektanata je pokuao da koristi vieprocesorske sisteme ili sistenme zasnovane na vecem broji radnih stanica kako bi iskoristio paraleleizam Veriloga I VHDL-a, sa manjim uspehom.Ubrzana simulacija koja koristi hardver projektovan po porudzbini a ne processor opste namene je daleko bolja za obavljanjae brze simulacije.Kod ubrzane simulacicje postoje dve komponente koje odredjuju ukupno vreme simulacije; Deo simulacije koji se moze preslikati u hardver izrazen po porudzbini i ostali delovi simulacijue koji se ne mogu preslikati u hardver. Ovi delovi se mogu izvrsavati od strabne softverskog simulatora I kordinisano raditi sa hardverskom platformom radi razmene podataka. Ubrzana simulacija obezbedjuje bolje performance jer ne vodi racuna o simulacionim dogadjajima inicirane od strane logickog simulatora a vrsi njjihovu procenu koriscenjem hardvera za paralelno procesiranje. Eliminisanjem simulacionim dogadjajima povecavarju se performance. Krajnje performanse su odreene procentom simulacije koji se izvrava na logikom simulatoru I deo koji se izvsava na akceleratoru (koje je nula). Na primer, ako 50% simulacionih dogaaja se eliminise iz logikog simulatora i njihovo vreme je nula i proceniti za neko, tada se ukupno vreme simulacije skracuje za pola.
54
Mikroprocesorski sistemi
ARM7 procesor
slika 2-1
Cilj ubrzavanja je poveanje performansi. Krajnje performanse su zasnovane na brzini akceleracione platforme i procentu simulacije koji se moe izvravati u oviru akceleracionog hardvera. U jednoj tipinoj situaciji ubrzanja se neki odreeni deo simulacije odvija u radnoj stanici. Odnos procenta simulacije u radnoj stanici nasuprot procenta dizajna u sistemu za ubrzanje (akceleratoru) odreuje krajnje performanse. Emulacija se odnosi na proces mapiranja itavog dizajna na hardversku platformu projektovanu u cilju poveanja performansi sistema. Ne postoji stalna veza izmeu emulatora i radne stanice tokom izvrenja programa, a emulator ne prihvata ulaz od radne stanice.Nepostojanje veze sa radnom obezbedjuje hardverskoj platformi da radi punom brzinom i da ne postoji ekanje za bilo kakvom komunikacijom. Postoje tri standardne tehnike koje se koriste za ubrzanu simulaciju i emulaciju. Jedna koristi polja specificno projektovanih procesora za izvrenje programa, a ostale dve koriste FPGA kola za postizanje paralelizma. Postoji mnogo razliitih definicija o tome ta zapravo termin emulacija znai, i u kojoj je vezi sa ubrzanom simulacijom. Definosacemo emulaciju na osnovu sledecih karakteristika: Ne postoji testbench koji se izvrsava na radnoj stanici Emulator je master a radna stanica je slave. Taktni impulse se generisu od strane emulatora, a ne od radne stanice Karakteristike ubrzane simulaciju su sledece: Postoji neki testbench koji se izvrava na radnoj stanici (poeljno je to manje, zbog boljih performansi) Radna stanica je sada master a emulator ili akcelerator je slave Taktni impulse se generisu od strane testbench-a koji se izvrava na radnoj stanici 55
Mikroprocesorski sistemi
ARM7 procesor
In-circuit se odnosi na korienje spoljanjeg hardvera spregnutog sa emulatorom u svrhu obezbedjenja realisticnijeg okruenja dizajna koji se simulira. Ovaj hardver je obino u formi tampanih kola koje se nekad nazivaju ciljne ploce ili ciljni sistem,dok se test oprema povezuje na emulator. Mogua je i emulacija bez ciljne sistema koja se odnosi na izvrsenje bez testbench ulaza iz radne stanice,ali takodje bez ciljnog sistema.Kod simulacije bez ciljnog sistema svo generisanje pobudnih signala (testbench-eva) se vrsi na osnovi sintetizovanih oblika i izvrsavaju se na emulatoru.Kod ovog postupka ubvek postoje nedefinisanosti,imajuci u vidu da tekuci proizvodi obavljaju kako ubrzanu simulaciju tako i emulaciju a komutacija izmedju ova dva rezima rada se obavalj iniciranjem komande.Tako na primer kada smo u emulacionom rezimu rada korisnik moze da pritisne dirku Ctrl+c kako bi stopirao emulator tako da zbog toga mora da postoji povratna veza sa random stanicom. Neki od emulatora takodje obezbedjuju testhbench-ove koji se mogu sintetizovati ikoriste komande stampanja kakva je s display u Verilog-u sa ciljem da se stampaju poruke na radnoj stanici koje se koriste kod procesa debagiranja;sto ukazuje na potrebu slabe sprege na radnoj stanici.
Dijagrami koji prikazuju emulaciju koja ne korist ciljni sistem i in-circuit emulaciju su prikazani na slikama 2-3 i 2-4.
slika 2-3
56
Mikroprocesorski sistemi
ARM7 procesor
slika 2-4 Hardverski prototip se izvodi kao hardver po porudzbini ili hardver koji se moze visestruko koristiti za realizaciju hardverske reprezentacije sistema. Prototip predstavlja reprezentaciju krajnjeg sistema a prednost mu jet a sto se moze lakse konstruisati, a samim tim i pre dostupan od konacnog proizvoda. To se postie pravljenjem kompromisa u zahtevima za krajnji proizvod, kako u performansama tako i u nacinu pakovanja.Standardni kompromis kod realizacije prototipa je uteda vremena koja se dobija zamenom ASIC kola sa programabilnom logikom. Ovo omoguava da dizajn bude dostupan ranije, ali u jednom izvodjenju koje radi sporije i znatno je gabaritnije.
Mikroprocesorski sistemi
ARM7 procesor
Osim mikroprocesora, softverski inenjeri interesoje memorijska mapa embedded sistema.Kod 32-bitnog adresnog prostora, postoji fizika memorija od 4 GB-a koja moe biti prihvaena.Embedded sistemi koriste samo podskup ovog fizikog adresnog prostora, a memorijska mapa definise gde su razliiti tipovi memorije i drugi hardversko upravljacki registri locirani. Memorijska mapa takoe odreuje ta se deava ukoliko ako se pristupa adresama koje ne pripadaju fizickom prostoru. Slika 2-5 prikazuje primer memorijske mape.
Slika 2-5. Standardni tip memorije kod embedded sistema su ROM u kome se cuva inicijalni softver koji se izvrsava na CPU, fle memorija, DRAM, SDRAM ili DDR memorija, brza SRAM i deo memojrije u kojima se preslikava periferija. Periferije mogu biti bilo koji namenski hardver koji se softverski programira.To mogu biti UART transmiter,tajmer,JPEG koder/dekoder,itd. Kombinacija mikroprocesorsko programskog modela,memorijske mape i hardverko upravljacki registri predstavljaju softverko inzenjerski pogled na embedded sistem.
58
Mikroprocesorski sistemi
ARM7 procesor
59
Mikroprocesorski sistemi
ARM7 procesor
6.4.3 Kompajler Kompajler je alatka za prevoenje visih programskih jezika (C/C++) i asemblerskih fajlova fajla u program koji se moze izvrsavati. Ovaj format se zove mainski jezik i uva se u fajlu koji se zove izvrni fajl. Embedded sistemi obicno koriste cross kompajler.Cross kompajler se izvrsava na racunaru koji ima razliciti tip procesora od onog koji se koristi u embedded sistemu.Ovo znaci da izvrsivi fajl koji se generise od strane kompajlera ne moze izvrsiti na masini koja ga je kreirala nego se on mora preneti na embedded sistem kada treba da se izvrsi. 6.4.4 Debugger Naalost, svi programi ne rade korektno iz prvog puta ili slobodnije receno 100% od svih programa ne radi korektno. ak i da program izgleda kao da radi korektno, nemogue je testirati ga u svakoj situaciji i uslovima, pa tako ne moe da se dokae da uvek radi ispravno. Debugger pomae softver ininjerima da pronadju greake tako da se kod mogao ispravno da radi u vei broj situacija u kojima se nalazi. Debuger dozvoljava softverskim projektantima da pregledaju sekvencu koda, procesore registra i memoriju, i da registruju sta se desilo. Standardne debugger funkcije obuhvataju: Registrovanje promene stanja registra Registrovanje promene stanja memorije Prikaz funkcija za prikaz magacina (backtrace) Postavljanje prekidnih tacaka Postavljanje taaka posmatranja (analizira se stanje podatka) Korak po korak funkcija inicirana C iskazom ili asemblerskom instrukcijom Iniciranje prekida u toku rada procesora
6.4.5 Simulator Simulator modelira interni rad procesora. Procesorski simulatori su esto isporucuju sa softverskim razvojnim alatima koji se koriste za kompajliranje softvera. Alternativno ime za ovaj tip simulatora je simulator skupa instrukcija (ISS). Tipicna aplikacija simulatora omogucava programeru da testira izlaz kompajlera bez da raspolaze CPU-om. Kada se razvije neki procesor, kompajlirani programi moraju biti verifikovvani kako bi mogli da se izvrsavaju na implementirani procesor.ISS se takodje koristi od strane projektanata mikroprocesora za unakrsnu proveru CPU-ovog dizajna procesora u odnosu na model. Korienje simulatora je dobar nain za verifikovanje i otklanjanje neispravnosti mikoprocesora.
60
Mikroprocesorski sistemi
ARM7 procesor
Softverski ininjeri takoe koriste simulator za testiranje koda pre nekgo sto je dostupan CPU ili ploca procesora. U ranijoj fazi projektovanje vrlo je lako izvrsavati inicijalni boot kod na simulatoru sa ciljem da se osiguramo da je CPU dobro postavljen i da dobro radi. 6.4.6 Razvojna ploa Razvojna ploa sadri procesor(CPU), memoriju i periferije, i mogucnosti da se pune i debagiraju proogrami. Razvojna ploa je u sustini standard za softverske inenjere. Kada neki projekat pocinje ili se uvede novi procesor,softverski inenjeri nabavljaju razvojnu plou i pocinju sa pisanjem izvrsenja programa sa ciljem da utvrde da li je kompajlirani kod korektan i sve greske u programu ispravljene.Proizvoai mikroprocesora isporucuju ove ploe koje se koriste za evaluaciju CPU-a a osnovna njihova prednost je ta sto je CPU realan,to je pravi da izvrsava stvarne programe i provere su verodostojne. 6.4.7 Integrisana razvojna okruzenja (IDE) IDE kombinuje sve neophodne funkcije i alate koji su potrebni softverskim projektantima u jedinstveni, integrisani proizvod sadri editor,pretrazivac izvornog koda,fajl navigator, fajl editor i kreator projekta. Idea se sastoji u tomeda ako se nauci samo jedno sredstvo u znacajnoj meri se olaksava projektovanje i lakse je razumeti princip rada.
61
Mikroprocesorski sistemi
ARM7 procesor
6.5.1 JTAG Jedan od standardnih debagera koji se koristi za povezivanje sa CPU-m je JTAG-a. JTAG je poznat kao standard IEEE 1149.1 , nazvan boundary scan, a koristi se za testiranje kola na stampanim plocama.On koristi petozilni kabel preko koga prima serisjke podatke i komande od stane uredjaja koji implementira JTAG standard. Kod mikroprocesora se koristi JTAG protokol koji nije namenjen za testiranje veza na stampanoj ploci,nego za slanje i predaju infrmacija od embedded ssistema. JTAG debager veze omogucavaju spregu izmedju masine koja izvrsava debager program preko konektora na embedded sistem koji implementira zeljene JTAG signale. Posto serijske JTAG sekvence mogu biti jako dugacke,jedan mali blok se koristi za konverziju komande u serijske signale.Da bi se implementirao JTAG debagiranje, mikroprocesor treba da sadri specijano implementiran hardver. 6.5.2 Stab Kod procesore koji nemaju izvedenu hardversku podrsku za debagiranje ,softerski debager mora da komunicira sa embedded sistemom koristeci stub-a. Stub je specijalni program koga korisnik pridodaje embedded softveru za iskljucivu potrebu komuniciranja sa debagerom. Stub softver komunicira sa debagerom uz pomoc komunikacionog kanala kakav je serijski port(RS232) ili Ethernet konekcija. Stub izvrsava dibagerske zahteve kao sto su citanje registara i memorija i predaje rezultate debageru preko komunikacionog kanala. On takoe koristi usluzne rutine kako bi zaustavio rad procesora kakav je slucaj kada korisnik koristi opciju CTRL+Tab. Stab je na neki nacin specijalan kod koji se ne postoji u konacnoj verziji embedded sistema ali je veoma fleksibilno okruzenjeza razvoj softvera.
6.5.3 Direktna konekcija Kada se koristi ISStada nema potrebe bilo za JTAG konekcijom ili stab-om izmeu softver debagera i embedded sistema. Posto je ISS softverski model, debager moe sa lakoom da pristupi svim traenim informacijama izdavanjem funkcijskih poziva ISS-u.Direktan konekcija je najbolja veza izmedju debagera i embedded sistema. Svi zahtevi debarega se mogu trenutno ispuniti bez da se udje uspecijalni rezim rada za debagiranje.Na ovaj nacin se dobija najtacnija i najrealisticnija slika o tome kako embedded sistem radi.
62
Mikroprocesorski sistemi
ARM7 procesor
6.6.1 Inicijalizacija sistema i HAL Prvi softverski zadatak se sastoji u kreiranju i testiranju softvera za inicijalizaciju mikroprocesorskog sistema. Ovaj programse odnosi na konfigurisanje radnih reima CPU-a i periferija (ukljucujuci konfiguraciju kesa,programiranje MMUa,konfigurisanje kontrolera prekida,postavljanje tajmera i inicijalizacijaDRAM-a.) Abstrakcija na hardverskom nivou je sledei nivo softvera koji se koristi sa kodom za inicijalizaciju radi ostvarivanja korektne sprege sa visim nivoima softvera sa ciljem da hardver korektno funkcionise nakon inicijalizacije sistema. 6.6.2 Dijagnostiki test program Nakon sto je obavljena inicijalizacija i HAL procedura, sledeca faza u razvoju softvera se sastoji u razvoju detaljnijih programskih celina koje se odnose na rad hardvera..Obicno su ove celine imale formu hardvera testbencha. Dok su testbenchevi neophodni za stimulaciju eksternih interfejsa kakvi su mreni protokoli,softver se u ovom slucaju koristi kao testbench za magistralu CPU-a Poinje se sa memorijskim podsistemom,zatim se testiraju prekidi, a onda se prelazi na testiranje drugih IP blokova kao to su tajmeri, DMA kontrolori, video kontrolori, MPEG dekoderi i drugog specijalnog hardvera. Veina ovih testova nije sastavni deo konacnog proizvoda, ali je veoma vezan kod realizacije korektnog hardverskog dizajna. Kreiranje programa ovog tipa omogucava softverskim inzinjerima da dobro razumeju kako hardver radi i koje su njegove specificnosti.Dijagnostike se mogu takodje koristiti kada se pojavi neki kvar.
63
Mikroprocesorski sistemi
ARM7 procesor
6.6.3 Operativni sistem za rad u realnom vremenu (RTOS) Prva pretpostavka softverskog inenjera je da hardver korektno radi . Ovo je tano ukoliko je dijagnostika procedura korektno prosla.Inicijalno se zatim RTOS puni u hardversku platformu. U toku faze instaliranja softvera moguce je izostaviti instalaciju specificnih pokretackih programa , ali ne i jezgro RTOS-a.
6.6.4 Pokretacki programi i aplikacioni softver Nakon sto je platforma kompletirana, drajverski uredjaji i aplikacioni softver mogu da se testiraju.NA aplikacionom nivou za hardver se podrazumeva da radi korektno, pa se zadatak sastoji u tome sto je programiranje slicno kao i programiranju na PC-u.Ako aplikacija ne radi dobro,sa sigurnoscu se moe rei da problem u softveru , a ne u hardveru. Aplikacije obino zele da ostvare spregu sa realnim mrenim saobraajem,da se sve aktivnosti vide na ekranu, i da se u sto vecoj meri radi sa pokazivaem ili miem. Tokom razvoja aplikacije, greke u hardveru ili softveru su na niem nivou pa je zadatak softverskog inenjera da se fokusira na aplikaciju.
Mikroprocesorski sistemi
ARM7 procesor
6.8.1 Editor Kao i softverski inenjeri,najveci broj hardverskih inenjera upoznaje se sa opisom dizajna i testbench-eva koristeci tekst editor.Kada se govori o hardverskim inenjerima, tehnike editovanja su mnogo jednostavnije od onih koje koriste softverski inenjeri. 6.8.2 Kontrola revizije izvornog koda Od samog poetka je razvoj softvera podrazumevao upravljanje velikim brojem tekstualnih fajlova koje kreiraju mnogi inenjeri, i koji se kompajliraju u jedan ili vie izvrnih programa. Sa pojavom Verilog i VHDL nacina projektovanja hardverski inenjeri sreu se sa istim tipom okruenja i moraju koristiti alate za kontrolu revizije kako bi upravljali projektima. Jedna oblast u kojoj se kontrola revizije moe razlikovati izmeu hardvera i softvera je koliina podataka generisana i smetena u projektima hardverskog dizajna. Kompajlirani softverski projekti sadre mnogo objektnih fajlova i odreen broj izvrnih fajlova. Medju verzije binarnim fajlovima se ne izvode tako esto jer se ak i jako veliki projekat moe obnoviti za par sati. Hardverski projekti se razlikuju tako to im je esto potrebno nekoliko dana za kreiranje odgovarajuih binarnih fajlova i baza podataka da bi se prelo sa HDL izvornog koda u layout ipa ili ploice. Ovaj proces ukljuuje mnoge razliite alate i medju fajlove. To sve dovodi do mnogo vie podataka i nosi veu odgovornost za memorisanjem ovih podataka korienjem alata za kontrolu revizije. Za ove aplikacije je bitno da se pronae alat koji je u mogunosti da upravlja velikom koliinom binarnih podataka na efikasan nacin. 6.8.3 Alati Lint alati obezbedjuju jednostavnu analizu koda radi nalazenja standardnih greaka. Alati to ine tako to iitavaju izvorni kod.Koreni Lint-a datiraju od ranijih dana karakteristicni za koriscenje programsko jezika C, kao sredstvo za nalaenje greaka pre njegovog izvrsenja.Standardna Lint provera ukljucuje proveru neiskorienih deklaracija, nalazenje nekonzistentnih tipova,koriscenje promenjljive predefinicije,kod koji postoji ali se ne izvrsava, ignorisanje povratnih vrednosti, izvrni putevi bez povratka,beskonana petlja i nedosledni case iskazi. Pomenuti koncept analize je proiren na Verilog i VHDL. HDL alati omogucavaju sintaksne provere i provere stila kodiranja za potrebe simulacije i sinteze. Alati takoe mogu detektovati istovremenu pojavu vise ivica impulasa koja dovode do hazarda i analiziraju osobine konacnih automata.. Na ovaj nain moemo detaljno ispitati kod pre kompajliranja i procesa simulacije. Cilj ove vrste alata je postizanje koda veeg kvaliteta i pronalaenje greaka mnogo ranije analiziranjem dizajna. Sve se to odvija pre simulacije.
65
Mikroprocesorski sistemi
ARM7 procesor
6.8.4 Pokrivenost koda Pokrivenost koda je jo jedna tehnika pozajmljena od softverskog ininjerstva. Pokrivenost meri veliinu koda koji se koristi tokom izvoenja testova. Na osnovu rezultata pokrivenosti se mogu razviti dodatni testovi za poveanje pokrivenosti. Indirektno e znaiti da poveanje pokrivenosti znai poveanje kvaliteta proizvoda. Za HDL dizajn postoje tri razliite veliine pokrivenosti koje se mere. To su pokrivenost iskaza, pokrivenost grananja i FSM pokrivenost. Pokrivenost iskaza se drugaije naziva i linijska pokrivenost. Ona meri koliko je iskaza bilo izvreno. Iskaz je najosnovniji tip mere pokrivenosti koji identifikuje neizvrene linije koda. Za te linije ili treba razviti test, ili taj deo koda moe biti uklonjen. Pokrivenost grananja identifikuje uslove koji su bili zadovoljeni u iskazima prilikom grananja. Ti iskazi mogu biti tipa if-then-elsei iI case. Ovaj tip pokrivenosti prua vie detalja od jednostavne pokrivenosti iskaza i moe identifikovati oblasti koje nisu obuhvacene tokom testiranja. FSM pokrivenost identifikuje ponaanje dizajna tako to identifikuje skup iskaza kao konani automat i analizira skup FSM prelaza koji tada nastaju. Tako se obezbeuje da se testira kompletno ponaanje. Pokrivenost koda je dobar pristup za proveru i testiranje HDL koda, ali ne garantuje da je testirani dizajn korektan. ak iako se nekorektan dizajn temeljno testira, to ne moe pomoi na kraju jer pokrivenost daje mere pri implementaciji i nije povezana sa specifikacijom dizajna. 6.8.5 Alati za debug-ovanje Za razliku od nekih prethodnih alata, koje su hardverski inenjeri prihvatili od softverskih inenjera, debug-ovanje hardvera je mnogo drugaije od debug-ovanja softvera. Hardverski inenjeri prvenstveno rade u batch okruzenju. Bilo da se radi na velikim simulatorima uz pomo puno raunara, ili na jedinstvenom modulu i simulaciji na lokalnoj radnoj stanici, debug-ovanje se esto odvija tehnikama za naknadno procesiranje.To znaci da je korak izvrsenja simulacije i hvatanja rezulltata izdvojen iz koraka interpretacije i koraka koji se odnosi na interpretaciju debugging problema. Uobiajen alat za debug-ovanje hardvera je osciloskop. Hardverski inenjeri rade posmatrajui vrednosti signala tokom perioda vremena simulacije.Dananji alati za posmatranje talasnih oblika pamte podatke u kompresovanom obliku zbog maksimalnih performansi i minimalne veliine fajlova. IEEE Verilog standard koristi format za fajlove u koje su smeteni talsani oblici, poznat kao VCD. Ovakav format teksta je dobar za male simulacije sa malim koliinama podataka koje treba upamtiti, ali postaje veliki za velike simulatore. Za takve simulacije moraju biti korieni odgovarajui formati sa nekim stepenom kompresije.
66
Mikroprocesorski sistemi
ARM7 procesor
6.8.6 Programski jezici za verifikaciju Sa poveanjem sloenosti dizajna je postalo teko koristiti programske jezike za simulaciju koji bi adekvatno verifikovali dizajn. Zato su predloeni novi programski jezici i razvijeni samo za potrebe verifikacije. Iako ih sada postoji mnogo, jedan od najpoznatijih jezika je danas poznat kao IEEE 1674 standard. Poboljanje verifikacije HDL dizajna podrazumeva dodatne osobine u odnosu na one koje pruaju dananji najkorieniji programski jezici: Verilog, VHDL ili C. Neki od korisnih aspekata jezika za verifikaciju su: Lakoa ponovnog korienja kodova za viestruke testove Ogranienja za generisanje testova Ugraena funkcionalna podrka Tipovi podataka koji omoguavaju visok nivo funkcionalnosti i dobar interfejs sa HDL dizajnom 6.8.7 Tvrenja Popularnost korienja tvrenja za specifikaciju namene dizajna i osobine dizajna jako brzo raste. Tvrenja su vrlo jak alat za meusobnu proveru dizajna i pretpostavljenog ponaanja. Takoe bitni za verifikaciju i sistemske inenjere jer mogu formalno navesti ponaanje sistema i proveriti da li se sistem ponaa u skladu sa specifikacijom. Tvrenja pruaju zajedniki format viestrukim alatima. Tvrenja olakavajudebug-ovanje i smanjuju vreme simulacije Tvrenja verifikuju interfejse izmeu blokova Tvrenja su dobra veba RTL kodiranja
6.8.8 Definisanje debug-ovanja Ono to mnogi inenjeri nazivaju debug-ovanje je ustvari kombinacija dve zasebne aktivnosti: detekcije i debug-ovanja. Detekcija je proces odreivanja postojanja problema u dizajnu ili testu. Mnogi projekti koriste simulaciju kao osnovni nain za detekciju problema. Nedavno su alati za formalnu verifikaciju poeli da budu korieni za odreivanje problema u dizajnu. Prilikom simulacije postoji mnogo naina za prikazivanje postojanja problema. Dva najea naina su pomou $display iskaza, i poreenje vrednosti u memoriji sa oekivanim rezultatima. Nedostatak $display iskaza moe znaiti i problem sa rezultatom testa. Tvrenja su bolji nain za detekciju greaka. Za poveanje efikasnosti detekcije problema, inenjeri primenjuju vie raunara i simulatora, ili koriste druge naine za poveanje performansi. Ti naini mogu biti ubrzanje simulacije ili emulacija. Kao dodatak jednostavnim nainima sa dodavanjem hardvera i poveanjem performansi, inenjeri mogu razviti dodatne pametnije testove koji e otkriti probleme bre, ili ranije. Primeri podrazumevaju testove usmerene ka razvijanju dizajna koji ciljaju posebnu oblast, ili korienje povratnih informacija od strane koda. 67
Mikroprocesorski sistemi
ARM7 procesor
Kada se problem otkrije on mora biti debug-ovan. Debug-ovanje je proces pronalaenja korena uzroka problema i promene dizajna ili testa kako bi se problem reio. Debug-ovanje je mehaniki proces u poreenju sa detekcijom, jer je potreban inenjer koji e provesti odreeno vreme kako bi pronaao ta je ispravno a ta nije. Odreivanje pravilnog ponaanja zahteva dobro poznavanje dizajna i njegovog rada. Vei broj brih raunara ne mogu pomoi pri procesu debug-ovanja. Alati mogu pomoi prilikom unapreenja procesa tako to olakavaju razumevanje dizajna, i tako to pruaju bolji pregled rezultata simulacije. Osnovni nain debug-ovanja je posmatranje talasnih oblika. Koristei informacije detekcije, inenjeri moraju pregledati logike signale u razliitim vremenskim trenucima tokom procesa simulacije. Zatim moraju pronai ta ne radi ispravno. Ovaj proces tipino zahteva puno radnih sati za odreivanje pravilnog rada dizajna. Gomilanje nepotrebnih talasnih oblika moe takoe drastino smanjiti performanse simulacije i kao rezultat dati velike fajlove. Inenjeri zato moraju izdvojiti vreme pre simulacije za odreivanje perioda u kojima e biti generisani fajlovi koji pamte talasne oblike. Takoe moraju biti odreeni i delovi dizajna za koje e talasni oblici biti upameni. U verifikaciji ugraenih sistema postoje dve bitne oblasti koje moraju biti dobro shvaene, i koje e biti razmotrene u naredom delu teksta: memorijski modeli i mikroprocesorski modeli. 6.8.9 Memorijski modeli Memorijski modeli za diskretne memorijske komponente kao i memorije koje su ugraene u ipove se koriste u logikim simulacijama. Softver mora biti preveden iz binarnih formata (kao to je ELF) u neki koji e biti pogodan za uitavanje u memorijske modele. Postoji mnogo razliitih vrsta memorijskih modela koji se kreu od onih sa Verilog-a i VHDL-a, pa sve do C jezika. Oni koriste C interfejs logikog simulatora za komunikaciju sa HDL-om. Primer jednog jednostavnog memorijskog modela :
// Simple read-only memory module ROM(A, OE, D); input [13:0] A; // Address input OE; // Output enable output [7:0] D; // Data output reg [7:0] D; reg [7:0] Mem [0:(16 * 1024)]; // memory array // Read from memory always @(OE or A) begin if (OE) D = Mem[A]; else D = 8'bz;
end endmodule
68
Mikroprocesorski sistemi
ARM7 procesor
IEEE VCD format koji se koristi za smetanje podataka talasnih oblika upravlja sadrajem memorija. Za bolje razumevanje aktivnosti memorije mora biti izvreno posebno manipulisanje. Jedna alternativa je korienje odgovarajueg formata za fajlove u koje se smeta talasni oblik. Taj format mora biti u stanju da prima i smeta istoriju stanja memorije. Veina hardverskih alata za debug-ovanje koji su u sastavu logikih simulatora, kao i oni nezavisni alati za debug-ovanje omoguavaju ovakve pogodnosti. Alati pruaju GUI funkcije za prikaz sadraja memorije onako kako je snimljen u fajlovima koji sadre talasne oblike. Druga alternativa je korienje memorijskih modela koji su zapisani na C jeziku i koji poseduju API za itanje i zapisivanje sadraja memorije. Ovo omoguava da grafiki alati pregledaju istoriju memorije interaktivno tokom simulacije, kao i nakon simulacije. Takoe se omoguava izmena memorije tokom simulacije korienjem GUI. 6.8.10 Mikroprocesorski modeli Jo jedan alat koji koriste hardverski inenjeri je mikroprocesorski model. Dva osnovna modela koja se koriste za hardverski dizajn su model funkcionalne magistrale BFM i potpuni funkcionalni model FFM. FFM model logike simulacije je neophodan za System-on-chip dizajne. Nemogue je (ili bar rizino i nepraktino) napraviti ASIC koji e sadrati mikroprocesor bez potpune simulacije ipa. Za korienje FFM modela je neophodan odgovarajui softver. Softver mora biti kompajliran na ciljnom sistemu i uitan u memoriju logikog simulatora. Procesor e tada poeti sa pribavljanjem i izvravanjem instrukcija i tako verifikovati dizajn sistema. FFM modeli dolaze sa najrazliitijim formatima. Najbri se piu u C programskom jeziku i koriste jednostavne konstrukcije za komunikaciju sa logikim simulatorom. Nekada se moe desiti da se opisi na gejtovskom ili RTL nivou mikroprocesora koriste kao FFM modeli. To se moe koristiti kao stvarna baza podataka dizajna koja e biti iskoriena za kasniju proizvodnju ureaja. U oblasti visokih performansi sistema-na-ipu, FFM model nije obino dostupan za mikroprocesore dobrih performansi, poput PowerPC ili MIPS procesora. Da bi zadovoljili ovakve potrebe, hardverski inenjeri su se obratili BFM i hardverskom modelu za verifikaciju. BFM model je manje sloen od FFM modela. On samo implementira deo interfejsa magistrale jednog mikroprocesora. Delatnosti na magistrali, poput itanja i zapisivanja memorije, pribavljanja instrukcija i prekida se simuliraju na nivou zadataka (task-ova). Testbench se koristi za generisanje sekvence moguih akcija koje procesor moe izvesti. BFM model kojim upravlja testbench moe ali ne mora oslikati sekvencu akcija koja nastaje kada se softver ugraenog sistema pusti u rad na ciljnom sistemu, ali je mnogo laki za rad hardverskim inenjerima. BFM modeli su obino zapisani na C jeziku korienjem C interfejsa logikog simulatora, ili u Verilog-u ili VHDL-u. Skori napredak u protokolima magistrala mikroprocesora ine BFM teim za zapisivanje.
69
Mikroprocesorski sistemi
ARM7 procesor
Jo jedna tehnika koja se koristi za simulaciju je hardverski model. Koristi se tehnologija koja postoji preko 15 godina. Hardverski model koristi stvarni ureaj koji je smeten u postolje koje je povezano sa logikim simulatorom. Ureaj tada slui kao sopstveni model. Hardverski modeli mogu biti korieni za skoro svaki digitalni ureaj za koji je potreban simulacioni model. Ureaji poput mikroprocesora, digitalnih signal-procesora, ipova za interfejs magistrala, mreni procesori i sistemski kontroleri su samo neki od uobiajenih. Hardverski modeli se obino razvijaju za one ureaje za koje bi softverski model bio previe sloen za pisanje, i tamo gde je neophodna potpuna funkcionalnost.
6.8.11 Proces dizajniranja hardvera Proces dizajniranja hardvera se sastoji od odluivanja o arhitekturi i ponaanju dizajna, koji se nastavlja implementacijom pomou Verilog-a ili VHDL-a na RTL nivou. Sledei korak je voenje RTL koda kroz skup koraka za proizvodnju ipova i ploica. Skup koraka koji se mora prei od RTL-a do ipova je jako dobro definisan. Aktivnosti na nivou arhitekture su mnogo manje definisane i mnogo se vie meusobno razlikuju . Sa stanovita verifikacije, proces mora prvo verifikovati svaki RTL blok onako kako se proizvede. Zatim se blokovi akumuliraju u podsisteme i sisteme koji se takoe verifikuju celim putem, sve do take kada se itav dizajn verifikuje. Kljuno pitanje u SoC dizajnu je kada potroiti vreme na hardversku i softversku integraciju. Neki projekti zagovaraju da se ovakva integracija obavi jako rano, u fazi arhitekture, kako bi se osigurali da nee biti pitanja o performansama kasnije. U ovoj ranoj fazi se moe koristiti i apstraktni model dizajna kako bi se omoguio nain rada softvera sa visokim perforamansama. Neki drugi projekti zagovaraju odlaganje integracije sve dok ne bude spreman RTL kod dizajna i dok svi blokovi ne budu verifikovani zajedno, kao i da svi glavni podsistemi rade. 6.8.12 Pregled mikrkoprocesora Kao to smo videli ranije, softverski i hardverski inenjeri imaju razliite poglede na mikroprocesor. Poeljno je razloiti funkcije mikroprocesora na dva dela: interne operacije i eksterni interfejs. Interne funkcije sadre: Skup instrukcija. Ovo podrazumeva format instrukcija koje procesor moe izvravati. Instrukcije mogu biti kodirane na mnogo naina. Za RISC procesore su instrukcije fiksne duine od 32 ili 16 bitova. Registri. Kombinacije registara opte namene, status registara, i programsog brojaa.
70
Mikroprocesorski sistemi
ARM7 procesor
Ke. Posebna vrsta memorije u koju se smetaju najee korieni podaci. Hardver se brine o tome koje podatke treba smestiti u ke memoriju, kao i o stanju kea. Sistem vodova (pipeline). Razliite etape procesiranja instrukcija kako bi se omoguilo poveanje performansi. Ugraeni RISC procesori koriste tri ili pet stepeni vodova. Jedinica za upravljanje memorijom (MMU). MMU prua prevoenje adresa neophodno za implementiranje virtualne memorije. Koristi je operativni sistem da bi pruio zatitu sistema od strane nekih programa ili neizvrenih zadataka.
Izvan mikroprocesora postoje instrulcije itanja i zapisivanja, kao i memorijska mapa koja definie kojoj memoriji ili registru e se pristupiti. Eksterni interfejs mikroprocesora je glavna briga hardverskih inenjera. Interfejs se sadri od skupa signala koji prate odreeni definisani protokol.
Ovakav eksterni interfejs sadri: Interfejs memorijske magistrale. Pravila za korienje magistrale, itanje i zapisivanje podataka sa magistrale. Na ovaj nain procesor dobija i alje signale. Interfejs magistrala procesora. Nekada se koristi posebni interfejs za komunikaciju sa hardverskim funkcijama koje zahtevaju posebnu pa`nju po pitanju performansi. Prekidi. Skup signala koji se koristi da bi saoptio mikroprocesoru da je potreban servis. Tipino je postojanje viestrukih izvora prekida koji imaju razliite nivoe prioriteta. 6.8.13 Interakcija hardvera i softvera Da bi se izvrila priprema za tehnike verifikacije hardvera i softvera potrebno je razmotriti metode debug-ovanja koje koriste inenjeri. Karakteristike debug-ovanja softvera Potpuno interaktivno Moe se izvoditi u laboratoriji sa ploicom koja radi na frekvenciji od min 25 MHz. Koristi se printif() iskaz za praenje izvrenja promenljivih Softver za izvravanje sa debug-erom na izvornom nivou Korienje taaka prekida za prekid izvrenja i proveru memorije (promenljivih i struktura podataka), steka i sadraja registara Iterativno podizanje sistema i podeavanje taaka prekida sve dok se ne pronau greke. 71
Mikroprocesorski sistemi
ARM7 procesor
Karakteristike debug-ovanja hardvera Izvravanje logike simulacije na brzinama 10100 Hz Iskazi za tampanje poruka (ili nedostatak ovakvih poruka) za otkrivanje greaka Korienje memorisanih talasnih oblika za pronalaenje vrednosti signala i greaka
Lista karakteristika prikazuje izazov verifikacije dizajna i sa strane softvera i strane hardvera. Primarna interakcija hardvera i softvera nastaje na granicama magistrala mikroprocesora i u sadrajima programabilnih registara i memorije. Memorija je verovatno najvanije mesto susretanja hardvera i softvera, a ipak je pogreno shvaeno. Na primer, hardverski inenjeri su navikli da uitavaju podatke u memoriju u simulacioni model na startu simulacije korienjem odreenih komandi. U trenutku kada simulacija pone i reset se obavi, podaci u memoriji su spremni za itanje ili zapisivanje. Softverski inenjeri imaju drugaiji pristup. Najuobiajeniji nain pisanja test programa za ugraeni sistem je njegovo kompajliranje u fajl izvrnog formata, poput ELF. Zatim se moe otii u laboratoriju, ukljuiti ploica sa mikroprocesorom i povezati softverski debug-er preko JTAG interfejsa. JTAG kabl povezuje ploicu i paralelni port PC-ja. Debug-er se koristi za download ELF fajla u memoriju na ploici, i zatim se moe poeti sa radom programa. JTAG veza koristi mikroprocesor za izvravanje dugakih nizova upisivanja u memoriju preko magistrale procesora, kako bi upisala podatke u memoriju, umesto da uita podatke pre poetka rada kao u sluaju simulacije.
72
Mikroprocesorski sistemi
ARM7 procesor
73
Mikroprocesorski sistemi
ARM7 procesor
Kljuni deo je svakako JTAG (Joint Test Action Group). To je unverzalni debugger razvijen za 8- 16- i 32-bitne mikrokontrolere. Procesori tipa ARM7-9, locirani na ploi za razvoj i testiranje, standardno se povezuju preko 20-pinskog JTAG konektora. Komunikacija JTAG-a sa PC-mainom (Personal Computer) se ostvaruje preko komunikacione veze USB 2.0. Download-ovanje programa se vri brzinom od 100 kB/s. JTAG debugger i HiTop korisniki program komuniciraju preko posebnog interfejs programa nazvanog DAS server lociranog u JTAG Tantino interfejsu. Pomou JTAG hardvera je, pored debug-ovanja programa, mogue obaviti i programiranje fle memorije nekog mikrokontrolera.
74
Mikroprocesorski sistemi
ARM7 procesor
Slika 2: Nain povezivanja razvojnog sistema Kao to se vidi sa slike 2, povezivanje se ostvaruje pomou: 1. USB kabla: koristi se za povezivanje JTAG debugger-a sa PC-mainom 2. 20-pinskog kabla koji povezuje JTAG konektor lociran na razvojnoj ploi sa Tantino interfejsom 3. USB porta lociranog na razvojnoj ploici MCB2130 sa PC mainom preko USB kabla. Preko ove veze razvojna ploica dobija napajanje. Ostali tehniki detalji koji se odnose na razvojnu plocu MCB2130 su prikazani u Tabeli 1: PARAMETAR Napon napajanja Struja napajanja Frekvencija kristala CPU Periferali OPIS 5 V (preko USB magistrale) tipino 65 mA, maksimalno 120 mA 12 MHz (max 60 MHz) Phillips LPC21xx 2 x RS232 interfejs (COM0 i COM1) 1 x JTAG interfejs 1 x analogni izlaz (povezan na zvunik standardno) 1 x analogni ulaz (povezan na potenciometar standardno) 1 x ETM interfejs (opciono)
75
Mikroprocesorski sistemi
ARM7 procesor
Mikroprocesorski sistemi
ARM7 procesor
77
Mikroprocesorski sistemi
ARM7 procesor
78
Mikroprocesorski sistemi
ARM7 procesor
79
Mikroprocesorski sistemi
ARM7 procesor
Na ulaze kola, za koje vaze napomene od [1] do [6], mogue je dovesti napone max amplitude 5V. Ovi pinovi su definisani kao digitalni U/I pinovi. Pinovi markirani simbolom [7] koriste se kao digitalni ulazi, a pinovi markirani simbolom [8] su analogni ulazi / izlazi.
80
Mikroprocesorski sistemi
ARM7 procesor
Slika 4 prikazuje fiziki izgled ploice MCB 2130 u tampanoj formi, i raspored osnovnih gradivnih blokova. Za komunikaciju se koriste: komunikacioni portovi COM1 i COM2 i JTAG konektor. Za indikaciju se koriste LED diode, za reset sistema taster RESET. Prihvatanje zahteva za prekid se ostvaruje preko tastera INT, a za napajanje se koristi USB konektor.
Slika 4: Fiziki izgled razvojne ploice Ostali sastavni delovi razvojne ploice su: a) kristalni oscillator; b) CPU LPC2138; c) pobudni drajverski stepen za LED diode; d) potenciometar kojim se kontrolie rad ugraenog zvunika (slika 4).
Blok-ema sistema koja se odnosi na razvojnu ploicu je prikazana na slici 5. Vie detalja se moe nai u dodatku A.
81
Mikroprocesorski sistemi
ARM7 procesor
CPU Integrisano kolo LPC2138 (slika 3) je proizvod firme Phillips . Ovaj mikrokontroler poseduje 64-pina. Baziran je na procesoru ARM7. Kao sto se vidi sa slike 6, LPC2138 poseduje dva dvosmerna U / I porta. Port P0 je 32-bitni a P1 16bitni. Dodatno postoje dva pina za prikljuenje oscilatora (12 MHz), jedan za reset, jedan za dovod frekvencije od 32.768 MHz, i dvanaest za napajanje (slika 6). CPU upravlja radom svih komponenata ugradjenih na razvojnoj plocici sa slike 4. Signali koje generie CPU se direktno vode na prikazane pinove.
CPU
LPC 2138
P1 (16 pinova)
Reset pin
Oscilator (2 pina)
RTC pin
82
Mikroprocesorski sistemi
ARM7 procesor
Kratkospajai njihovo postavljanje definie konfiguraciju razvojne ploice. Ukupno postoje dvanaest (oznaeni sa J1-J13) i imaju sledee funkcije: o J1 ISP (In System Programming): Dozvola rada programiranjesistema. Kada se J1 postavi, mogue je generisati signal na P1.14 (EINT1) preko RTS linije porta COM0. Kada je RTS aktivan na P0.14 se dovodi nizak nivo signala, to se koristi za ulazak u ISP nain rada (slika 7).
Slika 7: Poloaj kratkospajaa J1, J7 i J10 o J2 AV: Analogni napon za AIN0. Kratkospaja J2 povezuje potenciometar POT1 na analogni ulaz procesora AVIN (slika 8). Potenciometar upravlja radom zvunika koji se nalazi na razvojnoj ploici.
Mikroprocesorski sistemi
ARM7 procesor
o J3 3.3V: Napon napajanja za CPU. Ovim kratkospajaem se povezuje napajanje od 3.3V na CPU (slika 9).
Slika 9: Poloaj kratkospajaa J3, J4, J5 i J11 o J4 VBAT: Napon napajanja baterije za CPU. Povezuje napon napajanja baterije VBAT od 3.3V na CPU (slika 9). o J5 V3A: Analogni referentni napon za CPU. Povezuje napajanje od 3.3V na referentni analogni ulaz procesora (slika 9). o J6 LED: Omoguava LED drajver. Kada je kratkospaja J6 postavljen, LED drajver (kolo IC6) upravlja radom dioda povezanih na pinove Port1.16 Port1.23 (slika 10).
Mikroprocesorski sistemi
ARM7 procesor
o J7 INT1: Omoguen taster INT1. Kada je J7 postavljen, taster INT1 se povezuje na U/I pin procesora P0.14 (EINT1 ulaz). Signal prekida se generie nakon pritiskanja tastera. Signal prekida je niskog logikog nivoa (slika 7). o J8 ETM: Omoguen ugraeni modul za praenje. Kada je J8 postavljen, omoguen je ETM (Embedded Trace Module) - modul praenja signala na paralelnim ulazima. U ovom sluaju se LED diode na pinovima Port1.16 Port1.23 ne mogu koristiti jer se ovi pinovi koriste i za ETM signale (slika 11).
Slika 11: Kratkospaja J8 o J9 JTAG: Omoguen JTAG interfejs. Pomou ovog kratkospajaa se povezuje hardverska komponenta JTAG, pomou koje se moe izvoditi debug-ovanje i ISP programiranje flash memorije (In System Programming) (slika 12).
Mikroprocesorski sistemi
ARM7 procesor
o J10 RST: Omoguen reset putem COM0 porta. Kada je J10 postavljen, mogue je generisati Reset signal procesora preko DTR (Data Terminal Ready) signala na portu COM0. Reset se generie kada je DTR signal aktivan (slika 7). o J11 VREF: Referentni napon A/D konvertora. Povezuje 3.3 V napona napajanja VREF sa CPU (slika 9). o J13 AOUT: D/A izlaz za zvunik. Pri postavljenom kratkospajau J13, AOUT analogni izlaz procesora je povezan na NF pojaava (slika 13).
Napajanje (USB plug) - izvodi se preko USB kabla povezanog na PC-mainu. MCB2130 razvojna ploica se napaja naponom u rasponu od 5 do 9 V, ali regulator napajanja IC3 (kolo LD1117S33) smanjuje taj napon i generie pomenuta 3.3 V jednosmernog napona. Blok dijagram ovog kola je dat na slici 14:
Slika 14: Regulator napajanja, kolo LD1117S33 Delovi kola oznaeni brojevima 1 - 4 predstavljaju: 1. naponski generator 2. strujni generator 3. termika kompenzacija 4. termika zatita 86
Mikroprocesorski sistemi
ARM7 procesor
JTAG interfejs konektor predstavlja deo razvojnog sistema koji slui za komunikaciju sa PC-mainom. Na JTAG se preko 20-pinskog konektora povezuje Tantino ureaj koji slui za debug-ovanje programa i programiranje flash memorije na ipu. Pomou JTAG-a se mogu programirati i ureaji koji se ne nalaze na ipu. Na slici 12 je prikazan izgled JTAG konektora. Napomene koje se javljaju u Tabeli 4 imaju sledee znaenje: *) prefiks n oznaava nizak nivo signala na odreenom pinu. **) smer I oznaava ulaz u mikrokontroler, to znai izlaz iz JTAG-a; smer O obeleava izlaz iz mikrokontrolera i ulaz za JTAG.
87
Mikroprocesorski sistemi
ARM7 procesor
Tabela 4: Signali na pinovima JTAG konektora Svi signali ulaza i izlaza JTAG-a su kompatibilni za razliite napone. U/I naponi koje koristi JTAG hardver su definisani naponom koji se javlja na konektoru VTref. Nivo izlaznog signala iz JTAG-a nee prei 3.6V. Preporuuje se da se u svaku izlaznu liniju mikrokontrolera ubaci redni otpornik od 100 oma.
LM386 NF pojaava. Na razvojnoj ploici MCB2130 se nalazi zvunik koji je povezan na analogni izlaz D/A konvertora. Analogni izlazni signal AOUT se pojaava pomou LM386 NF pojaavaa snage, zasnovanog na operacionom pojaavau. Pojaava je u detaljnoj emi u dodatku A predstavljen kao kolo IC4. Gejn NF pojaavaa je standardno podeen na vrednost 20, ali se dodavanjem spoljanjih otpornika izmeu pinova 1 i 8 moe poveati u opsegu do ak 200. Blok ema pojaavaa LM386 je prikazana na slici 15, a karakteristike u Tabeli 5.
88
Mikroprocesorski sistemi
ARM7 procesor
Slika 15: Blok ema kola LM386 pojaavaa analognog izlaznog signala
Pobuda LED dioda. POWER dioda indicira da li je napajanje povezano na razvojnu ploicu. Postoje i diode koje su povezane na osam Port1 pinova P1.16 P1.23. One se mogu se koristiti za indikaciju statusa programa prilikom testiranja aplikacija. Na ploici se nalazi i kolo za upravljanje radom LED dioda, tzv. LED drajver, koji je na detaljnoj emi predstavljen kolom IC6 (74LVC244). LED drajver predstavlja pobudni stepen za diode. Njegova blok ema e biti predstavljena na slici 16. U Tabeli 6 su navedeni opisi pinova za kolo 74LVC244. Visok nivo na pinovima dozvole OE postavlja izlaze ovog kola u stanje visoke impedanse, jer je njihov aktivni nivo nizak.
89
Mikroprocesorski sistemi
ARM7 procesor
Na slici 17 je prikazana logika ema ulaznih i izlaznih pinova pobudnog stepena dioda.
Slika 17: Logika ema kola 74LVC244 Tehnike karakteristike kola 74LVC244 koje slui za pobudu dioda su prikazane u Tabeli 7:
Mikroprocesorski sistemi
ARM7 procesor
Tasteri. Na ploici MCB2130 postoje dva tastera: o RESET taster koji je povezan na reset ulaz mikrokontrolera, o INT1 taster koji je povezan na NMI (Non Masked Interrupt) signal za prekid rada mikrokontrolera.
Kolo za prilagoenje MAX563. Na ovoj ploici postoje dva serijska porta: COM0 i COM1. MCB2130 podrava serijski UART (Universal Asynchronous Receiver Transmitter). Procesor koristi MAX232 kolo za konverziju logikih signala na naponske nivoe RS232 serijskog prikljuka. UART se moe koristiti za download nekih alata, poput alata za programiranje flash memorije. Preko COM0 porta je mogue programirati aplikacije, dok je preko COM1 porta mogue praenje izvrenja aplikacija. Praenje se izvodi putem serijskog interfejsa raunara. Oba serijska porta su povezana na mikrokontroler preko kola koje na detaljnoj emi nosi oznaku IC2. To je MAX563 ip koji poseduje dva ulazna i dva izlazna kontakta. Slui za prilagoenje napona i ima izgled kao na slici 19:
91
Mikroprocesorski sistemi
ARM7 procesor
Slika 19: Izgled kola MAX563 Tabela 8 prikazuje opis pinova za kolo MAX563:
92
Mikroprocesorski sistemi
ARM7 procesor
Serijski portovi (COM) su konfigurisani kao standardni 3-ini interfejsi. DB9 konektor je tako povezan da alje handshake signale nazad u PC-mainu. Na slici 20 su prikazani detalji serijskog porta:
Slika 20: Izgled standardnog DB9 konektora Pinovi koji postoje na ovakvom serijskom portu imaju sledea znaenja: o o o o CTS (Clear To Send) slobodan za prenos RTS (Request To Send) zahtev za prenos GND (Ground) signal mase DSR i DCD (Data Set Ready; Data Carrier Detected) su povezani u petlju (skup podataka spreman; otkriven nosa podataka) o DTR (Data Terminal Ready) - spreman za prijem podataka o RxD i TxD (Receive Data; Transmit Data) povezani na MAX 232 ip (slue za prijem i prenos podataka)
93
Mikroprocesorski sistemi
ARM7 procesor
Kreiranje nove aplikacije. Odabirom komande Project > New poinjemo sa definisanjem novog projekta. Prvi korak je da projektu dodelimo ime i lokaciju na kojoj e biti smeten.
Naredni korak podrazumeva odabir alata koji e biti korien za odreenu aplikaciju. Za ovaj primer biramo odgovarajui alat u vidu Tantino for ARM 7-9.
Iz niza mikrokontrolera treba zatim odabrati odgovarajueg proizvoaa i tip mikrokontrolera, kao i njegovu konfiguraciju. Za na sluaj su to ARM, LPC2138, i red bajtova Little Endian. 94
Mikroprocesorski sistemi
ARM7 procesor
Poto se komunikacija sa PC-mainom vri preko odgovarajueg USB porta, u narednom koraku biramo USB nain komunikacije i unosimo etvorocifreni serijski broj Tantino ureaja, koji se nalazi na zadnjoj strani.
U sluaju da aktuelna verzija HiTop korisnikog programa nije registrovana, pojavie se prozor koji nas obavetava o tome ali je mogue nastaviti rad odabirom opcije I want to continue evaluation.
95
Mikroprocesorski sistemi
ARM7 procesor
Startup script nije potrebno unositi ve se moe prei na sledei korak. Prilikom podeavanja opcija vezanih za novi projekat, prvo treba odabrati kompajler kojim e se izvravati program. Za na sluaj je to GNU C compiler for ARM.
Kada smo obavili sve prethodne zadatke, u dijalogu Tool settings vrimo podeavanja kompajlera, asemblera i linkera potrebnih za na primer. Startup script to automatski obavlja sam, tako da ova podeavanja moemo samo proveriti.
Zatim se u polje Applications unosi primer koji elimo da uitamo odabirom ve postojeeg fajla (koristi se opcija Insert).
96
Mikroprocesorski sistemi
ARM7 procesor
to se tie drugih podeavanja, vano je pomenuti sledee: clock opcija treba da ima podeen Intel-Hex format, kao to je prikazano u narednom koraku:
97
Mikroprocesorski sistemi
ARM7 procesor
Zakljuak
U ovom radu smo razmotrili sve osobine ARM7 procesora. Na poetku smo dali pregled ahritekture ARM procesora, kao i njegovo odgovarajue ahritekturalno naslee. Naveli smo tipove organizacije i imlementacije ARM procesora i prikazali njegovu pipeline strukturu. Zatim smo naveli pregled dosadanjih ARM jezgara procesora i objasnili neke njihove osobine. Jasno je da nijedan procesor nije posebno primenljiv bez odgovarajue podrke u vidu hardvera i softvera. Zato smo u drugom delu panju posvetili skupu instrukcija ARM procesora. Takoe smo naveli tipove podataka kojima ARM moe da manipulie, kao i tipove instrukcija koje se mogu izvravati na njemu. Instrukcije su podeljene u odgovarajue grupe i data su njihova blia objanjenja kao i primeri. Naredni deo prikazuje proces kreiranja hardvera i softvera. Da bi se razumela hardversko/softverska ko-verifikacija neophodno je razumeti princip rada alata, kao i proces koji se koristi za razvoj hardvera i softvera. Zbog toga su navedene potrebne verifikacione platforme, tipovi softvera i softverskih razvojnih alata, kao i hardverska razvojna sredstva. Shvatanje interakcije softvera i hardvera omoguilo je prelazak na zavrnu fazu rada, to jest prelazak na praktinu primenu iskustava steenih do tada. Poslednji deo ovog rada odnosi se na upoznavanje razliitih development kitova, ali posebno starter kit-a kompanije Hitex. Zadatak je bio da se daju blia objanjenja svih sastavnih delova jednog tipinog starter kit-a, i da se objasni funkcija pojedinih sastavnih delova razvojnog sistema. Naveli smo detaljne opise kola koja se nalaze na razvojnoj ploici i njihovu namenu. Opisani su i tipovi signala koji se mogu nai na pinovima ovih kola. Rad zavravamo objanjenjem naina povezivanja razvojne ploice na PCmainu, objanjenjem odgovarajuih podeavanja, kao i navoenjem naina za kreiranje nove aplikacije.
98
Mikroprocesorski sistemi
ARM7 procesor
Dodatak A
Prikaz detaljne eme mikrokontrolera LPC 2138
99
Mikroprocesorski sistemi
ARM7 procesor
100
Mikroprocesorski sistemi
ARM7 procesor
101
Mikroprocesorski sistemi
ARM7 procesor
Literatura:
Hitex Development Tools: The Insider's Guide to the Philips ARM7-based Microcontrolers, Trevor Martin Philips Semiconductors: LPC2131 / LPC 2132 / 2138 Preliminary release, November 2004. User Manual,
Jason R. Andrews: Co-Verification of Hardware and Software for ARM SoC design, 2005. ARM Limited: ARM Architecture Reference Manual, 1996. 2000. Philips Electronics: Single-chip 16/32-bit microcontrollers; o 32/64/128/256/512 kB ISP/IAP Flash with 10-bit ADC and DAC Preliminary Data Sheet, 2005. Steve Furber: ARM System-on-chip Architecture, Second Edition, New York, 2001. Hitex Developmnet Tools: Hitex Starter Kit for ARM with MCB2130 o Evaluation Board, 2005. John Catsoulis: Designing Embedded Hardware, O'Reilly Media, 2005. Hitex Developmnet Tools: Solutions & Tool Chain for ARM, 2004. Hitex Developmnet Tools: MCB2130 Evaluation Board / User's Guide, 2005.
102