Mikroprocesorski sistemi/Teorija

Izvor: SI Wiki
< Микропроцесорски системи
Datum izmene: 21. februar 2023. u 22:37; autor: KockaAdmiralac (razgovor | doprinosi) (Ažurirano za pitanja iz januara i februara 2023)
Pređi na navigaciju Pređi na pretragu

Pitalice dolaze na teorijskim delovima obe predispitne obaveze i svih ispita na predmetu. Tipovi pitanja su jako slični između rokova, pa su zato ispod nabrojana tipična pitanja koja se mogu pojaviti na teorijskom delu ispita, dati primeri pitanja i nabrojani korisni resursi odakle se može pročitati više o njima. Ukoliko objašnjenja data ovde nisu dovoljno jasna, pogledati primere zadataka radi razjašnjenja.

Prvi blok

Ulazak i izlazak iz prekidne rutine

Kod ovog tipa pitanja bitno je razumeti kako funkcioniše nekoliko mehanizama u Cortex-M3 mikroprocesoru. Tekst ispod parafraziran je iz Cortex-M3 Programming Manual sa stranica 37 i 38:

  • Stacking: operacija čuvanja određenih registara na steku prilikom ulaska u prekidnu rutinu. Na steku se čuvaju sledeći registri (to se zove stack frame) u redosledu koji je dat:
    • R0, R1, R2, R3 i R12
    • Povratna adresa prekidne rutine (odnosno PC registar)
    • Programski statusni registar (PSR)
    • Link register (LR)
    Nakon stacking, SP pokazuje na najnižu adresu u stack frame (odnosno na R0). U CCR registru bit STKALIGN može biti postavljen na 1, u kom slučaju se dešava poravnanje steka na duplu reč.
    Za ovaj mehanizam uglavnom bude dat program na asembleru koji sa steka učita određeni podatak, pa se mora odrediti koja je vrednost tog podatka.
  • Late-arriving: Paralelno sa stacking se dohvata adresa rukovaoca u IVT, pa ako se do učitavanja prve instrukcije u prekidnoj rutini pojavi izuzetak višeg grupnog prioriteta prelazi se na njegovo izvršavanje.
  • Tail-chaining: ako nakon izvršavanja trenutne prekidne rutine postoji sledeći prekid koji ispunjava uslove izvršavanja, prelazi se na njegovo izvršavanje bez uklanjanja vrednosti iz stack frame.
    Za ovaj mehanizam pitanja uglavnom budu brojanje koliko puta se desio tail-chaining pod određenim uslovima.

Primeri pitanja:

Početna instrukcija programa

Adresa adrese prve instrukcije programa jeste 0x00000004, tako da je adresa prve instrukcije programa štagod da piše u memoriji na adresi 0x00000004. Ova jednostavna pitalica može često da se pojavi na različitim rokovima i odgovor na nju može se naći na strani 15 od Cortex-M3 Programming Manual.

Primeri pitanja:

Uslovno izvršavanje instrukcija

Ovaj mehanizam objašnjen je na strani 56 u Cortex-M3 Programming Manual, u odeljku 3.3.7 Conditional execution. Pitanja iz ove oblasti obično sadrže barem jednu it instrukciju i neke kombinacije add, sub, cmp i mov instrukcija sa sufiksom s (ažurira programski statusni registar!) ili bez njega (ne ažurira programski statusni registar!), a na kraju se traži vrednost u nekom od korišćenih registara.

Primeri pitanja:

Bit-band alias

U ovom tipu zadatka traži se da se za neki bit u SRAM odredi bit-band alias adresa. Na strani 27 Cortex-M3 Programming Manual objašnjen je ovaj mehanizam i navedene sledeće formule:

  • bit_word_offset = (byte_offset x 32) + (bit_number x 4)
  • bit_word_addr = bit_band_base + bit_word_offset

gde je:

  • byte_offset pomeraj nekog bajta od početka SRAM (SRAM počinje na 0x20000000),
  • bit_number broj bita koji se traži (dat u zadatku)
  • bit_band_base početak bit-band alias regiona (počinje na 0x22000000)

Primeri pitanja:

Režimi rada

Iako nema primera ovog pitanja, može da dođe pitanje u kom režimu se nalazi procesor prilikom izvršavanja prekidne rutine (handler mode), a u kom prilikom glavnog programa (thread mode).

Intel HEX format

U ovakvom zadatku potrebno je rastumačiti šta piše u jednoj Intel HEX datoteci za koju je dat sadržaj i istaknuta sintaksa. Opis ovog formata može sa naći na Vikipediji, ali takođe i na ARM-ovom i Intel-ovom sajtu.

Primeri pitanja:

Inicijalna vrednost SP

Registar SP svoju inicijalnu vrednost dobija sa adrese 0x00000000. U ovom tipu zadatka bude jedan asemblerski program u kome se radi formiranje IVT (čiji je nulti ulaz zapravo vrednost SP), a zatim se u programu negde ta vrednost koristi, i rezultat izvršavanja zavisi od te vrednosti. Glavna ideja je pročitati vrednost SP sa prve lokacije u vektor tabeli iz asemblerskog programa.

Primeri pitanja:

Trenutna prekidna rutina

Još jedan čest zadatak jeste asemblerski program u kojem se izazove određeni prekid na neki način, a zatim se u prekidnoj rutini u određeni registar upiše vrednost IPSR i pita koja je vrednost upisana. Ovaj tip zadatka nije previše šablonski u delu gde se izaziva prekid, ali kada se sazna koji je prekid izazvan njegov broj se lako može saznati iz Cortex-M3 Programming Manual, strana 32, 2.3.2 Exception types.

Primeri pitanja:

Određivanje izuzetka na osnovu opisa

U ovom tipu zadatka dat je opis jednog tipa izuzetka u Cortex-M3 procesoru, praktično preveden iz Cortex-M3 Programming Manual, sa strane 32, 2.3.2 Exception types, i dato je više naziva izuzetaka za biranje.

Primeri pitanja:

Drugi blok

Pinovi za aktivaciju tajmera

U ovom tipu pitanja traže se pinovi čija odgovarajuća promena okida odnosno startuje brojanje na određenom tajmeru mikrokontrolera. Na figurama sa strana 294 i 367 iz STM32F103 Reference Manual možemo videti da u signalu TRGI učestvuju TIMx_ETR, TIMx_CH1 (preko TI1FP1) i TIMx_CH2 (preko TI2FP2), a na stranama 178 i 179 možemo pronaći odgovarajuća mapiranja pinova za te kanale mikrokontrolera. U teoriji, u tom signalu bi mogao da učestvuje i signal TIMx_CH3 (preko XOR kola koje ulazi u TI1) ali ovo nikada nije označeno kao tačan odgovor.

Primeri pitanja:

Frekvencija HCLK

Postoji nekoliko varijanti ovog pitanja gde je data frekvencija internih ili eksternih oscilatora a pita se za maksimalnu radnu frekvenciju (HCLK). Odgovor na ovo pitanje se uvek može naći na figuri 8 sa strane 93 od STM32F103 Reference Manual, gde ti signali takta obično prolaze kroz PLL i eventualno se odsecaju na odgovarajuće maksimume kao što je propisano šemom. Obratiti pažnju i na tekst ispod figure!

Primeri pitanja:

Broj događaja pred UEV

Ovaj tip pitanja pita koliko puta se kojih događaja mora desiti kako bi se desio Update Event (UEV) nekog tajmera. Odgovor je suštinski da treba da se desi za jedan više puta nego što je vrednost repetition counter, pri brojanju naviše se dešava counter overflow, dok se pri brojanju naniže dešava counter underflow.

Primeri pitanja:

Način brojanja tajmera

Iako nema zabeleženog tačnog teksta ovog pitanja, može da dođe pitanje da se označi na koji način može da broji tajmer, i na to je potrebno odgovoriti:

  1. naviše,
  2. naniže, i
  3. kombinovano.

Aktiviranje EXTI preko RTSR

Pitanje pita za vrednost EXTI_RTSR registra koja mora biti upisana kako bi se omogućili prekidi na datim pinovima. Na strani 212. od STM32F103 Reference Manual možemo videti da za svaku EXTI liniju postoji po jedan bit u RTSR registru, dok na strani 210. možemo videti da pinovima sa indeksom 0 odgovara linija 0, pinovima sa indeksom 1 odgovara linija 1, i tako dalje. Na osnovu toga, postavimo odgovarajuće bitove broja na osnovu datih pinova, i to je traženi odgovor.

Primeri pitanja:

Auto-reload registar

Često umeju da dođu pitanja gde su figure 59, 60, 70 ili 71 isečene na nekom delu i studenti se pitaju za odgovarajuće vrednosti nakon isečenog dela. Za ovakvo pitanje je potrebno pronaći odgovarajuću figuru iz dokumentacije i videti na koji način izmena Auto-reload preload registra utiče na shadow registar.

Primeri pitanja:

Magistrale za periferije

Mogu da dođu pitanja koja pitaju na kojoj se magistrali nalazi određena periferija. Ova informacija se može naći na nekoliko mesta u STM32F103 Reference Manual, a najbolje na strani 50, 3.3 Memory map.

Primeri pitanja:

Treći blok

USART greške

Kao jedino često teorijsko pitanje iz ovog bloka može se izdvojiti pitanje o greškama prilikom sprovođenja USART protokola. USART komunikacija izgleda tako što se magistrala drži na vrednosti 1 dok po njoj nema komunikacije, zatim početni bit poruke ima vrednost 0 (start bit), posle njega dolazi određen broj bitova podataka (dat u zadatku) u koji je (opciono) uključen i bit parnosti (poslednji među bitovima podataka), i na kraju dolazi stop bit koji mora imati vrednost 1. Ovde su moguće dve greške protokola:

  • Parity error: u zadatku je dato da li se radi o parnoj parnosti ili neparnoj parnosti, tako da ako je zbir bitova podataka (uključujući i bit parnosti) paran prilikom neparne parnosti, ili neparan prilikom parne parnosti, došlo je do ove greške.
  • Framing error: ova greška se desila ukoliko na mestu gde treba da stoji stop bit ne stoji vrednost 1.

Primeri pitanja:

Nekategorisana pitanja

Sledeća pitanja ne pripadaju nijednom roku, ali spadaju u jednu od kategorija pitanja iznad.

Pitanje 1

Koja vrednost se nalazi u registru R1 nakon izvršavanja date sekvence asemblerskih instrukcija? Odgovor uneti prema formatu neoznačenih heksadecimalnih literala u C programskom jeziku širine 32 bita.

mov r0, 6
mov r1, 9
cmp r1, r0
itttt gt
subsgt r1, r1, r0
subsgt r1, r1, 5
addgt r1, r1, r0
subgt r1, r1, #4

Prikaz očekivanog formata odgovora za proizvoljno odabranu vrednost 1 jeste:

0x00000001

Odgovor: 0xFFFFFFFE

Pitanje 2

Koja vrednost se nalazi u registru R1 nakon izvršavanja date sekvence asemblerskih instrukcija? Odgovor uneti prema formatu neoznačenih heksadecimalnih literala u C programskom jeziku širine 32 bita.

mov r0, 5
mov r1, 7
cmp r1, r0
ittet gt
subsgt r1, r1, r0
subsgt r1, r1, 3
addle r1, r1, r0
subgt r1, r1, 2

Prikaz očekivanog formata odgovora za proizvoljno odabranu vrednost 1 jeste:

0x00000001

Odgovor: 0x00000004

Pitanje 3

Kolika je maksimalna radna frekvencija (HCLK) mikrokontrolera STM32F103R6 ukoliko se koristi HSE oscilator koji na svom izlazu proizvodi signal takta frekvencije 8MHz? Odgovor uneti u megahercima bez navođenja oznake jedinice.

Odgovor: 72

Objašnjenje: Kao što piše na figuri sa strane 93 od STM32F103 Reference Manual, HSE takt može proći kroz PLL koji može da njegovu frekvenciju pomnoži do 16 puta, ali je maksimalna frekvencija HCLK 72MHz, što je manje od 128MHz koliko bi inače moglo da bude.