Микропроцесорски системи/Теорија — разлика између измена
(Započeto prepisivanje pitalica iz PDF koji je `<@445839468503498752>` poslao (ne znam odakle su i nisam radio primer ispita na Moodle još)) |
м (Konačan prepis legendarnog dokumenta "Vezbanje za teoriju pitanja s rokova.docx" u kombinaciji sa primerima pitanja) |
||
| Ред 1: | Ред 1: | ||
{{tocright}} | {{tocright}} | ||
'''Питалице''' долазе на теоријским деловима обе предиспитне обавезе и свих испита на предмету. | '''Питалице''' долазе на теоријским деловима обе предиспитне обавезе и свих испита на предмету. Типови питања су јако слични између рокова, па су зато испод набројана типична питања која се могу појавити на теоријском делу испита, дати примери питања и набројани корисни ресурси одакле се може прочитати више о њима. Уколико објашњења дата овде нису довољно јасна, погледати примере задатака ради разјашњења. | ||
== | == Први блок == | ||
=== | === Улазак и излазак из прекидне рутине === | ||
Код овог типа питања битно је разумети како функционише неколико механизама у ''Cortex-M3'' микропроцесору. Текст испод парафразиран је из ''Cortex-M3 Programming Manual'' са страница 37 и 38: | |||
* '''Stacking:''' операција чувања одређених регистара на стеку приликом уласка у прекидну рутину. На стеку се чувају следећи регистри (то се зове ''stack frame'') у редоследу који је дат: | |||
: | ** ''R0'', ''R1'', ''R2'', ''R3'' и ''R12'' | ||
** Повратна адреса прекидне рутине (односно ''PC'' регистар) | |||
** Програмски статусни регистар (''PSR'') | |||
** ''Link register'' (''LR'') | |||
*: Након ''stacking'', ''SP'' показује на најнижу адресу у ''stack frame'' (односно на ''R0''). У ''CCR'' регистру бит ''STKALIGN'' може бити постављен на 1, у ком случају се дешава поравнање стека на дуплу реч. | |||
: | *: За овај механизам углавном буде дат програм на асемблеру који са стека учита одређени податак, па се мора одредити која је вредност тог податка. | ||
: | * '''Late-arriving:''' Паралелно са ''stacking'' се дохвата адреса руковаоца у IVT, па ако се до учитавања прве инструкције у прекидној рутини појави изузетак вишег групног приоритета прелази се на његово извршавање. | ||
: | * '''Tail-chaining:''' ако након извршавања тренутне прекидне рутине постоји следећи прекид који испуњава услове извршавања, прелази се на његово извршавање без уклањања вредности из ''stack frame''. | ||
*: За овај механизам питања углавном буду бројање колико пута се десио ''tail-chaining'' под одређеним условима. | |||
''' | |||
''' | '''Примери питања:''' | ||
* ''Stacking:'' [[Микропроцесорски системи/К1 2022#3. задатак|3. задатак, К1 2022]] | |||
* ''Tail-chaining:'' [[Микропроцесорски системи/К1 2022#2. задатак|2. задатак, К1 2022]] | |||
=== | === Почетна инструкција програма === | ||
Адреса адресе прве инструкције програма јесте 0x00000004, тако да је адреса прве инструкције програма штагод да пише у меморији на адреси 0x00000004. Ова једноставна питалица може често да се појави на различитим роковима и одговор на њу може се наћи на страни 15 од ''Cortex-M3 Programming Manual''. | |||
'''Примери питања:''' | |||
* [[Микропроцесорски системи/Јул 2022#1. задатак|1. задатак, јул 2022]]. | |||
=== Условно извршавање инструкција === | |||
< | Овај механизам објашњен је на страни 56 у ''Cortex-M3 Programming Manual'', у одељку 3.3.7 ''Conditional execution''. Питања из ове области обично садрже барем једну <code>it</code> инструкцију и неке комбинације <code>add</code>, <code>sub</code>, <code>cmp</code> и <code>mov</code> инструкција са суфиксом <code>s</code> (ажурира програмски статусни регистар!) или без њега (не ажурира програмски статусни регистар!), а на крају се тражи вредност у неком од коришћених регистара. | ||
</ | |||
'''Примери питања:''' | |||
* [[Микропроцесорски системи/Пробни тест 2022#Задатак 1|1. задатак, пробни тест 2022]] | |||
* [[Микропроцесорски системи/Јул 2022#2. задатак|2. задатак, јул 2022]] | |||
* (''извршавање инструкција генерално'') [[Микропроцесорски системи/К1 2022#1. задатак|1. задатак, К1 2022]] | |||
* [[#Питање 1|Некатегорисано питање 1]] | |||
* [[#Питање 2|Некатегорисано питање 2]] | |||
* Примери из документације | |||
=== ''Bit-band alias'' === | |||
У овом типу задатка тражи се да се за неки бит у SRAM одреди ''bit-band alias'' адреса. На страни 27 ''Cortex-M3 Programming Manual'' објашњен је овај механизам и наведене следеће формуле: | |||
* <code>bit_word_offset = (byte_offset x 32) + (bit_number x 4)</code> | |||
* <code>bit_word_addr = bit_band_base + bit_word_offset</code> | |||
где је: | |||
* <code>byte_offset</code> померај неког бајта од почетка SRAM (SRAM почиње на 0x20000000), | |||
* <code>bit_number</code> број бита који се тражи (дат у задатку) | |||
* <code>bit_band_base</code> почетак ''bit-band alias'' региона (почиње на 0x22000000) | |||
'''Примери питања:''' | |||
* [[Микропроцесорски системи/Пробни тест 2022#Задатак 2|2. задатак, пробни тест 2022]] | |||
=== Режими рада === | |||
Иако нема примера овог питања, може да дође питање у ком режиму се налази процесор приликом извршавања прекидне рутине (''handler mode''), а у ком приликом главног програма (''thread mode''). | |||
=== ''Intel HEX'' формат === | |||
У оваквом задатку потребно је растумачити шта пише у једној ''Intel HEX'' датотеци за коју је дат садржај и истакнута синтакса. Опис овог формата може са наћи на [[wikipedia:Intel HEX|Википедији]], али такође и на [https://developer.arm.com/documentation/ka003292/latest ''ARM''-овом] и [https://www.intel.com/content/www/us/en/support/programmable/articles/000076770.html ''Intel''-овом] сајту. | |||
'''Примери питања:''' | |||
* [[Микропроцесорски системи/Август 2022#1. задатак|1. задатак, август 2022]] | |||
=== Иницијална вредност ''SP'' === | |||
Регистар ''SP'' своју иницијалну вредност добија са адресе 0x00000000. У овом типу задатка буде један асемблерски програм у коме се ради формирање IVT (чији је нулти улаз заправо вредност ''SP''), а затим се у програму негде та вредност користи, и резултат извршавања зависи од те вредности. Главна идеја је прочитати вредност ''SP'' са прве локације у вектор табели из асемблерског програма. | |||
'''Примери питања:''' | |||
* [[Микропроцесорски системи/Август 2022#3. задатак|3. задатак, август 2022]], 4. задатак, К1 2022 | |||
=== Тренутна прекидна рутина === | |||
Још један чест задатак јесте асемблерски програм у којем се изазове одређени прекид на неки начин, а затим се у прекидној рутини у одређени регистар упише вредност IPSR и пита која је вредност уписана. Овај тип задатка није превише шаблонски у делу где се изазива прекид, али када се сазна који је прекид изазван његов број се лако може сазнати из ''Cortex-M3 Programming Manual'', страна 32, 2.3.2 ''Exception types''. | |||
'''Примери питања:''' | |||
* [[Микропроцесорски системи/Август 2022#4. задатак|4. задатак, август 2022]] | |||
* [[#Питање 3|Некатегорисано питање 3]] | |||
. | |||
== Други блок == | |||
=== Пинови за активацију тајмера === | |||
У овом типу питања траже се пинови чија одговарајућа промена окида односно стартује бројање на одређеном тајмеру микроконтролера. На фигурама са страна 294 и 367 из ''STM32F103 Reference Manual'' можемо видети да у сигналу TRGI учествују <code>TIMx_ETR</code>, <code>TIMx_CH1</code> (преко TI1FP1) и <code>TIMx_CH2</code> (преко TI2FP2), а на странама 178 и 179 можемо пронаћи одговарајућа мапирања пинова за те канале микроконтролера. У теорији, у том сигналу би могао да учествује и сигнал <code>TIMx_CH3</code> (преко XOR кола које улази у TI1) али ово никада није означено као тачан одговор. | |||
'''Примери питања:''' | |||
* [[Микропроцесорски системи/Пробни тест 2022#Задатак 3|3. задатак, пробни тест 2022]] (''TIM2'') | |||
* [[Микропроцесорски системи/К2 2022#3. задатак|3. задатак, К2 2022]], 4. задатак, јул 2022 (''TIM1'') | |||
=== Фреквенција HCLK === | |||
Постоји неколико варијанти овог питања где је дата фреквенција интерних или екстерних осцилатора а пита се за максималну радну фреквенцију (HCLK). Одговор на ово питање се увек може наћи на фигури 8 са стране 93 од ''STM32F103 Reference Manual'', где ти сигнали такта обично пролазе кроз PLL и евентуално се одсецају на одговарајуће максимуме као што је прописано шемом. Обратити пажњу и на текст испод фигуре! | |||
'''Примери питања:''' | |||
* [[Микропроцесорски системи/Пробни тест 2022#Задатак 4|4. задатак, пробни тест 2022]] | |||
* [[Микропроцесорски системи/Јул 2022#3. задатак|3. задатак, јул 2022]] | |||
* [[#Питање 4|Некатегорисано питање 4]] | |||
=== Број догађаја пред UEV === | |||
Овај тип питања пита колико пута се којих догађаја мора десити како би се десио ''Update Event'' (UEV) неког тајмера. Одговор је суштински да треба да се деси за један више пута него што је вредност ''repetition counter'', при бројању навише се дешава ''counter overflow'', док се при бројању наниже дешава ''counter underflow''. | |||
'''Примери питања:''' | |||
* [[Микропроцесорски системи/Август 2022#5. задатак|5. задатак, август 2022]] | |||
=== Начин бројања тајмера === | |||
Иако нема забележеног тачног текста овог питања, може да дође питање да се означи на који начин може да броји тајмер, и на то је потребно одговорити: | |||
# навише, | |||
# наниже, и | |||
# комбиновано. | |||
. | === Активирање EXTI преко RTSR === | ||
. | Питање пита за вредност EXTI_RTSR регистра која мора бити уписана како би се омогућили прекиди на датим пиновима. На страни 212. од ''STM32F103 Reference Manual'' можемо видети да за сваку ''EXTI'' линију постоји по један бит у ''RTSR'' регистру, док на страни 210. можемо видети да пиновима са индексом 0 одговара линија 0, пиновима са индексом 1 одговара линија 1, и тако даље. На основу тога, поставимо одговарајуће битове броја на основу датих пинова, и то је тражени одговор. | ||
. | |||
. | |||
'''Примери питања:''' | |||
* [[Микропроцесорски системи/К2 2022#1. задатак|1. задатак, К2 2022]] | |||
''' | |||
''' | === ''Auto-reload'' регистар === | ||
Често умеју да дођу питања где су фигуре 59, 60, 70 или 71 исечене на неком делу и студенти се питају за одговарајуће вредности након исеченог дела. За овакво питање је потребно пронаћи одговарајућу фигуру из документације и видети на који начин измена ''Auto-reload preload'' регистра утиче на ''shadow'' регистар. | |||
'''Примери питања:''' | |||
* [[Микропроцесорски системи/К2 2022#4. задатак|4. задатак, К2 2022]] | |||
=== Магистрале за периферије === | |||
Могу да дођу питања која питају на којој се магистрали налази одређена периферија. Ова информација се може наћи на неколико места у ''STM32F103 Reference Manual'', а најбоље на страни 50, 3.3 ''Memory map''. | |||
'''Примери питања:''' | |||
* [[Микропроцесорски системи/К2 2022#2. задатак|2. задатак, К2 2022]] | |||
. | |||
. | |||
== Трећи блок == | |||
=== ''USART'' грешке === | |||
. | Као једино често теоријско питање из овог блока може се издвојити питање о грешкама приликом спровођења ''USART'' протокола. ''USART'' комуникација изгледа тако што се магистрала држи на вредности 1 док по њој нема комуникације, затим почетни бит поруке има вредност 0 (''start bit''), после њега долази одређен број битова података (дат у задатку) у који је (опционо) укључен и бит парности (последњи међу битовима података), и на крају долази ''stop bit'' који мора имати вредност 1. Овде су могуће две грешке протокола: | ||
. | * '''Parity error:''' у задатку је дато да ли се ради о парној парности или непарној парности, тако да ако је збир битова података (укључујући и бит парности) паран приликом непарне парности, или непаран приликом парне парности, дошло је до ове грешке. | ||
. | * '''Framing error:''' ова грешка се десила уколико на месту где треба да стоји ''stop bit'' не стоји вредност 1. | ||
. | |||
. | '''Примери питања:''' | ||
* [[Микропроцесорски системи/Јул 2022#5. задатак|5. задатак, јул 2022]] | |||
== Некатегорисана питања == | |||
Следећа питања не припадају ниједном року, али спадају у једну од категорија питања изнад. | |||
. | === Питање 1 === | ||
Која вредност се налази у регистру ''R1'' након извршавања дате секвенце асемблерских инструкција? Одговор унети према формату неозначених хексадецималних литерала у ''C'' програмском језику ширине 32 бита. | |||
<syntaxhighlight lang="asm"> | |||
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 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
'''Одговор:''' <span class="spoiler" data-solution="text"> | Приказ очекиваног формата одговора за произвољно одабрану вредност 1 јесте: | ||
0x00000001 | |||
'''Одговор:''' <span class="spoiler" data-solution="text">0xFFFFFFFE</span> | |||
''' | === Питање 2 === | ||
Која вредност се налази у регистру ''R1'' након извршавања дате секвенце асемблерских инструкција? Одговор унети према формату неозначених хексадецималних литерала у ''C'' програмском језику ширине 32 бита. | |||
<syntaxhighlight lang="asm"> | |||
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 | |||
</syntaxhighlight> | |||
Приказ очекиваног формата одговора за произвољно одабрану вредност 1 јесте: | |||
0x00000001 | |||
'''Одговор:''' <span class="spoiler" data-solution="text">0x00000004</span> | |||
=== | === Питање 3 === | ||
Поставка је иста као у [[Микропроцесорски системи/Август 2022#4. задатак|четвртом задатку из августа 2022. године]], али <code>reset_handler</code> изгледа овако: | |||
<syntaxhighlight lang="asm"> | <syntaxhighlight lang="asm"> | ||
reset_handler: | reset_handler: | ||
| Ред 150: | Ред 173: | ||
'''Одговор:''' <span class="spoiler" data-solution="text">0x0000000B</span> | '''Одговор:''' <span class="spoiler" data-solution="text">0x0000000B</span> | ||
'''Објашњење:''' <span class="spoiler" data-solution="explanation">Слично као | '''Објашњење:''' <span class="spoiler" data-solution="explanation">Слично као у поменутом задатку, само што се овде окине изузетак типа ''SVCall'' позивом инструкције <code>svc</code>, и број тог изузетка је 11.</span> | ||
=== Питање 4 === | |||
Колика је максимална радна фреквенција (''HCLK'') микроконтролера ''STM32F103R6'' уколико се користи ''HSE'' осцилатор који на свом излазу производи сигнал такта фреквенције 8MHz? Одговор унети у мегахерцима без навођења ознаке јединице. | |||
'''Одговор:''' <span class="spoiler" data-solution="text">72</span> | |||
'''Објашњење:''' <span class="spoiler" data-solution="explanation">Као што пише на фигури са стране 93 од ''STM32F103 Reference Manual'', ''HSE'' такт може проћи кроз PLL који може да његову фреквенцију помножи до 16 пута, али је максимална фреквенција ''HCLK'' 72MHz, што је мање од 128MHz колико би иначе могло да буде.</span> | |||
[[Категорија:Рокови]] | [[Категорија:Рокови]] | ||
[[Категорија:Микропроцесорски системи]] | [[Категорија:Микропроцесорски системи]] | ||
Верзија на датум 26. јануар 2023. у 22:01
Питалице долазе на теоријским деловима обе предиспитне обавезе и свих испита на предмету. Типови питања су јако слични између рокова, па су зато испод набројана типична питања која се могу појавити на теоријском делу испита, дати примери питања и набројани корисни ресурси одакле се може прочитати више о њима. Уколико објашњења дата овде нису довољно јасна, погледати примере задатака ради разјашњења.
Први блок
Улазак и излазак из прекидне рутине
Код овог типа питања битно је разумети како функционише неколико механизама у Cortex-M3 микропроцесору. Текст испод парафразиран је из Cortex-M3 Programming Manual са страница 37 и 38:
- Stacking: операција чувања одређених регистара на стеку приликом уласка у прекидну рутину. На стеку се чувају следећи регистри (то се зове stack frame) у редоследу који је дат:
- R0, R1, R2, R3 и R12
- Повратна адреса прекидне рутине (односно PC регистар)
- Програмски статусни регистар (PSR)
- Link register (LR)
- Након stacking, SP показује на најнижу адресу у stack frame (односно на R0). У CCR регистру бит STKALIGN може бити постављен на 1, у ком случају се дешава поравнање стека на дуплу реч.
- За овај механизам углавном буде дат програм на асемблеру који са стека учита одређени податак, па се мора одредити која је вредност тог податка.
- Late-arriving: Паралелно са stacking се дохвата адреса руковаоца у IVT, па ако се до учитавања прве инструкције у прекидној рутини појави изузетак вишег групног приоритета прелази се на његово извршавање.
- Tail-chaining: ако након извршавања тренутне прекидне рутине постоји следећи прекид који испуњава услове извршавања, прелази се на његово извршавање без уклањања вредности из stack frame.
- За овај механизам питања углавном буду бројање колико пута се десио tail-chaining под одређеним условима.
Примери питања:
- Stacking: 3. задатак, К1 2022
- Tail-chaining: 2. задатак, К1 2022
Почетна инструкција програма
Адреса адресе прве инструкције програма јесте 0x00000004, тако да је адреса прве инструкције програма штагод да пише у меморији на адреси 0x00000004. Ова једноставна питалица може често да се појави на различитим роковима и одговор на њу може се наћи на страни 15 од Cortex-M3 Programming Manual.
Примери питања:
Условно извршавање инструкција
Овај механизам објашњен је на страни 56 у Cortex-M3 Programming Manual, у одељку 3.3.7 Conditional execution. Питања из ове области обично садрже барем једну it инструкцију и неке комбинације add, sub, cmp и mov инструкција са суфиксом s (ажурира програмски статусни регистар!) или без њега (не ажурира програмски статусни регистар!), а на крају се тражи вредност у неком од коришћених регистара.
Примери питања:
- 1. задатак, пробни тест 2022
- 2. задатак, јул 2022
- (извршавање инструкција генерално) 1. задатак, К1 2022
- Некатегорисано питање 1
- Некатегорисано питање 2
- Примери из документације
Bit-band alias
У овом типу задатка тражи се да се за неки бит у SRAM одреди bit-band alias адреса. На страни 27 Cortex-M3 Programming Manual објашњен је овај механизам и наведене следеће формуле:
bit_word_offset = (byte_offset x 32) + (bit_number x 4)bit_word_addr = bit_band_base + bit_word_offset
где је:
byte_offsetпомерај неког бајта од почетка SRAM (SRAM почиње на 0x20000000),bit_numberброј бита који се тражи (дат у задатку)bit_band_baseпочетак bit-band alias региона (почиње на 0x22000000)
Примери питања:
Режими рада
Иако нема примера овог питања, може да дође питање у ком режиму се налази процесор приликом извршавања прекидне рутине (handler mode), а у ком приликом главног програма (thread mode).
Intel HEX формат
У оваквом задатку потребно је растумачити шта пише у једној Intel HEX датотеци за коју је дат садржај и истакнута синтакса. Опис овог формата може са наћи на Википедији, али такође и на ARM-овом и Intel-овом сајту.
Примери питања:
Иницијална вредност SP
Регистар SP своју иницијалну вредност добија са адресе 0x00000000. У овом типу задатка буде један асемблерски програм у коме се ради формирање IVT (чији је нулти улаз заправо вредност SP), а затим се у програму негде та вредност користи, и резултат извршавања зависи од те вредности. Главна идеја је прочитати вредност SP са прве локације у вектор табели из асемблерског програма.
Примери питања:
- 3. задатак, август 2022, 4. задатак, К1 2022
Тренутна прекидна рутина
Још један чест задатак јесте асемблерски програм у којем се изазове одређени прекид на неки начин, а затим се у прекидној рутини у одређени регистар упише вредност IPSR и пита која је вредност уписана. Овај тип задатка није превише шаблонски у делу где се изазива прекид, али када се сазна који је прекид изазван његов број се лако може сазнати из Cortex-M3 Programming Manual, страна 32, 2.3.2 Exception types.
Примери питања:
Други блок
Пинови за активацију тајмера
У овом типу питања траже се пинови чија одговарајућа промена окида односно стартује бројање на одређеном тајмеру микроконтролера. На фигурама са страна 294 и 367 из STM32F103 Reference Manual можемо видети да у сигналу TRGI учествују TIMx_ETR, TIMx_CH1 (преко TI1FP1) и TIMx_CH2 (преко TI2FP2), а на странама 178 и 179 можемо пронаћи одговарајућа мапирања пинова за те канале микроконтролера. У теорији, у том сигналу би могао да учествује и сигнал TIMx_CH3 (преко XOR кола које улази у TI1) али ово никада није означено као тачан одговор.
Примери питања:
- 3. задатак, пробни тест 2022 (TIM2)
- 3. задатак, К2 2022, 4. задатак, јул 2022 (TIM1)
Фреквенција HCLK
Постоји неколико варијанти овог питања где је дата фреквенција интерних или екстерних осцилатора а пита се за максималну радну фреквенцију (HCLK). Одговор на ово питање се увек може наћи на фигури 8 са стране 93 од STM32F103 Reference Manual, где ти сигнали такта обично пролазе кроз PLL и евентуално се одсецају на одговарајуће максимуме као што је прописано шемом. Обратити пажњу и на текст испод фигуре!
Примери питања:
Број догађаја пред UEV
Овај тип питања пита колико пута се којих догађаја мора десити како би се десио Update Event (UEV) неког тајмера. Одговор је суштински да треба да се деси за један више пута него што је вредност repetition counter, при бројању навише се дешава counter overflow, док се при бројању наниже дешава counter underflow.
Примери питања:
Начин бројања тајмера
Иако нема забележеног тачног текста овог питања, може да дође питање да се означи на који начин може да броји тајмер, и на то је потребно одговорити:
- навише,
- наниже, и
- комбиновано.
Активирање EXTI преко RTSR
Питање пита за вредност EXTI_RTSR регистра која мора бити уписана како би се омогућили прекиди на датим пиновима. На страни 212. од STM32F103 Reference Manual можемо видети да за сваку EXTI линију постоји по један бит у RTSR регистру, док на страни 210. можемо видети да пиновима са индексом 0 одговара линија 0, пиновима са индексом 1 одговара линија 1, и тако даље. На основу тога, поставимо одговарајуће битове броја на основу датих пинова, и то је тражени одговор.
Примери питања:
Auto-reload регистар
Често умеју да дођу питања где су фигуре 59, 60, 70 или 71 исечене на неком делу и студенти се питају за одговарајуће вредности након исеченог дела. За овакво питање је потребно пронаћи одговарајућу фигуру из документације и видети на који начин измена Auto-reload preload регистра утиче на shadow регистар.
Примери питања:
Магистрале за периферије
Могу да дођу питања која питају на којој се магистрали налази одређена периферија. Ова информација се може наћи на неколико места у STM32F103 Reference Manual, а најбоље на страни 50, 3.3 Memory map.
Примери питања:
Трећи блок
USART грешке
Као једино често теоријско питање из овог блока може се издвојити питање о грешкама приликом спровођења USART протокола. USART комуникација изгледа тако што се магистрала држи на вредности 1 док по њој нема комуникације, затим почетни бит поруке има вредност 0 (start bit), после њега долази одређен број битова података (дат у задатку) у који је (опционо) укључен и бит парности (последњи међу битовима података), и на крају долази stop bit који мора имати вредност 1. Овде су могуће две грешке протокола:
- Parity error: у задатку је дато да ли се ради о парној парности или непарној парности, тако да ако је збир битова података (укључујући и бит парности) паран приликом непарне парности, или непаран приликом парне парности, дошло је до ове грешке.
- Framing error: ова грешка се десила уколико на месту где треба да стоји stop bit не стоји вредност 1.
Примери питања:
Некатегорисана питања
Следећа питања не припадају ниједном року, али спадају у једну од категорија питања изнад.
Питање 1
Која вредност се налази у регистру R1 након извршавања дате секвенце асемблерских инструкција? Одговор унети према формату неозначених хексадецималних литерала у C програмском језику ширине 32 бита.
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
Приказ очекиваног формата одговора за произвољно одабрану вредност 1 јесте:
0x00000001
Одговор: 0xFFFFFFFE
Питање 2
Која вредност се налази у регистру R1 након извршавања дате секвенце асемблерских инструкција? Одговор унети према формату неозначених хексадецималних литерала у C програмском језику ширине 32 бита.
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
Приказ очекиваног формата одговора за произвољно одабрану вредност 1 јесте:
0x00000001
Одговор: 0x00000004
Питање 3
Поставка је иста као у четвртом задатку из августа 2022. године, али reset_handler изгледа овако:
reset_handler:
nop
nop
svc 0
nop
infinite_loop:
b infinite_loop
Одговор: 0x0000000B
Објашњење: Слично као у поменутом задатку, само што се овде окине изузетак типа SVCall позивом инструкције svc, и број тог изузетка је 11.
Питање 4
Колика је максимална радна фреквенција (HCLK) микроконтролера STM32F103R6 уколико се користи HSE осцилатор који на свом излазу производи сигнал такта фреквенције 8MHz? Одговор унети у мегахерцима без навођења ознаке јединице.
Одговор: 72
Објашњење: Као што пише на фигури са стране 93 од STM32F103 Reference Manual, HSE такт може проћи кроз PLL који може да његову фреквенцију помножи до 16 пута, али је максимална фреквенција HCLK 72MHz, што је мање од 128MHz колико би иначе могло да буде.