Presentation is loading. Please wait.

Presentation is loading. Please wait.

ARM7 PROCESOR Mladenović Aleksandar Pavlović Bojan Dejković Davor

Similar presentations


Presentation on theme: "ARM7 PROCESOR Mladenović Aleksandar Pavlović Bojan Dejković Davor"— Presentation transcript:

1 ARM7 PROCESOR Mladenović Aleksandar Pavlović Bojan Dejković Davor
Milenković Miloš

2 Arhitektura ARM procesora
Student: Aleksandar Mladenović Broj indeksa:

3 Arhitektura ARM procesora
U vreme kada se pojavio ARM čip, jedino raspoložive RISC arhitekture su bile RISC I razvijen na Berkeley-u i MIPS na Stanfordu. ARM arhitektura je prihvatila brojne osobine RISC I dizajna, ali je brojne odbacila. One koje su se i dalje koristile su bile: Napuni - smesti arhitektura (load-store) 32-bitni fiksni format instrukcija Tro-adresni format instrukcija Osobine koje je ARM odbacio, a bile su korišćene na RISC I arhitekturi su: Rad sa registarskim prozorima Odloženo grananje Izvršenje svih instrukcija u jednom ciklusu

4 Registri ARM7 procesora Skup instrukcija jednog procesora definiše operacije koje programer koristi da promeni stanje sistema. Stanje čine vrednosti podataka koji se čuvaju u vidljivim registrima procesora i u sistemskoj memoriji. Svaka instrukcija izvršava definisanu transformaciju procesora iz stanja koje je bilo pre instrukcije, u stanje po njenom okončanju. Promena stanja se odnosi samo na programsko vidljive, a ne nevidljive registre.To znači da su bitne samo vrednosti koje se čuvaju u vidljivim registrima. Slika 1. Vidljivi registri ARM7 procesora

5 Statusni registar tekućeg programa (CPSR) se koristi za čuvanje statusnih markera. Ovi markeri se postavljaju nakon izvršenja aritmetičko-logičkih operacija. Sadržaj ovih bitova definiše režim rada procesora,način prihvatanja prekida i stanje nakon izvršenja operacija. Registri R0 do R12 su registri opšte namene, R13 se koristi kao pokazivač magacina, R14 kao registar za povezivanje podprograma, a R15 kao programski brojač. ARM je arhitektura tipa Load - Store. To znači da sve aritmetičko-logičke instrukcije manipulišu nad sadržajem registara, a jedine dve instrukcije pomoću kojih se vrši obraćanje memoriji su operacije Load i Store. Pomoću Load se dobavlja podatak iz memorije u registar, a pomoću Store sadržaj registra se smešta u memoriju.

6 Sve ARM instrukcije su 32-bitne.
Najznačajnije osobine skupa instrukcija ARM procesora su sledeće: učitaj-smesti arhitektura. 3-adresne instrukcije za obradu podataka. uslovno izvršenje svake od instrukcija. uključenje vrlo jakih višestrukih učitaj-smesti instrukcija registara mogućnost da se izvedu opšte operacije pomeranja kao i opšte aritmetičko-logičke operacije u jednoj instrukciji, koja se izvršava u jednom taktnom ciklusu. proširenje na otvoreni skup instrukcija preko skupa instrukcija koprocesora, što uključuje i dodavanje novih registara i tipova podataka programerskom modelu. 16-bitna predstava skupa instrukcija velike gustine u Thumb arhitekturi.

7 Razvojni alati ARM-a Pošto se ARM koristi kao embedded kontroler kod kojih ciljni hardver nije projektovan da predstavlja podlogu za razvoj softvera, ovi alati su namenjeni za razvoj drugih arhitektura kakve su platforme PC-a na kojima se izvršavaju Windows programi ili radne stanice koje rade pod UNIX-om. Struktura razvojnog sredstva ARM je prikazana na slici2. C-ovi ili izvorni asemblerski fajlovi se kompajliraju ili asembliraju u ARM objektni format (.aof), koji se nakon toga povezuju u ARM-ov fajl format (aif.). Na osnovu formatovih fajlova kreiraju se tabele za otklanjanje grešaka u programu uz pomoć AMR-ovog simboličkog debuggera (ARMsd koji može da napuni, izvrši i debagira programe bilo na hardveru kakav je ARM Development Board ili koristeći softversku emulaciju pomoću ARMulatora) .

8 Kompajleru se može pridružiti i Thumb kod.
ARM-ov C kompajler je kompatibilan sa ANSI standardom za C i podržan je od strane odgovarajućih biblioteka standardnih funkcija. Kompajler koristi ARM standard za poziv procedure za sve spoljašnje dostupne funkcije. Može mu se narediti da generiše asemblerski izvorni izlazni kod umesto ARM-ovog objektnog formata tako da kod može biti ispitan, ili čak i optimizovan, pa zatim dat na asembliranje. Kompajleru se može pridružiti i Thumb kod. asm source C libraries C source .aof linker object libraries .aif assembler C compiler ARMsd system model ARMulator development board debug Slika 2 : Struktura ARM C kompajlera

9 ARM asembler je pravi makro asembler koji proizvodi ARM objektni izlazni format koji se može linkovati sa izlazom iz C kompajlera. Linker prihvata jedan ili više objektnih fajlova i kombinuje ih u izvršivi program. On rešava simbolička referenciranja između objektnih fajlova i poziva objektne module iz biblioteka po potrebi programa. Može asemblirati različite komponente programa na veći broj različitih načina, zavisno od toga da li se program izvršava u RAM ili ROM memoriji, da li je potrebno preklapanje ,itd. ARM simbolički debuger je ulazni interfejs koji pomaže pri debugovanju programa koji se ili emuliraju (u ARMulatoru) ili izvršavaju na nekom ciljnom sistemu. Primer takvog hardvera je razvojna ploča. Sistem mora podržavati odgovarajuće protokole za debugovanje bilo preko serijske linije za prenos podataka ili preko JTAG test interfejsa. ARMulator (ARM emulator) je programski paket koji modelira ponašanje različitih jezgra ARM procesora na softverski način na nekom drugom računaru. Može raditi sa različitim nivoima preciznosti.

10 Organizacija i implementacija ARM-a
Organizacija jezgra ARM procesora ARM6 i ARM7 se jako malo promenila u odnosu na prve 3-mikronske procesore u tehnologiji razvijene u Acorn-u između i Tro-stepeni protočni sistem (pipeline) koji su ovi procesori koristili je postepeno usavršavan, a tehnologija CMOS procesa je znatno smanjila veličinu čipova, pa su se performanse ovih jezgara drastično povećale. U datom trenutku, moguće je da se izvršavaju 3 instrukcije, od kojih se svaka nalazi na različitom stepenu. Kada procesor izvodi jednostavne instrukcije za obradu podataka, protočni sistem (pipeline) omogućava da se po jedna instrukcija izvrši u svakom taktnom ciklusu. Jednoj instrukciji je potrebno tri taktna ciklusa da bi se izvršila, tako da ona ima kašnjenje od tri ciklusa. Stvarni propusni opseg je ipak jedna instrukcija po ciklusu. Od se pojavilo još par novih ARM jezgara koja su imala daleko bolje performanse zbog uvođenja peto-stepene protočne obrade kao i zasebnih memorija za instrukcije i podatke obično u formi razdvojenih keš memorija međusobno povezanih preko jedinstvene memorije za instrukcije i podatke.

11 Tro-stepena protočna ARM organizacija
ARM procesori do verzije ARM7 koriste tro-stepenu protočnu obradu kod koje se identifikuju sledeći stepeni: Fetch (pribavljanje)-instrukcija se pribavlja iz memorije i smešta u instrukcioni protočni system Decode (dekodiranje)- vrši se dekodiranje instrukcije a upravljački signali staze podataka se pripremaju za naredni ciklus Execute (izvršenje)- instrukcija se izvršava od strane staze podataka, čitaju se sadržaji registarske banke, pomera se operant,rezultat koji generiše ALU se upisuje u odredišni registar. Slika 3 : Tro-stepena protočna obrada

12 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 brojaču. Dodatni port za upis u R15 omogućava njegovo ažuriranje nakon što se pribavljena instrukcija adrese inkrementira, dok port za čitanje obezbeđuje da se nastavi sa fazom pribavljanja nakon što je adresa izdata. Barrel pomerač - može da pomera ili rotira bilo koji operant proizvoljan broj bit pozicija. Aritmetičko-logička jedinica (ALU) - obavlja aritmetičke i logičke funkcije iz repertoara skupa naredbi. Adresni registar i inkrementer - selektuje i čuva sve memorijske adrese i generiše sekvencijalne adrese kada je to potrebno. Registri podataka - čuvaju podatke koji se prenose ili dobavljaju iz memorije. Dekoder instrukcija i upravljačka logika.

13 Peto-stepeni ARM processor
ARM procesori se realizuju i kao petostepeno protočni. Kod ovih procesora postoje sledeći stepeni: Fetch Decode Execute Buffer/data- pristupa se memoriji za podatke kada se to zahteva od strane instrukcije. Inače ALU rezultat se baferuje i prosleđuje se i sledećem stepenu taktnog ciklusa. Write-back- rezultati generisani od strane instrukcije upisuju se u registarsko polje uključujući i podatke koji se dobavljaju iz memorije. Ovakav petostepeni protočni sistem korišćen je od strane velikog broja RISC procesora i predstavlja klasično rešenje za ovakav tip procesora. Peto-stepeni ARM processor Slika 4. Struktura peto-stepenog jezgra ARM-a

14 ARM jezgra procesora ARM7TDMI
ARM7TDMI ima jezgra sa naslabijim performansama. Koristi se kod velikog broja aplikacijama a tipična je ona koja se koristi za mobilni digitalni telefon. Jezgro procesora čini ARM integer jezgro koje koristi 3 protočna stepena sa sledećim proširenjima: primenjuje i izvršava ARM arhitekturu verzije 4T sa podrškom koja podržava 64-bitne rezultate množenja, operacija Load i Store tipa polureč i jedan bajt, kao i skup instrukcija Thumb. Sadrži EMbeddedICE modul koji podržava otklanjanje grešaka u programu kod ambedet sistema

15 Slika 5. Organizacija procesora ARMI7TDMI
Kod otklanjanja grešaka u hardveru pristup procesoru se ostvaruje preko JTAG porta za pristup, pri čemu je JTAG logika sastavni deo procesora.

16 Hardverski interfejs Jako veliki broj signala može dovesti do pogrešnog zaključka jer se njima pretpostavlja složeno ponašanje koje se nadovezuje na suštinsku jednostavnost bazičnog ARM interfejsa. Među signalima interfejsa dominiraju signali sa magistrala podataka i adresa, tako da će jednostavni memorijski interfejs koristiti ove signale kao i par kontrolnih signala. Ostali signali su namenjeni nekim drugim funkcijama poput debug-ovanja na čipu, JTAG boundary scan-u, i nekim drugim. Slika 6: Signali ARM7TDMI hardverskog interfejsa

17 Signali interfejsa prikazani su u grupama po funkcijama, i uloga svake grupe je opisana sa odgovarajućim informacijama o pojedinačnim signalima. Kontrola takta -Sve promene stanja unutar procesora se kontrolišu memorijskim taktom, mclk. Iako se ovim taktom može upravljati eksterno i time načiniti da procesor čeka na pristup, jednostavnije je imati samostalan takt i koristiti signal za preskakanje taktnih ciklusa. Memorijski interfejs - Memorijski interfejs obuhvata 32-bitnu adresu (A(31:0)), dvosmernu magistralu podataka (D(31:0)), posebne magistrale za prijem i slanje podataka (Dout(31:0)) i (Din(31:0)), kao i deset kontrolnih signala. MMU interfejs - Interfejs signali ka MMU daju informacije koje se koriste za kontrolu pristupa određenim oblastima memorije. Signal ukazuje da li se procesor nalazi u korisničkom (=0) ili u povlašćenom (=1) načinu rada, tako da se nekim oblastima memorije ne može pristupiti.

18 Stanje - Tbit izlaz daje informaciju okruženju o tome da li procesor trenutno izvršava ARM ili Thumb instrukcije. Konfiguracija - bigend menja red bitova između Little- i Big-endian. Ovaj ulaz konfiguriše način na koji procesor radi i ne očekuje se od njega da se dinamički menja, iako se po potrebi može menjati tokom faze takta 2. Prekidi - Dva ulaza za prekide mogu biti asinhrona u odnosu na takt procesora jer prolaze kroz lečeve za sinhronizaciju pre ulaska u kontrolnu logiku procesora. Brzi zahtev za prekid ima veći prioritet od normalnog zahteva za prekid. Inicijalizacija - reset startuje procesor iz poznatog stanja kada izvršavanje počinje sa adrese ARM7TDMI jezgro signalizira kada je u ciklusu zapisivanja pomoću signala . Tamo gde je eksterna magistrala podataka dvosmerna, enout se koristi za omogućavanje pristupa signalu dout (31:0) na magistralu. Ponekad je poželjno odložiti operaciju zapisivanja kako bi drugi uređaji mogli koristiti magistralu. Ostali signali za kontrolumagistrala su , enin , enout , abe, ale, tbe, busen, highz, busdis, i ecapclk i izvode različite operacije.

19 Podrška za debug­ovanje - Ugrađeni ICE modul sadrži tačke prekida registre za posmatranje stanja koji omogućavaju kodu da se zaustavi kako bi se izvršilo debug-ovanje. Ove registre kontroliše JTAG test port korišćenjem lanca za skeniranje. Kada se dođe do tačke prekida ili pregleda stanja, procesor se zaustavlja i prelazi u stanje debug-ovanja. U tom stanju se mogu ispitivati vrednosti registra procesora. Vrednosti registara će biti prosleđene na magistralu podataka odakle mogu biti uzorkovane i ponovo pomerene. Interfejs za debug-ovanje - Interfejs za debug-ovanje povećava funkcionalnost koju daje integrisana ugrađena ICE makro ćelija tako što dozvoljava da se spoljašnji hardver poveže zbog debug-ovanja (putem dbgen), i dozvoljava asinhroni zahtev za debug-ovanjem (preko dbgrq) ili zahtev sinhronizovan sa instrukcijom (breakpt). Spoljašnji hardver se obaveštava o debug stanju procesora putem dgback signala. Interni signal za debug-ovanje se vodi na dbrqi. Interfejs koprocesora - Dodatni signal koji daje koprocesor je koji pokazuje da li će se u memorijskom pristupu pribaviti instrukcija ili podatak. Ovo se može koristiti za praćenje izvršenja ARM instrukcije. JTAG interfejs - JTAG kontrolni signali se povezuju na test kontroler preko svojih pinova

20 Boundary scan - ARM7TDMI ćelija sadrži potpun JTAG TAP kontroler za dodatnu ugrađenu ICE funkcionalnost jre je ovaj TAP kontroler u stanju da podrži bilo koje olakšice prilikom skeniranja kojima se pristupa preko JTAG porta. Signali drivesb, ecapclkbs, icapclkbs, , pclkbs, rstclkbs, sdinbs, sdoutbs, shclkbs i shclk2bs u interfejsu su zato mogući kako bi se dozvolile dodatne putanje za skeniranje koje će se dodati sistemu. ARM7TDMI u sintezi - Proces sinteze podržava brojne opcije u varijacijama u funkcionalnosti jezgra procesora. Ovo uključuje: - izostavljanje ugrađene ICE ćelije; - zamenu kompletnog 64-bitnog množača jednostavnijim i manjim množačem koji podržava - samo ARM instrukcije množenja koje daju 32-bitni rezultat. Jezgro ARM7TDMI procesora je našlo razne primene u sistemima sa jednostavnom konfiguracijom memorije. To znači da se puno koristi u sistemima koji poseduju par kilobajta jednostavnog RAM-a na čipu. Tipičan primer takvog sistema je mobilni telefon. Tu se objedinjuju moderni hardver za obradu digitalnih signala i odgovarajuća memorija. Zato je ARM7TDMI postao najkorišćeniji procesor za funkcije kontrole i korisničkog interfejsa.

21 ARM8TDMI ARM8 jezgro je nastalo u kompaniji ARM Limited u periodu između i kako bi ispunilo zahteve za ARM jezgrom koje će imati bolje performanse od onih koje je postizalo dotadašnje ARM7 jezgro. Danas su ga nasledila ARM9 i ARM10 jezgra ali je njegov dizajn izazvao veliko interesovanje. Performanse procesora su poboljšane na sledeće načine: Povećavanjem taktne frekvencije. Ovo zahteva pojednostavljenje logike u svakom protočnom stepenu (pipelinu) što povlači povećanje broja protočnih stepena Smanjenjem CPI taktnih ciklusa po instrukciji. Ovo zahteva smanjenje broja komunikacionih kanala koje zauzimaju instrukcije, ili smanjenje zavisnosti među instrukcijama tako da one ne izazivaju zastoje u komunikacionim kanalima. Najbolja je kombinacija oba metoda.

22 ARM8 procesor se sastoji iz jedinice za pribavljanje instrukcija i integer staze podataka. Jedinica za pribavljanje je zadužena za pribavljanje instrukcija iz memorije i njihovo baferovanje u unapred zadati redosled. Taj redosled mora omogućiti maksimalno korišćenje propusnog opsega memorije. Zatim se integer jedinici prosleđuje po jedna instrukcija u svakom taktu zajedno sa vrednošću programskog brojača za datu instrukciju. Jedinica za pribavljanje je takođe zadužena za predikciju grananja, i koristi statičko predviđanje kod određivanja smera grananja (za grananja unazad se predviđaju da će se desiti, dok se grananja unapred predviđaju kao ‘neće se desiti’). Slika 7: Organizacija procesora ARM8TDMI ARM processor koristi peto-stepenu protočnu obradu pri čemu jedinica za unapred pribavljanje instrukcija odgovara prvom stepenu protočne obrade dok se integer jedinici pridružuju ostala 4 stepena.

23 ARM9TDMI ARM9TDMI jezgro poseduje funkcionalnost ARM7TDMI jezgra ali sa značajno poboljšanim performansama. Poput ARM7TDMI jezgra (na suprot od ARM8 jezgra) ovo novo jezgro podržava Thumb skup instrukcija i EmbeddedICE modul za podršku debugovanja na samom čipu. Poboljšanja u performansama su ostvarena nakon prihvatanja petostepenog protočnog sistema (pipelina) čime se obezbedilo povećanje pobudne taktne frekvencije kao i korišćenje posebnih memorijskih portova za pristup instrukcijama i podacima čime se značajno poboljšao CPI. Ima odvojene portove za instrukcije i podatke. U osnovi je moguće povezati ove portove na jedinstvenu memoriju, ali je posledica toga smanjenje performansi tako da se povezivanje ne izvodi. Pravi se za veće radne frekvencije u poređenju sa ARM7TDMI jezgrom, tako da sve aplikacije koje koriste ARM9TDMI jezgro imaju složenije i brže memorijske podsisteme. ARM procesori se primenjuju u : Industrijskoj kontroli,medicinskim sistemima kontroli pristupa,komunikacionim skretnicama,ugradjenim modemima i u primenama opšte namene.

24 Skup instrukcija ARM Student: Davor Dejkovic Broj indeksa:

25 1. Tipovi podataka sa kojima ARM manipuliše
ARM procesori podržavaju šest tipova podataka: 8-bitne označene i neoznačene bajtove. 16-bitne označene i neoznačene polureči; poređane na granice od dva bajta. 32-bitne označene i neoznačene reči; poređane na granice 4 bajta.

26 2. Tipovi instrukcija procesora ARM
Procesor ARM podržava sledeće tipove instrukcija: Instrukcije za pribavljnje podataka i memorisanje Instrukcije za razmene sadržaja memorije i registra Instrukcije pristupa status registara Instrukcije za obradu podataka Različite aritmetičke instrukcije Instrukcije množenja Instrukcije grananja Instrukcije za generisanje softverkoih prekida Instrukcije koprocesora

27 Instrukcije za pribavljnje podataka i memorisanje
Ova grupa instrukcija se može podeliti na: Instrukcije za prenos podataka tipa jedna reč ili neoznačeni bajt (Ove instrukcije su najfleksibilniji način za prenos (premeštanje) bajtova ili reči podataka između registara ARM i memorije. Premeštanje velikih blokova podataka je obično bolje izvesti korišćenjem višestrukih instrukcija za prenos registara, dok najnoviji ARM procesori takođe podržavaju instrukcije za premeštanje polureči i označenih bajtova). Instrukcije za prenos podataka tipa polureči i označenih bajtova Višestruke instrukcije za učitavanje i smeštanje (Ove ARM instrukcije omogućavaju da se bilo koji podskup (ili svi) od 16 registara koji su vidljivi u tekućem režimu rada mogu smestiti u memoriju ili pročitati iz nje. Jedan oblik ove instrukcije omogućava operativnom sistemu da napuni ili memoriše register korisničkog načina rada kao i da zapamti i obnovi stanje korisničkig procesa, a takođe da omogući 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 smeštanja i obnavljanja stanja radnih registara).

28 Binarno kodiranje instrukcije za transfer podataka od jedne reči ili neoznačenog bajta:

29 Asemblerski format: Pre-indeksirani format instrukcije: LDR | STR{<cond>} {B} Rd, [Rn, <offset>] {!} Post-indeksirani oblik: LDR | STR{<cond>} {B} {T} Rd, [Rn], <offset> Primeri: LDR r1, [r0] ; učitaj r1 iz adrese u r0 LDR r8, [r3, #4] ; učitaj r8 iz adrese u r3 + 4 STR r2, [r1, #0x100] ; smesti r2 na adresu u r1 + 0x100 LDRB r5, [r9] ; učitaj bajt u r5 iz r9 LDRB r3, [r8, #3] ; učitaj bajt u r3 iz r8 + 3 LDR r11, [r1, r2] ; učitaj r11 iz adrese u r1 + r2 STRB r10, [r7, -r4] ; smesti bajt iz r10 na adresu u r7 - r4 LDR r11, [r3, r5, LSL #2] ; učitaj r11 iz r3 + (r5 x 4) LDR r1, [r0, #4] ! ; učitaj r1 iz r0 + 4, zatim r0= r0 + 4 LDR r3, [r9], # ; učitaj r3 iz r9, zatim r9= r9 + 4 STR r2, [r5], # ; smesti r2 u r5, zatim r5= r5 + 8 LDR r0, [r1], r ; učitaj r0 iz r1, zatim r1= r1 + r2

30 Binarno kodiranje instrukcije za transfer podataka polureči i označenih bajtova:

31 Asemblerski formati: Pre-indeksiran oblik: LDR | STR{<cond>}H |SH |SB Rd, [Rn, <offset>] {!} Post-indeksiran oblik: LDR | STR{<cond>}H |SH |SB Rd, [Rn, <offset>] Primeri: LDRH r1, [r0] ; učitaj polureč u r1 iz r0 LDRH r8, [r3, #2] ; učitaj polureč u r8 iz r3 + 2 LDRH r12, [r13, #-6] ; učitaj polureč u r12 iz r13 - 6 STRH r2, [r1, #0x80] ; smesti polureč iz r2 u r1 + 0x80 LDRSH r5, [r9] ; učitaj označenu polureč u r5 iz r9 LDRH r11, [r1, r2] ; učitaj polureč u r11 iz adrese u r1 + r2 LDRSH r1, [r0, #2] ! ; učitaj označenu polureč r1 iz r0 + 2, ; zatim r0= r0 +2 LDRSB r7, [r6, #-1] ! ; učitaj označen bajt u r7 iz r6 - 1, ; zatim r6= r6 -1 LDRH r3, [r9], # ; učitaj polureč u r3 iz r9, zatim r9= r9 +2 STRH r2, [r5], # ; učitaj polureč iz r2 u r5, zatim r5= r5 +8

32 Binarno kodiranje višestruke instrukcije za učitavanje i smeštanje

33 Asemblerski format: Uobičajeni oblik instrukcije je: LDM | STM{<cond>}<add mode> Rn{!}, <registers> U ne-korisničkom načinu rada CPSR se može obnoviti pomoću: LDM{<cond>}<add mode> Rn{!}, <registers + pc>^ Korisnički registri se mogu sačuvati ili obnoviti pomoću: LDM | STM{<cond>}<add mode> Rn, <registers - pc>^ Primeri: Da bi se sačuvlo stanje tri radna registra i povratne adrese nakon ulaska u subrutinu potrebno je izvršiti instrikciju: STMFD r13!, {r0 - r2, r14} Ovo pretpostavlja da je r13 inicijalizovan za korišćenje kao pokazivač magacina. Da bi obnovili stanje radnih registara i obavili povratak koristi se instrukcija: LDMFD r13!, {r0 - r2, pc}

34 Instrukcije za razmenu sadržaja memorije i registra
Ove Instrukcije kombinuju učitavanje i smeštanje reči ili neoznače-nog bajta u jednoj instrukciji. Obično se dva prenosa kombinuju u jednu memorijsku operaciju koja se ne može razdvojiti spoljašnjim memorijskim pristupom (npr. pomoću DMA od kontrolera). Tako se instrukcija može koristiti kao osnova mehanizam semafora kako bi se obezbedila uzajamna isključivost u pristupu strukturama podaka koji su deljivi između većeg broja procesa, procesora ili procesora i DMA kontrolera. Binarno kodiranje Instrukcije za razmenu sadržaja memorije i registra

35 Asemblerski format: SWP{<cond>} {B} Rd, Rm, [Rn] Primeri: SWP r12, r10, [r9] ; učitaj r12 iz adrese r9 i ; smesti r10 na adresu r9 SWPB r3, r4, [r8] ; učitaj bajt u r3 iz adrese r8 i ; smesti bajt iz r4 na adresu r8 SWP r1, r1, [r8] ; zameni vrednosti u r1 i adresu u r2

36 Instrukcije pristupa status registara
Ova grupa instrukcija se može podeliti na: Instrukcije za prenos stanja statusnog registara u registre opšte namene (U slučaju da je potrebno sačuvati ili modifikovati sadržaj CPSR ili SPSR registra tekućeg načina rada, njihovi sadržaji moraju se prvo preneti u registar opšte namene, zatim da se modifikuju selektovani in a kraju da se povratna vrednost smesti u statusni registar. Ove instrukcije obavljaju prvi korak u zadatoj sekvenci) Instrukcije za prenosa registara opšte namene u statusni registar (U slučaju da je potrebno zapamtii ili modifikovati sadržaj CPSR ili SPSR tekućeg načina rada, njihovi sadržaji se prvo moraju preneti u registar opšte namene, zatim da se odabrani bitovi modifikuju, a onda se povratna vrednost smešta u statusni registar. Ove instrukcije obavljaju poslednji korak u zadatoj sekvenci).

37 Binarno kodiranje instrukcije prenosa status registara u registre opšte namene
Asemblerski format: MRS{<cond>} Rd, CPSR | SPSR gde je Rd odredišni registar CPSR - Current Program Status Register SPSR - Saved Program Status Register Primeri: MRS r0, CPSR ; prebaci CPSR u r0 MRS r3, SPSR ; prebaci SPSR u r3

38 Binarno kodiranje instrukcije prenosa registara opšte namene u status registar

39 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 proširenja – 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] Primer: Za postavljanje N, Z, C, i V flegova: MSR CPSR_f, #&f ; postavi sve flegove Za postavljanje C flega, i očuvanje N, Z i V: MRS r0, CPSR ; prebaci CPSR u r0 ORR r0, r0, #& ; postavi bit 29 od r0 MSR CPSR_f, r ; prebaci natrag u CPSR

40 Instrukcije za obradu podataka
Instrukcije procesora ARM koje se koriste za obradu podataka omogućavaju programeru da izvodi aritmetičke i logičke operacije nad podacima u registrima. Ovim instrukcijama su tipično potrebna dva operanda i one generišu jedinstven rezultat. Ova grupa instrukcija se može podeliti na: Aritmetičke operacije Logičke operacije Operacije premeštanja sadržaja registara Operacije poređenja Neposredni operandi Pomereni registarski operandi

41 Binarno kodiranje instrukcije za obradu podataka

42 Asemblerski format: Opšti format asemblerskih instrukcija iz ove grupe je sledećeg oblika: <op>{<cond>} {s} Rd, Rn, #<32-bit immediate> <op>{<cond>} {s} Rd, Rn, Rm, {<shift>} Kod monadičkih operacija kakve su MOV, MVN izostavlja se Rn tako da je format sledećeg oblika: <opcode1>{<cond>} {s} Rd, <shifter operand> <opcode1> := MOV | MVN Kod instrukcija upoređivanja kakve su CMP, CMN, TST, TEQ postavljaju se samo flegovi, ne specificira se registar Rd pa je format sledećeg 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

43 Aritmetičke operacije
Ove instrukcije izvode binarne aritmetičke operacije (dodavanje oduzimanje, ili inverzno oduzimanje tj. oduzimanje sa izmenjenim redosledom operanada) nad dva 32-bitna operanda. Operandi mogu biti neoznačene ili označene celobrojne vrednosti u dvojičnom komplermentu. Ulazni prenos kada se koristi predstavlja tekuću vrednost C bita registra CPSR. ADD r0, r1, r ; r0 := r1 + r2 ADC r0, r1, r ; r0 := r1 + r2 + C SUB r0, r1, r ; r0 := r1 - r2 SBC r0, r1, r ; r0 := r1 - r2 + C - 1 RSB r0, r1, r ; r0 := r2 - r1 RSC r0, r1, r ; r0 := r2 - r1 +C – 1 ‘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. Logičke operacije Ove instrukcije izvode logičke operacije Bulove algebre za svaki par bitova ulaznih operanada AND r0, r1, r ; r0 := r1 and r2 ORR r0, r1, r ; r0 := r1 or r2 EOR r0, r1, r ; r0 := r1 xor r2 BIC r0, r1, r ; r0 := r1 and not r2 Mnemonici AND, ORR, EOR se odnose na logičke operacije I, ILI, isključivo ILI. Mnemonik BIC se odnosi na ‘brisanje bita’ gde svaka ‘1’ u drugom operandu briše odgovarajući bit u prvom operandu.

44 Operacije premeštanja sadržaja registara
Ove instrukcije ignorišu prvi operand koji se izostavlja iz formata asem-blerskog jezika, i kopiraju drugi operand u krajnje odredište. MOV r0, r ; r0 := r2 MVN r0, r ; r0 := not r2 MVN’ mnemonik znači ‘kopiranje koplementarne vrednosti’ u odredišni registar Operacije poređenja Ove instrukcije ne generišu rezultat (koji je zbog toga izostavljen iz formata asemblerskog jezika) već samo postavljaju flegove (N, Z, C i V) registra CPSR. CMP r1, r ; postavi cc na r1 - r2 CMN r1, r ; postavi cc na r1 + r2 TST r1, r ; postavi cc na r1 and r2 TEQ r1, r ; postavi cc na r1 xor r2 Mnemonici označavaju ‘poređenje’ (CMP), ‘poređenje sa negacijom’ (CMN), testiranje sadržaja bita (TST) i ‘test nejednakost’ (TEQ). Neposredni operandi Ako umesto sabiranja sadržaja dva registra želimo da saberemo neku konstantu sa sadržajem registra tada će drugi operand biti neposredna vrednost koje se definiše kao konstanta kojoj prethodi znak #: ADD r3, r3, # ; r3 := r3 + 1 AND r8, r7, #&ff ; r8 := r7[7:0]

45 Različite aritmetičke instrukcije
Prebrojavanje početnih nula (CLZ(Count Leading Zeros) Korisna je za ponovnu normalizaciju brojeva i mnogo je efikasnija nego samo korišćenje nekih drugih ARM instrukcija. Asemblerski format: CLZ{<cond>} Rd, Rm Rd označava odredišni registar, a Rm izvorni registar Primer: MOV r0, #&100 CLZ r1, r ; r1 := 23 Binarno kodiranje instrukcije brojanja početnih nula

46 Binarno kodiranje instrukcije množenja
ARM instrukcije množenja daju proizvod u vidu dva 32-bitna binarna broja koja se čuvaju u registrima. Množenje dve 32-bitne celobrojne vrednosti dobija se 64-bitni rezultat, kod koga se 32 bita manje težine smeštaju u odredišni registar rezultata dok se ostali zanemaruju. Binarno kodiranje instrukcije množenja

47 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 Veoma važna instrukcija koja se koristi kod digitalnog procesiranja signala je množenje sa akumulacijom. U jednom konkretnom primeru ona je sledećeg oblika: MLA r4, r3, r2, r ; r4 := (r3 x r2 +r1) Primeri: MUL r4, r2, r ; r4 dobija vrednost r2 pomnožena sa r1 MULS r4, r2, r ; r4 := r2 x r1, postavi N I Z flegove MLA r7, r8, r9, r ; r4 := r8 x r9 + r3 SMULL r4, r8, r2, r ; r4 := bitovi 0 do 31 od r2 x r3 ; r8 := bitovi 32 do 63 od r2 x r3 UMULL r6, r8, r0, r ; r8, r6 := r0 x r1 UMLAL r5, r8, r0, r ; r8, r5 := r0 x r1 + r8, r5

48 Instrukcije grananja Grananje sa linkom
U ovu instrukcija spadaju: Grananje sa linkom (Instrukcije grananja i grananja sa linkom su standardni načini za promenu toka izvrešenja sekvenci instrukcija. ARM standardno izvršava instrukcije sa sekvencijalnim redosledom adresa u memoriji, a koristi uslovno izvršenje sa grananjem tamo gde je to potrebno). Grananje sa linkom i razmenom (Ove instrukcije su dostupne kod ARM čipova koji podržavaju 16-bitni Thumb skup instrukcija, i jedan su od mehanizama za prebacivanje procesora u režim rada kada bi izvršavao thumb instrukcije ili za povratak na ARM ili Thumb rutine). Format asemblera: B{L}X{<cond>} Rm BLX <target address> B{L} {<cond>} <target address> <target address> je obično labela u asemlerskom kodu. Asembler generiše ofset (koji će biti razlika između adrese reči mete i adrese instrukcije grananja plus 8) i postavlja H bit ako je potrebno.

49 Binarno kodiranje granjanja i grananje sa linkom
Binarno kodiranje granjanja (sa opcionim linkom) i instrukcijom razmene

50 Instrukcije za generisanje softverkoih prekida
Ova grupa instrukcija se može podeliti na: Softverski prekid (SWI) (Instrukcija softverskog prekida se koristi za poziv operativnog sistema i često se naziva ‘poziv supervizoru’. Ona postavlja procesor u supervizorski režim rada i započinje izvršenje instrukcija sa adrese 0x08). Instrukcija prekidna tačka (Instrukcije prekidne tačke se koriste za debagiranje softvera; one uzrokuju da procesor prekine sa normalnim izvršenjem instrukcija i pređe na izvršenje odgovarajuću proceduru za debagiranja.)

51 Za prikazivanje karaktera ‘A’ : MOV r0, #’A’ ; prebaci ‘A’ u r0 . .
Binarno kodiranje softverskg prekida Format asemblera: SWI{<cond>} <24-bit immediate> Primer: Za prikazivanje karaktera ‘A’ : MOV r0, #’A’ ; prebaci ‘A’ u r0 . . SWI SWI_WriteC ; . . štampaj Binarno kodiranje instrukcije tačke prekida BRK BRK ; !

52 Binarno kodiranje instrukcije koprocesorske oeracije podataka
Operacije podataka koprocesora Ove instrukcije se koriste za kontrolu internih operacija nad podacima u koprocesorskim registrima. Standardni formati odgovaraju tipovima troadresih mašina ali su druge interpretacije svih polja u koprocesorskoj instrukciji moguće. Binarno kodiranje instrukcije koprocesorske oeracije podataka Asemblerski format. CDP{<cond>} <CP#>, <Cop1>, CRd, CRn, CRm{, <Cop2>} Primer: CDP p5, 2, c12, c10, c3, ; koprocesor 5 operacija podataka ; opkod 1 = 2, opkod 2 = 4 ; odredišni registar je 12 ; izvorni registri su 10 i 3

53 Binarno kodiranje instrukcije prenosa podataka koprocesora
Prenos podataka koprocesoru Instrukcije za prenos podataka koprocesora su slične instrukcija koje prenose neposredni offset kod podataka tip reč i instrukcije koje se koriste za prenos neoznačenih bajtova. Ofset je sada ograničen na 8 bitova, a ne na 12 bitova. Binarno kodiranje instrukcije prenosa podataka koprocesora Asemblerski format: Prethodno-indeksirani oblik: LDC | STC{<cond>} {L} <CP#>, CRd, [Rn, <offset>] {!} Naknadno-indeksirani oblik: LDC | STC{<cond>} {L} <CP#>, CRd, [Rn], <offset> U oba slučaja LDC odabira učitavanje iz memorije u registar koproce-sora, STC bira smeštanje iz registra koprocesora u memoriju. L fleg, ako je prisutan, bira dugačak tip podataka (N=1)

54 Primeri: LDC p6, CR1, [r4] ; učitaj iz memorije u koprocesor 6 ; ARM registar 4 sadrži adresu ; učitaj u CP regisar 1 LDC p6, CR4, [r2, #4] ; učitaj iz memorije u koprocesor 6 ; ARM registar r2 + 4 je adresa ; učitaj u CP registar 4 STC p8, CR8, [r2, #4] ! ; smesti iz koprocesora 8 u memoriju ; posle transfera r2= r2 +4 ; smesti od CP registar 8 STC p8, CR9, [r2], #-16 ; smesti iz koprocesora 8 u memoriju ; ARM registar r2 čuva adresu ; posle transfera r2= r2 - 16 ; smesti od CP registar 9

55 Binarno enkodiranje instrukcije prenosa registra koprocesora
Prenos registara koprocesora Ove instrukcije omogućavaju da se celobrojne vrednosti generisane od strane koprocesora prenese direktno u ARM registar, ili u ARM-ov marker registar. Binarno enkodiranje instrukcije prenosa registra koprocesora Asemblerski format: Prenos iz ARM registra u koprocesor: MRC{<cond>} <CP#>, <Cop1>, Rd, CRn, CRm{, <Cop2>} Prenos u koprocesor iz ARM registra: MCR{<cond>} <CP#>, <Cop1>, Rd, CRn, CRm{, <Cop2>} Primeri: MRC p15, 5, r4, c0, c2, ;koprocesor 15 prebacuje u ARM registar ; opkod 1= 5, opkod 2= 3 ; ARM odredišni registar= r4 ; koprocesorski izvorni registri su 7 i 12 MCR p14, 1, r7, c7, c12, ; ARM registar prebacuje u koprocesor 14 ; opkod 1= 1, opkod 2= 6 ; ARM izvorni registar= r7 ; koprocesorki odredišni registri su 7 i 12

56 Hardver i Softver Proces kreiranja
Student: Bojan Pavlović Broj indeksa:

57 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 sledecom opremom : in-circuit emulatorima (ICE), logičkim analizatorima i osciloskopima. Debagiranje u kasnijoj fazi projektovanja, , kada je pritisak na projektante zbog definisanog roka najveći, 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.

58 Tri komponente SoC verifikacije
Pre nego što pređemo na detaljan opis izrade hardvera i softvera i proučimo njihovu povezanost, vredno je sagledati tri komponente SoC verifikacije. Da bi kreirali koherentnu metodologiju za hardversku i softversku verifikaciju, inžinjeri moraju razumeti specifične alate u svakoj oblasti kao i njihovu međusobnu povezanost. Ove tri komponente su: Verifikaciona platforma Hardverski verifikacioni alati i tehnike Softverski alati i tehnike za debagiranje

59 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 ploče isto kao što softverski program opisuje rad mikroprocesora ili embedded sistema. HDL-ovi sadrže ključne reči, sintaksu i semantiku modela hardverskog kola. Softverski alati mogu koristiti ove modele za simuliranje ponašanja hardvera i za sintezu HDL modela u strukturni prikaz koji se može koristiti za realizaciju hardvera. HDL-ovi se koriste za specifikaciju implementacije ASIC i FPGA kola. Takođe se koriste za modeliranje memorije i drugih digitalnih kola.

60 Verifikaciona Platforma
Verifikacija platforme je metod koji se koristi za opis hardverskog dizajna.Njena alternativna imena su izvršna mašina ili virtuelni prototip. Četri posebne metode se mogu identifikovati i koristiti za rad hardvera: Logička simulacija Ubrzana simulacija Emulacija Hardverski prototip

61 Logicka simulacija Logicki simulator se najcesce koristi za simulaciju ponasanja hardveerskih dizajna. Logicki simulatori mogu da se realizuju na dva nacina: Simulatori koji koriste interpreterski kod Simulatori koji koriste kompajlirani kod

62 Ubrzana simulacija Ubrzana simulacija se odnosi na proces mapiranja odredjenog dela dizajna koji se moze sintetizovati na hardversku platformu. Ubrzana simulacija obezbedjuje bolje performance jer ne vodi racuna o simulacionim dogadjajima iniciranih od strane logickog simulatora a vrsi njihovu procenu koriscenjem hardvera za paralelno procesiranje.

63 Cilj ubrzavanja je povećanje performansi
Cilj ubrzavanja je povećanje performansi. Krajnje performanse su zasnovane na brzini akceleracione platforme i procentu simulacije koji se može izvršavati u oviru akceleracionog hardvera. Odnos procenta simulacije u radnoj stanici nasuprot procenta dizajna u sistemu za ubrzanje (akceleratoru) određuje krajnje performanse.

64 Emulacija Emulacija se odnosi na proces mapiranja čitavog dizajna na hardversku platformu projektovanu u cilju povećanja performansi sistema. Ne postoji stalna veza između emulatora i radne stanice tokom izvršenja programa, a emulator ne prihvata ulaz od radne stanice.Nepostojanje veze sa radnom stanicom obezbedjuje hardverskoj platformi da radi punom brzinom i da ne postoji čekanje za bilo kakvom komunikacijom.

65 Postoji mnogo različitih definicija o tome šta zapravo termin emulacija znač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 impulsi se generisu od strane emulatora, a ne od radne stanice Karakteristike ubrzane simulaciju su sledece: Postoji neki testbench koji se izvršava na radnoj stanici (poželjno je što manje, zbog boljih performansi) Radna stanica je sada master a emulator ili akcelerator je slave Taktni impulsi se generisu od strane testbench-a koji se izvršava na radnoj stanici

66 In-circuit se odnosi na korišćenje spoljašnjeg hardvera spregnutog sa emulatorom u svrhu obezbedjenja realisticnijeg okruženja dizajna koji se simulira. Ovaj hardver je obično u formi štampanih kola koje se nekad nazivaju ciljne ploce ili ciljni sistem,dok se test oprema povezuje na emulator. Moguća je i emulacija bez ciljnog 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.

67 Dijagrami koji prikazuju emulaciju koja ne koristi ciljni sistem i in-circuit
emulaciju su prikazani na sledećim slikama :

68 Hardverski prototip Hardverski prototip se izvodi kao hardver po porudzbini ili hardver koji se moze višestruko koristiti za realizaciju hardverske reprezentacije sistema. Prototip predstavlja reprezentaciju krajnjeg sistema a prednost mu je ta što se moze lakše konstruisati, a samim tim je i pre dostupan od konacnog proizvoda.

69 Programerski pogled na svet
Softverski inženjer celo resenje vidi preko programskog modela . Programsaki model se koristi da obezbedi podrsku u odredjenim operacijama modela koji su hierarhijski visi od njega a pri tome zahteva dopunjavanje svih arhitekturnih nivoa koji se nalaze ispod njega.

70 Osim mikroprocesora, softverske inženjere interesuje memorijska mapa embedded sistema.Kod 32-bitnog adresnog prostora, postoji fizička memorija od 4 GB-a koja može biti prihvaćena. Embedded sistemi koriste samo podskup ovog fizičkog adresnog prostora, a memorijska mapa definise gde su locirani različiti tipovi memorije i drugi hardversko upravljacki registri. Memorijska mapa takođe određuje šta se dešava ukoliko se pristupa adresama koje ne pripadaju fizickom prostoru.

71 Standardni tipovi 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.

72 Hardverski pogled na svet
Hardverski inžinjeri imaju drugačiji pogled na embedded sisteme. Unutrašnji rad CPU-a je manje važan za hardverske inžinjere, a sprezanje sa magistralom je ono što njih interesuje.Za hardverske inžinjere, mikroprocesor nije ništa drugo nego generator transakcione magistrale.

73 Softverski razvojni alati
Editor u realnosti ne predstavlja neko softversko razvojno sredstvo, ali najveci broj programera trosi vreme koristeci usluge editora (unos programa) u odnosu na druge programe.Iskustvo pokazuje da programeri zele da raspolazu sa zaista dobrim editorima jer od njihove koncepcije u najvecoj meri zavisi produktivnost. Revizija izvornog koda Kontrolna revizija je sredstvo pomocu koga se zapisuju promene koje se izvode u toku razvoja softvera.Koristeci reviziju moguce je pomocu funkcije undo i ispraviti izmene koje mogu da uzrokuju probleme a takodje i da se uvedu ogranicenja koja se odnose na modifikaciju pojedinih fajlova kao i identifikaciju onoga ko je izvrsio promenu.

74 Kompajler je alatka za prevođenje visih programskih jezika (C/C++) i asemblerskih fajlova u program koji se moze izvrsavati. Ovaj format se zove mašinski jezik i čuva se u fajlu koji se zove izvršni fajl. Debugger Nažalost, svi programi ne rade korektno iz prvog puta. Čak i da program izgleda kao da radi korektno, nemoguće je testirati ga u svakoj situaciji i uslovima, pa tako ne može da se dokaže da uvek radi ispravno. Debugger pomaže softver inžinjerima da pronadju grešake.

75 Simulator modelira interni rad procesora
Simulator modelira interni rad procesora. Procesorski simulatori se č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.

76 Povezivanje softvera za debagiranje
JTAG Jedan od standardnih debagera koji se koristi za povezivanje sa CPU-m je JTAG. JTAG je poznat kao standard IEEE , nazvan boundary scan, a koristi se za testiranje kola na stampanim plocama. 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 implementiralo JTAG debagiranje, mikroprocesor treba da sadrži specijano implementiran hardver.

77 STAB Kod procesora koji nemaju izvedenu hardversku podrsku za debagiranje, softerski debager mora da komunicira sa embedded sistemom pomoću stub-a. Stab 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. Stab izvrsava dibagerske zahteve kao sto su citanje registara i memorija i predaje rezultate debageru preko komunikacionog kanala. On takođe koristi usluzne rutine kako bi zaustavio rad procesora kakav je slucaj kada korisnik koristi opciju CTRL+Tab.

78 Direktna konekcija Kada se koristi ISS(simulator skupa instrukcija) tada nema potrebe bilo za JTAG konekcijom ili stab-om između softver debagera i embedded sistema. Posto je ISS softverski model,debager može sa lakoćom da pristupi svim traženim 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 u specijalni rezim rada za debagiranje.Na ovaj nacin se dobija najtacnija i najrealisticnija slika o tome kako embedded sistem radi.

79 Tipovi embedded softvera
Pet različitih tipova embedded softvera se mogu identikovati.Obim softvera(broj linija) se povecava po sledecem redosledu: Softver za inicajilizaciju sistema i nivo za apstrakciju hardvera (HAL) Hardversko-dijagnostički test program Operativni sistem za rad u realom vremenu (RTOS) Pokretacki programi RTOS-a Aplikacioni softver

80 Hardverska razvojna sredstva
Editor Kao i softverski inženjeri,najveci broj hardverskih inženjera upoznaje se sa opisom dizajna i testbench-eva koristeci tekst editor.Kada se govori o hardverskim inženjerima, tehnike editovanja su mnogo jednostavnije od onih koje koriste softverski inženjeri. Kontrola revizije izvornog koda Od samog početka je razvoj softvera podrazumevao upravljanje velikim brojem tekstualnih fajlova koje kreiraju mnogi inženjeri, i koji se kompajliraju u jedan ili više izvršnih programa. Sa pojavom Verilog i VHDL nacina projektovanja hardverski inženjeri sreću se sa istim tipom okruženja i moraju koristiti alate za kontrolu revizije kako bi upravljali projektima.

81 Alati Lint alati obezbedjuju jednostavnu analizu koda radi nalazenja standardnih grešaka. Alati to čine tako što iščitavaju izvorni kod. Koreni Lint-a datiraju od ranijih dana karakteristicni za koriscenje programskog jezika C, kao sredstvo za nalaženje grešaka pre njegovog izvrsenja.Standardna Lint provera ukljucuje proveru neiskorišćenih deklaracija, nalazenje nekonzistentnih tipova,koriscenje promenjljive predefinicije,kod koji postoji ali se ne izvrsava, ignorisanje povratnih vrednosti, izvršni putevi bez povratka,beskonačna petlja i nedosledni case iskazi. Pokrivenost koda Pokrivenost koda je još jedna tehnika pozajmljena od softverskog inžinjerstva. Pokrivenost meri veličinu koda koji se koristi tokom izvođenja testova. Na osnovu rezultata pokrivenosti se mogu razviti dodatni testovi za povećanje pokrivenosti. Indirektno će značiti da povećanje pokrivenosti znači povećanje kvaliteta proizvoda. Za HDL dizajn postoje tri različite veličine pokrivenosti koje se mere. To su pokrivenost iskaza, pokrivenost grananja i FSM pokrivenost.

82 Tvrđenja Popularnost korišćenja tvrđenja za specifikaciju namene dizajna i osobine dizajna jako brzo raste. Tvrđenja su vrlo jak alat za međusobnu proveru dizajna i pretpostavljenog ponašanja. Takođe bitni za verifikaciju i sistemske inženjere jer mogu formalno navesti ponašanje sistema i proveriti da li se sistem ponaša u skladu sa specifikacijom. Tvrđenja pružaju zajednički format višestrukim alatima. Tvrđenja olakšavaju debug-ovanje i smanjuju vreme simulacije Tvrđenja verifikuju interfejse između blokova Tvrđenja su dobra vežba RTL kodiranja

83 Alati za debug-ovanje Za razliku od nekih prethodnih alata, koje su hardverski inženjeri prihvatili od softverskih inženjera, debug-ovanje hardvera je mnogo drugačije od debug-ovanja softvera. Hardverski inženjeri prvenstveno rade u batch okruzenju. Uobičajen alat za debug-ovanje hardvera je osciloskop. Hardverski inženjeri rade posmatrajući vrednosti signala tokom perioda vremena simulacije.Današnji alati za posmatranje talasnih oblika pamte podatke u kompresovanom obliku zbog maksimalnih performansi i minimalne veličine fajlova. IEEE Verilog standard koristi format za fajlove u koje su smešteni talsani oblici, poznat kao VCD. Ovakav format teksta je dobar za male simulacije sa malim količinama podataka koje treba upamtiti, ali postaje veliki za velike simulatore. Za takve simulacije moraju biti korišćeni odgovarajući formati sa nekim stepenom kompresije.

84 Osnovni način debug-ovanja je posmatranje talasnih oblika
Osnovni način debug-ovanja je posmatranje talasnih oblika. Koristeci informacije detekcije, inženjeri moraju pregledati logičke signale u različitim vremenskim trenucima tokom procesa simulacije. Zatim moraju pronaći šta ne radi ispravno. Ovaj proces tipično zahteva puno radnih sati za određivanje pravilnog rada dizajna. Gomilanje nepotrebnih talasnih oblika može takođe drastično smanjiti performanse simulacije i kao rezultat dati velike fajlove. Inženjeri zato moraju izdvojiti vreme pre simulacije za određivanje perioda u kojima će biti generisani fajlovi koji pamte talasne oblike. Takođe moraju biti određeni i delovi dizajna za koje će talasni oblici biti upamćeni.

85 Definisanje debug-ovanja
Ono što mnogi inženjeri nazivaju debug-ovanje je ustvari kombinacija dve zasebne aktivnosti: detekcije i debug-ovanja. Detekcija je proces određivanja postojanja problema u dizajnu ili testu. Mnogi projekti koriste simulaciju kao osnovni način za detekciju problema.Prilikom simulacije postoji mnogo načina za prikazivanje postojanja problema. Dva najčešća načina su pomoču $display iskaza, i poređenje vrednosti u memoriji sa očekivanim rezultatima. Nedostatak $display iskaza može značiti i problem sa rezultatom testa. Tvrđenja su bolji način za detekciju grešaka. Kada se problem otkrije on mora biti debug-ovan. Debug-ovanje je proces pronalaženja korena uzroka problema i promene dizajna ili testa kako bi se problem rešio. Debug-ovanje je mehanički proces u poređenju sa detekcijom, jer je potreban inženjer koji će provesti određeno vreme kako bi pronašao šta je ispravno a šta nije. Određivanje pravilnog ponažanja zahteva dobro poznavanje dizajna i njegovog rada. Veći broj bržih računara ne mogu pomoći pri procesu debug-ovanja. Alati mogu pomoći prilikom unapređenja procesa tako što olakšavaju razumevanje dizajna, i tako što pružaju bolji pregled rezultata simulacije.

86 Opis Starter Kit-a Student: Miloš Milenković Broj indeksa:

87 Opis Starter Kit-a Testiranje karakteristika gradivnih blokova sistema je danas jednostavno moguće korišćenjem development kit-ova Development kit ima ugrađene gradivne blokove (periferije) kojima se može pratiti učitavanje i izvršavanje neke aplikacije. Objasnićemo strukturu i mogućnosti jednog starter kit-a, proizvod firme Hitex, koji je namenjen za testiranje rada sistema zasnovanih na mikrokontroleru tipa LPC2138.

88 ARM starter kit Ovaj starter kit poseduje sve sastavne delove koji su potrebni za izvršavanje određenih aplikacija. Najvažniji delovi su: JTAG debugger za ARM7-9 razvojna ploča Quick start vodič za rad CD sa instalacijom programa firme Hitex za ARM kablovi za napajanje i povezivanje JTAG-a Slika 1: Izgled starter kit-a za ARM

89 Povezivanje se izvodi pomoću:
Povezivanje razvojnog sistema sa PC-mašinom se ostvaruje kao sto je prikazano na slici 2: Povezivanje se izvodi pomoću: USB kabla: koristi se za povezivanje JTAG debugger-a sa PC-mašinom 20-pinskog kabla koji povezuje JTAG konektor lociran na razvojnoj ploči sa Tantino interfejsom USB porta lociranog na razvojnoj pločici MCB2130 sa PC mašinom preko USB kabla. Preko ove veze razvojna pločica dobija napajanje. Slika 2: Način povezivanja razvojnog sistema

90 Ostali tehnički detalji koji se odnose na razvojnu pločicu MCB2130 su prikazani u Tabeli 1:
PARAMETAR OPIS Napon napajanja 5 V (preko USB magistrale) Struja napajanja tipično 65 mA, maksimalno 120 mA Frekvencija kristala 12 MHz (max 60 MHz) CPU Phillips LPC21xx Periferali 2 x RS232 interfejs (COM0 i COM1) 1 x JTAG interfejs 1 x analogni izlaz (povezan na zvučnik standardno) 1 x analogni ulaz (povezan na potenciometar standardno) 1 x ETM interfejs (opciono) Tabela 1: Tehničke karakteristike razvojne pločice MCB2130

91 Ključne karakteristike starter kit-a su sledeće:
Moguće je obavljati emulaciju u realnom vremenu. Sistem ima mogućnost praćenja stanja signala na paralelnim ulazima. U zavisnosti od ugradjenog tipa mikrokontrolera, brza flash memorija moze biti kapaciteta 32, 64 ili 512 kB. Memorijski bafer za razmenu podataka sa drugim uredjajima je obima 128 bitova. Procesor je u stanju da izvrsava kako 32-bitne kodove, tako i 16-bitne. Kod aplikacija koje imaju kritičan obim koda koristi se alternativni 16-bitni Thumb način rada procesora. Kod ovakvih rešenja se obim koda smanjuje za vise od 30%, a gubici u performansama su minimalni.

92 Na slici 3 je izgled IC pakovanja mikrokontrolera iz serije LPC2134 / 2136 / 2138
Slika 3: IC pakovanje mikrokontrolera

93 Slika 4 prikazuje fizički izgled pločice MCB 2130 u štampanoj formi, i raspored osnovnih gradivnih blokova Slika 4: Fizički izgled razvojne pločice

94 Ostali sastavni delovi razvojne pločice su:
a) kristalni oscillator; b) CPU LPC2138; c) pobudni drajverski stepen za LED diode; d) potenciometar kojim se kontroliše rad ugrađenog zvučnika

95 Blok-šema sistema koja se odnosi na razvojnu pločicu je prikazana na slici 5.
Slika 5: Blok šema sistema

96 LPC2138 poseduje dva dvosmerna U / I porta
CPU – Integrisano kolo LPC2138 je proizvod firme Phillips. Ovaj mikrokontroler poseduje 64-pina. Baziran je na procesoru ARM7. LPC2138 poseduje dva dvosmerna U / I porta Postoje dva pina za priključenje oscilatora (12 MHz), jedan za reset, jedan za dovod frekvencije od MHz, i dvanaest za napajanje (slika 6). Slika 6: Blok šema CPU

97 Kratkospajači – njihovo postavljanje definiše konfiguraciju razvojne pločice. Ukupno postoje dvanaest (označeni sa J1-J13) i imaju sledeće funkcije: J1 – ISP (In System Programming): Dozvola rada programiranje-sistema. Kada se J1 postavi, moguće je generisati signal na P1.14 (EINT1) preko RTS linije porta COM0. Slika 7: Položaj kratkospajača J1, J7 i J10

98 J2 – AV: Analogni napon za AIN0
J2 – AV: Analogni napon za AIN0. Kratkospajač J2 povezuje potenciometar POT1 na analogni ulaz procesora AVIN (slika 8). Potenciometar upravlja radom zvučnika koji se nalazi na razvojnoj pločici. Slika 8: Položaj kratkospajača J2

99 J3 – 3. 3V: Napon napajanja za CPU
J3 – 3.3V: Napon napajanja za CPU. Ovim kratkospajačem se povezuje napajanje od 3.3V na CPU (slika 9). Slika 9: Položaj kratkospajača J3, J4, J5 i J11

100 J4 – VBAT: Napon napajanja baterije za CPU
J4 – VBAT: Napon napajanja baterije za CPU. Povezuje napon napajanja baterije VBAT od 3.3V na CPU (slika 9). J5 – V3A: Analogni referentni napon za CPU. Povezuje napajanje od 3.3V na referentni analogni ulaz procesora (slika 9). J6 – LED: Omogućava LED drajver. Kada je kratkospajač J6 postavljen, LED drajver (kolo IC6) upravlja radom dioda povezanih na pinove Port1.16 – Port1.23 (slika 10). Slika 10: Kratkospajač J6

101 J7 – INT1: Omogućen taster INT1
J7 – INT1: Omogućen taster INT1. Kada je J7 postavljen, taster INT1 se povezuje na U/I pin procesora P0.14 (EINT1 ulaz). Signal prekida se generiše nakon pritiskanja tastera. Signal prekida je niskog logičkog nivoa (slika 7). J8 – ETM: Omogućen ugrađeni modul za praćenje. Kada je J8 postavljen, omogućen je ETM (Embedded Trace Module) - modul praćenja signala na paralelnim ulazima. U ovom slučaju 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

102 J9 – JTAG: Omogućen JTAG interfejs
J9 – JTAG: Omogućen JTAG interfejs. Pomoću ovog kratkospajača se povezuje hardverska komponenta JTAG, pomoću koje se može izvoditi debug-ovanje i ISP programiranje flash memorije (In System Programming) (slika 12). Slika 12: Kratkospajač J9

103 Slika 13: Položaj kratkospajača J13
J10 – RST: Omogućen reset putem COM0 porta. Kada je J10 postavljen, moguće je generisati Reset signal procesora preko DTR (Data Terminal Ready) signala na portu COM0. Reset se generiše kada je DTR signal aktivan (slika 7). J11 – VREF: Referentni napon A/D konvertora. Povezuje 3.3 V napona napajanja VREF sa CPU (slika 9). J13 – AOUT: D/A izlaz za zvučnik. Pri postavljenom kratkospajaču J13, AOUT analogni izlaz procesora je povezan na NF pojačavač (slika 13). Slika 13: Položaj kratkospajača J13

104 Napajanje (USB plug) - izvodi se preko USB kabla povezanog na PC-mašinu. MCB2130 razvojna pločica se napaja naponom u rasponu od 5 do 9 V, ali regulator napajanja IC3 (kolo LD1117S33) smanjuje taj napon i generiše pomenuta 3.3 V jednosmernog napona. Slika 14: Regulator napajanja, kolo LD1117S33

105 JTAG interfejs konektor predstavlja deo razvojnog sistema koji služi za komunikaciju sa PC-mašinom. Na JTAG se preko 20-pinskog konektora povezuje Tantino uređaj koji služi za debug-ovanje programa i programiranje flash memorije na čipu. Pomoću JTAG-a se mogu programirati i uređaji koji se ne nalaze na čipu.

106 LM386 NF pojačavač. Na razvojnoj pločici MCB2130 se nalazi zvučnik koji je povezan na analogni izlaz D/A konvertora. Analogni izlazni signal AOUT se pojačava pomoću LM386 NF pojačavača snage, zasnovanog na operacionom pojačavaču. Gejn NF pojačavača je standardno podešen na vrednost 20, ali se dodavanjem spoljašnjih otpornika između pinova 1 i 8 može povećati u opsegu do čak 200. Blok šema pojačavača LM386 je prikazana na slici 15. Slika 15: Blok šema kola LM386 pojačavača analognog izlaznog signala

107 Pobuda LED dioda. POWER dioda indicira da li je napajanje povezano na razvojnu pločicu. 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 pločici se nalazi i kolo za upravljanje radom LED dioda, tzv. LED drajver, kolo 74LVC244. LED drajver predstavlja pobudni stepen za diode. Njegova blok šema će biti predstavljena na slici 16. Slika 16: Pobudni stepen za diode, kolo 74LVC244

108 Tasteri. Na pločici MCB2130 postoje dva tastera:
RESET taster koji je povezan na reset ulaz mikrokontrolera, INT1 taster koji je povezan na NMI (Non Masked Interrupt) – signal za prekid rada mikrokontrolera

109 Slika 20: Izgled standardnog DB9 konektora
Serijski portovi (COM) su konfigurisani kao standardni 3-žični interfejsi. DB9 konektor je tako povezan da šalje handshake signale nazad u PC-mašinu. Na slici 20 su prikazani detalji serijskog porta: Slika 20: Izgled standardnog DB9 konektora

110 Povezivanje sistema i kreiranje aplikacije
U slučaju da HiTop korisnički program startujemo po prvi put, neophodno je proveriti povezanost sistema. To se izvodi odabirom komande System iz menija, a zatim i odgovarajuće naredbe Connect. Po izvršenju ovih komandi naš starter kit je povezan sa PC mašinom.

111 Kreiranje nove aplikacije
Odabirom komande Project > New počinjemo sa definisanjem novog projekta. Prvi korak je da projektu dodelimo ime i lokaciju na kojoj će biti smešten. Naredni korak podrazumeva odabir alata koji će biti korišćen za određenu aplikaciju. Za ovaj primer biramo odgovarajući alat u vidu Tantino for ARM 7-9.

112 Iz niza mikrokontrolera treba zatim odabrati odgovarajućeg proizvođača i tip mikrokontrolera, kao i njegovu konfiguraciju. Za naš slučaj su to ARM, LPC2138, i red bajtova Little Endian

113 Pošto se komunikacija sa PC-mašinom vrši preko odgovarajućeg USB porta, u narednom koraku biramo USB način komunikacije i unosimo četvorocifreni serijski broj Tantino uređaja, koji se nalazi na zadnjoj strani U slučaju da aktuelna verzija HiTop korisničkog programa nije registrovana, pojaviće se prozor koji nas obaveštava o tome ali je moguće nastaviti rad odabirom opcije I want to continue evaluation.

114 Prilikom podešavanja opcija vezanih za novi projekat, prvo treba odabrati kompajler kojim će se izvršavati program. Za naš slučaj je to GNU C compiler for ARM. Kada smo obavili sve prethodne zadatke, u dijalogu Tool settings proveravamo podešavanja kompajlera, asemblera i linkera potrebnih za naš primer. Startup script to automatski obavlja sam.

115 Mladenović Aleksandar, rođen 2.6.1980 godine u Nišu.
Završio srednju elektrotehničku školu “Nikola Tesla” godine u Nišu, smer elektrotehničar računara. Apsolvent na Niškom Elektronskom fakultetu, smer elektronika. Interesovanja : Mobilne telekomunikacije, kablovska televizija...

116 Davor S. Dejković, rođen 08. 10. 1980. u Skoplju
Davor S. Dejković, rođen u Skoplju. Završio osnovnu školu i srednju elektrotehničku u Nišu. Upisao godine Elektronski fakultet u Nišu, smer telekomunikacije. Interesovanja: mobilne telekomunikacije, projektovanje telekomunikacionih sistema...

117 Bojan Pavlović , rođen 29. januara 1980. u Nišu
Bojan Pavlović , rođen 29.januara u Nišu. Srednju školu, ETŠ Nikola Tesla na smeru elektronika, završio 1999.godine. Iste godine upisao Elektronski fakultet u Nišu na smeru elektronika. Rad na računaru: Microsoft Office (Exel,Word,Power Point) Corel DRAW, Photoshop, Internet... Interesovanja: Elektronika,Telekomunikacije,Web dizajn... Tel: 018/ /

118 Milenković Miloš – Rodjen 21. 10. 1980 godine u Nišu
Milenković Miloš – Rodjen godine u Nišu. Elektrotehničku školu ’Nikola Tesla’ u Nišu upisao god. i završio godine, kada upisuje prvu godinu studija na Elektronskom fakultetu u Nišu, na smeru elektronika. U širokoj lepezi interesovanja se izdvajaju hardverske komponente kao i globalne telekomunikacije.


Download ppt "ARM7 PROCESOR Mladenović Aleksandar Pavlović Bojan Dejković Davor"

Similar presentations


Ads by Google