Микропроцесорски системи/К1 2023 — разлика између измена
(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 прву извршава након ресета?
- 0x00000004
- mem[0x00000004]
- Ниједна од понуђених
- mem[0x08000004]
- 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.