Микропроцесорски системи/К1 2023 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
(2023)
Ред 87: Ред 87:


== Теорија - група Д ==
== Теорија - група Д ==
=== 1. задатак ===
Исти као [[Микропроцесорски_системи/Теорија#Питање_1|прво некатегоризовано питање са скупљене теорије]].
=== 2. задатак ===
Посматра се ''Cortex-M3'' процесор са подразумеваном конфигурацијом након ресета. У наставку је дато тренутно стање система описано вредностима које би биле добијене читањем одговарајућих меморијски мапираних регистара:
NVIC_IABR0: 0x00000000
NVIC_ISER0: 0x0000003C
NVIC_ISPR0: 0x000000F0
Колико пута ће бити активиран ''tail-chaining'' механизам за претходно наведено стање система под претпоставком да неће пристизати нови захтеви за прекидом?
'''Одговор:''' <span class="spoiler" data-solution="text">1</span>
'''Објашњење:''' Видети [[Микропроцесорски_системи/К1_2022#2._задатак|други задатак са првог колоквијума, 2022]].
=== 3. задатак ===
На којој адреси се налази машинска инструкција коју микроконтролер ''STM32F103R6'' прву извршава након ресета?
<div class="abc-list" data-solution="multiple">
# 0x00000004
# <span class="solution">mem[0x00000004]</span>
# Ниједна од понуђених
# <span class="solution">mem[0x08000004]</span>
# 0x08000004
</div>
'''Објашњење:''' <span class="spoiler" data-solution="explanation">Чека се решење жалби.</span>
=== 4. задатак ===
У наставку је приказан садржај две датотеке: (1) линкерска скрипта и (2) изворни асемблерски код програма. Посматра се извршавање датог програма који је резултат линковања помоћу приказане линкерске скрипте.
Која вредност се налази у регистру ''R4'' у тренутку када ток контроле стигне до адресе указане лабелом <code>leave_sv_call_handler</code>? Одговор унети према формату неозначених хексадецималних литерала у C програмском језику ширине 32 бита.
Линкерска скрипта:
<pre>
MEMORY
{
    FLASH(rx) : ORIGIN = 0x08000000, LENGTH = 32K
    SRAM(rwx) : ORIGIN = 0x20000000, LENGTH = 10K
}
SECTIONS
{
    .vector_table : { *(.vector_table) } > FLASH
    .text : { *(.text*) } > FLASH
}
</pre>
Изворни асемблерски код програма:
<syntaxhighlight lang="asm">
.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
</syntaxhighlight>
Приказ очекиваног формата одговора за произвољно одабрану вредност 1 јесте:
0x00000001
'''Одговор:''' <span class="spoiler" data-solution="text">0x00000003</span>
'''Објашњење:''' [[Микропроцесорски_системи/К1_2022#3._задатак|трећи задатак са првог колоквијума, 2022]].


== Задатак ==
== Задатак ==

Верзија на датум 5. новембар 2023. у 00:14

Први колоквијум 2023. године одржан је 4. новембра, била је доступна документација микроконтролера, процесора и Intel HEX формата као и презентације са предавања током теоријског и практичног дела испита. Поставка рока није доступна са странице предмета. Полагање је организовано у два термина (први за СИ, други за РТИ). У овкиру сваког термина су постојале по две групе за теорију.

Теорија - група Ц

1. задатак

Исти као први задатак са првог колоквијума, 2022.

2. задатак

Посматра се Cortex-M3 процесор са подразумеваном конфигурацијом након ресета. У наставку је дато тренутно стање система описано вредностима које би биле добијене читањем одговарајућих меморијски мапираних регистара:

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

Колико пута ће бити активиран tail-chaining механизам за претходно наведено стање система под претпоставком да неће пристизати нови захтеви за прекидом?

Одговор: 2

Објашњење: Видети други задатак са првог колоквијума, 2022.

3. задатак

У наставку је приказан садржај две датотеке: (1) линкерска скрипта и (2) изворни асемблерски код програма. Посматра се извршавање датог програма који је резултат линковања помоћу приказане линкерске скрипте.

Која вредност се налази у регистру R4 у тренутку када ток контроле стигне до адресе указане лабелом leave_sv_call_handler? Одговор унети према формату неозначених хексадецималних литерала у C програмском језику ширине 32 бита.

Линкерска скрипта:

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

Изворни асемблерски код програма:

.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

Приказ очекиваног формата одговора за произвољно одабрану вредност 1 јесте:

0x00000001

Одговор: 0x00000002

Објашњење: трећи задатак са првог колоквијума, 2022.

4. задатак

Исти као први задатак са јулског рока, 2022.

Теорија - група Д

1. задатак

Исти као прво некатегоризовано питање са скупљене теорије.

2. задатак

Посматра се Cortex-M3 процесор са подразумеваном конфигурацијом након ресета. У наставку је дато тренутно стање система описано вредностима које би биле добијене читањем одговарајућих меморијски мапираних регистара:

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

Колико пута ће бити активиран tail-chaining механизам за претходно наведено стање система под претпоставком да неће пристизати нови захтеви за прекидом?

Одговор: 1

Објашњење: Видети други задатак са првог колоквијума, 2022.

3. задатак

На којој адреси се налази машинска инструкција коју микроконтролер STM32F103R6 прву извршава након ресета?

  1. 0x00000004
  2. mem[0x00000004]
  3. Ниједна од понуђених
  4. mem[0x08000004]
  5. 0x08000004

Објашњење: Чека се решење жалби.

4. задатак

У наставку је приказан садржај две датотеке: (1) линкерска скрипта и (2) изворни асемблерски код програма. Посматра се извршавање датог програма који је резултат линковања помоћу приказане линкерске скрипте.

Која вредност се налази у регистру R4 у тренутку када ток контроле стигне до адресе указане лабелом leave_sv_call_handler? Одговор унети према формату неозначених хексадецималних литерала у C програмском језику ширине 32 бита.

Линкерска скрипта:

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

Изворни асемблерски код програма:

.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

Приказ очекиваног формата одговора за произвољно одабрану вредност 1 јесте:

0x00000001

Одговор: 0x00000003

Објашњење: трећи задатак са првог колоквијума, 2022.

Задатак