ARM Cortex-M3 STM32F103(R6) mikrokontroler Flashcards
Kako se zove mikrokontroler koji učimo na kursu MIPS?
STM32F103 (R6)
Šta je ARM Cortex-M3?
Procesorsko jezgro za mikrokontrolere
ARM Cortex-M3 je deo koje arhitekture?
Armv7-M arhitekture
Koji su moduli Cortex M3 procesora?
Procesorsko jezgro,
Periferije jezgra,
Opcioni moduli
Koje su periferije Cortex-M3 procesorskog jezgra?
NVIC (Nested Vectored Interrupt Controller)
SCB (System Control Block)
System Timer
MPU (Memory Protection Unit)
Šta je NVIC periferija Cortex-M3 jezgra?
Nested Vectored Interrupt Controller
Šta je MPU periferija Cortex-M3 jezgra?
Memory Protection Unit
Šta je SCB periferija Cortex-M3 jezgra?
System Control Block
Koji su opcioni moduli Cortex-M3 procesora?
Debug
Data Watchpoint and Trace Unit
Instrumentation Trace Macrocell Unit
Embedded Trace Macrocell
Trace Port Interface Unit
Kakva je arhitektura Cortex-M3 jezgra?
32-bitna load/store (Harvard) arhitektura
Kakva je protočna obrada u Cortex-M3?
Trostepena protočna obrada
Koje veličine su podaci u Cortex-M3?
Reč (32 bita), a može da bude i polureč (16b) i bajt (8b)
Kakvu aritmetiku ima Cortex-M3?
Označenu i neoznačenu aritmetiku
Koji instrukcijski set ima Cortex-M3?
Thumb instrukcijski set
Koje su veličine instrukcija u Cortex-M3?
Instrukcije su veličine 16 bita i 32 bita
Koji režimi rada postoje u Cortex-M3?
1) Thread režim rada
2) Exception režim rada
Ko koristi exception režim rada u Cortex-M3?
Prekidne rutine i izuzeci
Tipovi izvršavanja instrukcija u thread režimu rada u Cortex-M3?
1) privilegovano izvršavanje
2) neprivilegovano izvršavanje
Ko koristi privilegovano izvršavanje u thread režimu rada u Cortex-M3?
Operativni sistem
Koji režim rada je podrazumevani za operativni sistem u Cortex-M3?
Privilegovani
Koji registar se koristi za upravljanje privilegijama i postavkama režima rada u Cortex-M3?
CONTROL registar
Ko koristi neprivilegovano izvršavanje u thread režimu rada u Cortex-M3?
Aplikativni softver
Kako aplikativni softver iz neprivilegovanog režima rada prelazi u privilegovani u Cortex-M3?
Koristeći SVC = Supervisor Call
Šta znači SVC?
Supervisor Call
Šta nije dozvoljeno u neprivilegovanom režimu rada kod Cortex-M3?
- ograničeno je korišćenje MSR i MRS instrukcija
- onemogućeno korišćenje CPS instrukcije
- nema pristupa sistemskom tajmeru, NVIC i SCB
- može biti ograničen pristup memoriji i periferijama
Šta znači MSR instrukcija?
Move to Special Register
Šta znači MRS instrukcija?
Move from Special Register
Šta znači CPS instrukcija?
Change Processor State
Koji su opštenamenski registri ARM Cortex-M3 procesora?
R0-R12
Koji registar je pokazivač na stek kod ARM Cortex-M3 procesora?
SP (R13)
Koje vrste steka postoje u ARM Cortex-M3 procesoru?
Main Stack (MSP)
Process Stack (PSP)
Kakav je stek kod ARM Cortex-M3 procesora?
Pun opadajući stek
Na koju vrednost se postavlja MSP prilikom reseta?
Na vrednost sa memorijske lokacije 0
// mem(0)
Na koju vrednost se postavlja PSP prilikom reseta?
Nepoznato je stanje PSP prilikom reseta.
Na koju vrednost se postavljaju opštenamenski registri prilikom reseta?
Nepoznato je stanje opštenamenskih registara prilikom reseta.
Šta znači LR?
Link Registar
Koji registar je Link Registar?
LR (R14)
Na koju vrednost se postavlja LR prilikom reseta?
Na 0xFFFFFFFF
Za šta služi LR?
Link Registar čuva adresu povratka iz potprograma
Koji registar je programski brojač?
PC (R15)
Na koju vrednost se postavlja registar PC prilikom reseta?
Na vrednost sa memorijske adrese 4
// mem(4)
Koja je vrednost bita 0 u PC registru?
Uvek 0
Koji bit uvek ima vrednost 0 u PC registru?
Bit 0
Kako instrukcije moraju biti poravnate u Cortex-M3?
Na pola reči
Zašto je bit 0 PC registra uvek 0?
Zbog poravnanja instrukcija na pola reči (i da bi bit 0 odredišnih adresa mogao da se koristi za informaciju da li se radi o ARM (0) ili Thumb (1) instrukcijskom setu)
Kako se obezbeđuje poravnanje instrukcija na pola reči u Cortex-M3 procesoru?
Bit 0 registra PC je uvek 0.
Šta je PSR?
Program Status Register
Na koju vrednost se postavlja PSR prilikom restarta?
Na vrednost 0x01000000
Od kojih registara se sastoji PSR?
APSR (Application Program Status Register)
IPSR (Interrupt Program Status Register)
EPSR (Execution Program Status Register)
Šta znači APSR?
Application Program Status Register
Šta znači IPSR?
Interrupt Program Status Register
Šta znači EPSR?
Execution Program Status Register
Na koju vrednost se postavlja APSR prilikom restarta?
0x00000000
Na koju vrednost se postavlja IPSR prilikom restarta?
0x00000000
Na koju vrednost se postavlja EPSR prilikom restarta?
0x01000000
U kom režimu rada procesora Cortex-M3 se može koristiti PSR?
Samo u privilegovanom
U kom režimu rada procesora Cortex-M3 se može koristiti APSR?
I u privilegovanom i u neprivilegovanom
U kom režimu rada procesora Cortex-M3 se može koristiti EPSR?
Samo u privilegovanom
U kom režimu rada procesora Cortex-M3 se može koristiti IPSR?
Samo u privilegovanom
Da li se može upisitvati u APSR?
Da
Da li se može upisitvati u IPSR?
Ne, može se samo čitati
Da li se može upisitvati u EPSR?
Ne, može se samo čitati (ali vraća 0)
Koja vrednost treba da bude u IPSR?
Broj izuzetka koji se izvršava, ili 0
Koje režime izvršavanja imaju ARM procesori (u zavisnosti od instrukcijskog seta koji se koristi)?
ARM i Thumb
Koji bit u EPSR govori da je postavljen Thumb režim izvršavanja?
Bit 24. (najniži bit najvišeg bajta), T bit
Koja greška se javi ako se pokuša postavljanje na 0 T bita (za Thumb režim rada) registra EPSR?
Usage fault (vrsta greške koja se javlja kada se pokuša izvršiti instrukcija koja nije validna ili nije dozvoljena)
Koja greška se javi ako se bit T (za Thumb režim rada) postavi na 0 pri resetu?
Hard fault (greška koja obustavlja rad sistema)
Šta se upisuje u T bit prilikom skokova?
Najniži bit odredišne adrese (koji je uvek 1)
Koja je vrednost najnižeg bita svih adresa u Thumb režimu u ARM arhitekturi?
1, a 0 je rezervisana za ARM režim.
Šta znači LDM instrukcija?
Load Multiple
Šta znači STM instrukcija?
Store Multiple
Zašta služe ICI/IT biti u EPSR registru?
Za nastavljanje izvršavanja LDM, STM i IfThen instrukcija
Šta znači ICI/IT?
Interruptible Continuation Instruction / If Then
Kako pristupiti trima registrima APSR, IPSR i EPSR odjednom?
Preko registra XPSR
Kako pristupiti dvama registrima IPSR i EPSR odjednom?
Preko registra IEPSR
Kako pristupiti dvama registrima IPSR i APSR odjednom?
Preko registra IAPSR
Kako pristupiti dvama registrima EPSR i APSR odjednom?
Preko registra EAPSR
Kako ispitati EPSR registar?
Uz pomoć steka
Šta vraća čitanje EPSR registra?
Nulu
Šta se dešava kada se pokuša upis u EPSR?
Ignoriše se
U kom režimu može da se čita ili upisuje u kontrolni registar jezgra?
Samo u privilegovanom režimu
Koji bit kontrolnog registra govori u kom režimu u Thread modu se program izvršava?
Bit 0 CONTROL registra
Šta nam govori to da je bit 0 kontrolnog registra 0?
Privilegovan režim Thread moda
Šta nam govori to da je bit 0 kontrolnog registra 1?
Neprivilegovan režim Thread moda
Koji bit kontrolnog registra govori koji stek se koristi?
Bit 1 CONTROL registra
Šta nam govori to da je bit 1 kontrolnog registra 0?
Koristi se Main stek (SP je MSP)
Šta nam govori to da je bit 1 kontrolnog registra 1?
Koristi se Process stek (SP je PSP)
Koji stek se koristi u Handler (exception) modu?
Uvek MSP (Main Stack Pointer)
Šta se dešava sa kontrolnim registrom prilikom ulaska u i izlaska iz prekidne rutine?
Automatski se ažurira kontrolni registar.
Kako osigurati da sve naredne instrukcije koriste novi stek prilikom promene steka MSR instrukcijom?
Posle MSR instrukcije ide ISB (Instruction Synchronization Barrier).
Šta znači ISB instrukcija?
Instruction Synchronization Barrier
Koje su instrukcije za prenos podataka između memorije i registara u Cortex-M3 procesoru?
LDR
STR
LDM
STM
Koja instrukcija se koristi za prenos iz opštenamenskog registra u registar posebne namene?
MSR
Kolika je veličina adresnog prostora memorije u Cortex-M3 jezgru?
4GB
Koja instrukcija se koristi za prenos iz registra posebne namene u opštenamenski registar?
MRS
Koja je adresibilna jedinica memorije u Cortex-M3 jezgru?
Bajt
Kako pristupiti periferijama u Cortex-M3 jezgru?
Memorija i periferije su mapirani u isti adresni prostor
Koji format za skladištenje podataka koristi Cortex-M3?
Little-endian poredak (niži bajt na nižoj adresi)
Kako može da se pristupa memoriji što se tiče poravnanja?
Poravnati pristup
Neporavnati pristup (nekad nije dozvoljen i sporiji je)
Šta su bit-band regioni?
To su regioni u kojima svakom bitu može da se pristupa zasebno i to atomičnim operacijama, koristeći adresu iz bit-band alias opsega.
Šta je bit-band alias opseg?
Opseg u kom se nalaze alias adrese za pristup pojedinačnim bitovima u bit-band regionima.
Šta je opseg PPB?
Private Peripheral Bus je opseg u memoriji za registre periferija Cortex-M3 procesora.
Koji opseg u memoriji se koristi za registre periferija Cortex-M3 procesora?
PPB = Private Peripheral Bus
Koja je formula za izračunavanje adrese bita u bit-band regionu?
bit_word_offset = (byte_offset * 32) + (bit_number * 4)
bit_word_addr = bit_band_base + bit_word_offset
Koji sve tipovi memorijskih regiona (opsega) postoje u Cortex-M3 procesoru?
Normal region
Device region
Strongly-ordered region
(XN, dodatni fleg za memorijski region)
Šta procesor radi u normal memorijskom regionu (opsegu)?
- promena redosleda transakcija radi efikasnosti
- spekulativna čitanja
Šta procesor radi u device memorijskom regionu (opsegu)?
- održava redosled transakcija u odnosu na ostale transakcije u opsezima Device i Strongly-ordered
Šta procesor radi u strongly-ordered memorijskom regionu (opsegu)?
- održava redosled pristupa u odnosu na sve ostale transakcije
Koji dodatni fleg se koristi u memorijskom regionu i za šta služi?
XN fleg (Execute never)
Procesor ne dozvoljava izvršavanje instrukcija
Šta se desi ako se pokuša izvršavanje instrukcija u regionu koji ima postavljen fleg XN (Execute never)?
Memory management fault izuzetak
Šta je XN fleg?
Execute never
Fleg kojim se ne dozvoljava izvršavanje instrukcija u memorijskom regionu
Zašto je dobro da kod uvek bude u Code regionu?
Da bi se iskoristila mogućnost simultanog dohvatanja instrukcije i podataka
Da li Code region može da sadrži i podatke?
Da
Koji regioni u memoriji sadrže bit-band i bit-band alias regione?
Peripheral i SRAM regioni
U kom regionu se nalaze NVIC, sistemski tajmer i SCB?
U PPB (Private Peripheral Bus) regionu
Zašto mogu da nastanu problemi kod Cortex-M3 procesora?
- procesor promeni redosled transakcija
- višestruke magistrale po kojima se prenose instrukcije i podaci
- različit broj wait stanja (različita vremena kašnjenja)
- neki pristupi memoriji su baferisani (odloženi) ili spekulativni (unapred izvršava instrukcije pre nego što su uslovi ispunjeni)
Koje je rešenje za probleme koji mogu da nastanu u Cortex-M3?
Koristiti neku od barijera
Šta znači DMB?
Data Memory Barrier
Koje sve barijere postoje u Cortex-M3?
DMB (Data Memory Barrier)
DSB (Data Synchronization Barrier)
ISB (Instruction Synchronization Barrier)
Šta znači DSB?
Data Synchronization Barrier
Šta znači ISB?
Instruction Synchronization Barrier
Za šta služi DMB?
Osigurava da će se svi pristupi memoriji instrukcija pre DMB okončati pre počinjanja prvog pristupa memoriji instrukcija posle DMB
Za šta služi DSB?
Osigurava da će se svi pristupi memoriji pre DSB okončati pre izvršavanja instrukcija posle DSB
Za šta služi ISB?
Prazni pipeline, tako da se sve instrukcije posle ISB moraju ponovo dohvatiti iz keša ili memorije kada se ISB završi
Kada se preporučuje korišćenje barijera?
- kada se modifikuje vektor tabela i dozvoljava prekid (DMB)
- kod samomodifikujućeg koda (ISB)
- kod promene memorijske mape (DSB)
- kod dinamičke promene prioriteta zahteva (DSB)
- kod upotrebe semafora u sistemima sa više procesora (DMB)
Zašto se korišćenje barijere preporučuje kada se modifikuje vektor tabela i dozvoljava prekid?
Da se prekid ne dogodi pre upisa nove adrese prekidne rutine (DMB)
Zašto se korišćenje barijere preporučuje kod samomodifikujućeg koda?
Da se ne desi da se i nakon modifikacije izvrši stari kod (ISB)
Zašto se korišćenje barijere preporučuje kod dinamičke promene prioriteta zahteva?
U slučaju kada se menja prioritet zahteva koji je već pristigao i čeka obradu, da se obezbedi da promena bude završena pre daljeg izvršavanja instrukcija (DSB)
Zašto se korišćenje barijere preporučuje kod promene memorijske mape?
Da se ne bi koristila stara mapa u narednim instrukcijama (DSB)
Zašto se korišćenje barijere preporučuje kod upotrebe semafora u sistemima sa više procesora?
Potrebno je obezbediti da svi vide isti redosled operacija nad semaforom (DMB)
Koji tip memorijskog regiona ne zahteva DMB?
Strongly ordered