Mikroprocesorski sistemi/K1 2023

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

Prvi kolokvijum 2023. godine održan je 4. novembra, bila je dostupna dokumentacija mikrokontrolera, procesora i Intel HEX formata kao i prezentacije sa predavanja tokom teorijskog i praktičnog dela ispita. Postavka roka nije dostupna sa stranice predmeta. Polaganje je organizovano u dva termina (prvi za SI, drugi za RTI). U ovkiru svakog termina su postojale po dve grupe za teoriju.

Teorija - grupa C

1. zadatak

Isti kao prvi zadatak sa prvog kolokvijuma, 2022.

2. zadatak

Posmatra se Cortex-M3 procesor sa podrazumevanom konfiguracijom nakon reseta. U nastavku je dato trenutno stanje sistema opisano vrednostima koje bi bile dobijene čitanjem odgovarajućih memorijski mapiranih registara:

NVIC_IABR0: 0x00000000
NVIC_ISER0: 0x0000000F
NVIC_ISPR0: 0x0000000F

Koliko puta će biti aktiviran tail-chaining mehanizam za prethodno navedeno stanje sistema pod pretpostavkom da neće pristizati novi zahtevi za prekidom?

Odgovor: 3

Objašnjenje: Videti drugi zadatak sa prvog kolokvijuma, 2022.

3. zadatak

U nastavku je prikazan sadržaj dve datoteke: (1) linkerska skripta i (2) izvorni asemblerski kod programa. Posmatra se izvršavanje datog programa koji je rezultat linkovanja pomoću prikazane linkerske skripte.

Koja vrednost se nalazi u registru R4 u trenutku kada tok kontrole stigne do adrese ukazane labelom leave_sv_call_handler? Odgovor uneti prema formatu neoznačenih heksadecimalnih literala u C programskom jeziku širine 32 bita.

Linkerska skripta:

MEMORY
{
    FLASH(rx) : ORIGIN = 0x08000000, LENGTH = 32K
    SRAM(rwx) : ORIGIN = 0x20000000, LENGTH = 10K
}
SECTIONS
{
    .vector_table : { *(.vector_table) } > FLASH
    .text : { *(.text*) } > FLASH
}

Izvorni asemblerski kod programa:

.cpu cortex-m3
.fpu softvfp
.syntax unified
.thumb

.section .vector_table, "a"
.word 0x20000064
.word reset_handler
.rept 9
.word default_handler
.endr
.word sv_call_handler

.section .text.reset_handler
.type reset_handler, %function
reset_handler:
    mov r0, 0
    mov r1, 1
    mov r2, 2
    mov r3, 3
    mov r12, 12
    mov r14, 14
    svc 0
    nop
infinite_loop:
    b infinite_loop

.section .text.default_handler
.type default_handler, %function
default_handler:
    b default_handler

.section .text.sv_call_handler
.type sv_call_handler, %function
sv_call_handler:
    ldr r4, [sp, 2 * 4]
leave_sv_call_handler:
    bx lr
.end

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

0x00000001

Odgovor: 0x00000002

Objašnjenje: treći zadatak sa prvog kolokvijuma, 2022.

4. zadatak

Isti kao prvi zadatak sa julskog roka, 2022.

Teorija - grupa D

1. zadatak

Isti kao prvo nekategorizovano pitanje sa skupljene teorije.

2. zadatak

Posmatra se Cortex-M3 procesor sa podrazumevanom konfiguracijom nakon reseta. U nastavku je dato trenutno stanje sistema opisano vrednostima koje bi bile dobijene čitanjem odgovarajućih memorijski mapiranih registara:

NVIC_IABR0: 0x00000000
NVIC_ISER0: 0x0000003C
NVIC_ISPR0: 0x000000F0

Koliko puta će biti aktiviran tail-chaining mehanizam za prethodno navedeno stanje sistema pod pretpostavkom da neće pristizati novi zahtevi za prekidom?

Odgovor: 1

Objašnjenje: Videti drugi zadatak sa prvog kolokvijuma, 2022.

3. zadatak

Na kojoj adresi se nalazi mašinska instrukcija koju mikrokontroler STM32F103R6 prvu izvršava nakon reseta?

  1. 0x00000004
  2. mem[0x00000004]
  3. Nijedna od ponuđenih
  4. mem[0x08000004]
  5. 0x08000004

Objašnjenje: Ovo pitanje se razlikuje jer se ovde pominje konkretan mikrokontroler, zbog toga je inicijalno odgovor mem[0x08000004] bio označen kao tačan. Međutim, kako ova lokacija zavisi od stanja boot pin-a, nakon žalbi, puni poeni su dati studentima koji su ozačili samo jedan tačan odgovor.

4. zadatak

U nastavku je prikazan sadržaj dve datoteke: (1) linkerska skripta i (2) izvorni asemblerski kod programa. Posmatra se izvršavanje datog programa koji je rezultat linkovanja pomoću prikazane linkerske skripte.

Koja vrednost se nalazi u registru R4 u trenutku kada tok kontrole stigne do adrese ukazane labelom leave_sv_call_handler? Odgovor uneti prema formatu neoznačenih heksadecimalnih literala u C programskom jeziku širine 32 bita.

Linkerska skripta:

MEMORY
{
    FLASH(rx) : ORIGIN = 0x08000000, LENGTH = 32K
    SRAM(rwx) : ORIGIN = 0x20000000, LENGTH = 10K
}
SECTIONS
{
    .vector_table : { *(.vector_table) } > FLASH
    .text : { *(.text*) } > FLASH
}

Izvorni asemblerski kod programa:

.cpu cortex-m3
.fpu softvfp
.syntax unified
.thumb

.section .vector_table, "a"
.word 0x20000064
.word reset_handler
.rept 9
.word default_handler
.endr
.word sv_call_handler

.section .text.reset_handler
.type reset_handler, %function
reset_handler:
    mov r0, 0
    mov r1, 1
    mov r2, 2
    mov r3, 3
    mov r12, 12
    mov r14, 14
    svc 0
    nop
infinite_loop:
    b infinite_loop

.section .text.default_handler
.type default_handler, %function
default_handler:
    b default_handler

.section .text.sv_call_handler
.type sv_call_handler, %function
sv_call_handler:
    ldr r4, [sp, 3 * 4]
leave_sv_call_handler:
    bx lr
.end

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

0x00000001

Odgovor: 0x00000003

Objašnjenje: treći zadatak sa prvog kolokvijuma, 2022.

Zadatak