Cortex Flashcards
Hva står ARM for?
Advanced RISC machines
Cortex-M mikroprosessorer har alle en (64, 16, 32, 8)-bits arkitektur. Hva er korrekt svar?
32-bits
Hvilken Cortex-M prosessor har fokus på lavt strømforbruk og lav kostnad? (M35P, M7, M55, M4, M0+, M3)
M0+
Register SP er forkortelse for (Soft Pointer, Stack Pointer, Significant Pointer, Set Pointer). Hva er korrekt svar?
Stack Pointer er korrekt, da SP i ARM-arkitekturen refererer til Stack Pointer-registeret som brukes til å administrere stakken.
Cortex-M mikroprosessorer bruker et Thumb-2 instruksjonssett. Hva betyr dette?
(En blanding av 32- og 64-bits, en blanding av 8-, 16- og 32-bits, en blanding av 8- og 16-bits, en blanding av 16- og 32-bits)
En blanding av 16 og 32-bits arkitektur
Hvor stort er adresserommet til Cortex-M mikroprosessorene?
(2 GB, 8 GB, 4 GB, 1 GB)
4 gb
Hvilken Cortex-M prosessor er designet for applikasjoner innen kunstig intelligens og maskinlæring?
(M23, M33, M85, M0, M7, M3)
M85
Register LR er forkortelse for (Leave Register, Last Register, Load Register, Link Register). Hva er korrekt svar?
LR står for Link Register, som holder returadressen under kall til funksjoner (subrutiner).
Hva er NVIC forkortelse for? (Next Vector Intermediate Controller, New Vector Inter Collector, Nested Value Internal Computer, Nested Vector Interrupt Controller)
NVIC står for Nested Vector Interrupt Controller, som håndterer avbrudd i ARM Cortex-M-mikroprosessorer.
Hva er adressen som vises av PC-registeret under eksekvering?
(Antall instruksjoner i instruksjonskøen.
Adressen til den eksekverte instruksjonen pluss 4.
Adressen til neste instruksjon, antall kjørte programmer).
PC (Program Counter) viser adressen til den gjeldende instruksjonen, med en forskyvning på 4 for å reflektere pipelining.
Hvilke kjøremoduser har Cortex-M mikroprosessorene?
I Cortex-M mikroprosessorer kjøres betjeningsrutiner i “Handler Mode,” og prosessoren kan settes til uprivilegert “Thread Mode.” I “Handler Mode” har den alltid privilegert tilgang.
Hva gjør NVIC for Cortex-M mikroprosessorer?
NVIC prioriterer og håndterer avbrudd, og lagrer en avbruddsvektor i LR under avbrudd.
Hva er formålet med vektortabellen i Cortex-M mikroprosessorer? Velg riktig påstand(er).
1. NMI_Handler kan ikke maskeres bort.
2. Reset_Handler har høyest prioritet.
3. PendSV_Handler brukes til standardisert avslutning av unntak.
4. UsageFault_Handler kjøres når prosessoren oppdager en feil i minnehåndtering.
5. HardFault_Handler håndterer alle unntak som ikke har en spesifikk unntakshåndterer definert.
6. Vektortabellen kan omdirigeres ved hjelp av NVIC.
Alternativ 1 (NMI_Handler kan ikke maskeres bort): Dette er korrekt. NMI (Non-Maskable Interrupt) er en avbruddskilde som ikke kan blokkeres eller ignoreres, og dette reflekteres i vektortabellen.
Alternativ 2 (Reset_Handler har høyest prioritet): Korrekt. Reset_Handler er den første rutinen som kjøres etter en oppstart eller omstart og har høyest prioritet i systemet.
Alternativ 3 (PendSV_Handler brukes til standardisert avslutning av unntak): Korrekt. PendSV (Pendable Service Call) er en lavprioritetsavbrudd som brukes for kontektsbytte eller andre avslutningsoperasjoner.
Alternativ 4 (UsageFault_Handler kjøres når prosessoren oppdager en feil i minnehåndtering): Delvis korrekt. Dette gjelder, men mer spesifikt for feil som misbruk av instruksjoner eller tilgang til ugyldige områder i minnet. For minnehåndtering alene brukes MemManage_Handler.
Alternativ 5 (HardFault_Handler håndterer alle unntak som ikke har en spesifikk unntakshåndterer definert): Korrekt. HardFault brukes som en generell avbruddshåndterer når spesifikke unntak ikke har definert sin egen.
Alternativ 6 (Vektortabellen kan omdirigeres ved hjelp av NVIC): Korrekt. NVIC kan brukes til å omdirigere eller prioritere vektorer ved å endre på adresser i vektortabellen.
Spørsmål: Hva skjer når en tråd venter på en semafor i CMSIS-RTOSv2?
Når en tråd venter på en semafor, settes den i en ventetilstand av operativsystemet (CMSIS-RTOSv2) inntil semaforen gir tilgang (et “token” blir tilgjengelig). En semafor brukes til å styre tilgang til delte ressurser eller synkronisere tråder.
Hva er et buffer, og hva brukes det til i programmering?
Et buffer er et midlertidig lagringsområde i minnet som brukes til å holde data mens de flyttes mellom to steder, for eksempel mellom maskinvare og programvare.
Buffere brukes for å håndtere forskjeller i hastighet eller arbeidsbelastning mellom systemkomponenter.
Eksempel: I en ADC (Analog-to-Digital Converter) med DMA (Direct Memory Access) brukes et buffer til å samle inn digitaliserte verdier fra ADC-en før de behandles av CPU-en.
Et buffer kan være sirkulært (roterer dataene) eller lineært (lagrer data sekvensielt).
Spørsmål: Hva er “duty cycle” til et PWM-signal med en lavtid på 0,3 sekunder og høytid på 0,2 sekunder?
40%
“duty cycle” = (Høytid / Total periodetid) * 100 = (0,2 / 0,5) * 100.
Hva er formålet med lampSemaphore i lamp_control.c?
Den begrenser hvor mange lamper som kan blinke samtidig. Antallet settes ved initialisering av semaforen i BlinkControlInit()
Hvordan håndteres knappetrykk i switch_monitor.c?
Når en knapp trykkes, genereres en melding med pin-nummer og tilstand som legges i meldingskøen. Event-flaggene settes basert på hvilken knapp som trykkes
Hva er ADC, og hva står forkortelsen for?
ADC står for Analog-to-Digital Converter.
Det er en enhet som konverterer et analogt signal (som spenning) til et digitalt signal representert med binære verdier.
ADC brukes for å gjøre analoge verdier forståelige for digitale systemer, som mikrokontrollere.
Eksempel: I en STM32-mikrokontroller brukes ADC til å lese verdier fra sensorer og konvertere dem til digitale data for videre behandling.
Viktige parametere for ADC inkluderer oppløsning (f.eks. 10-bit, 12-bit) og referansespenning (VREF+), som bestemmer nøyaktigheten og området for konverteringen.
Hva gjør HAL_ADC_Start_DMA i my_adc.c?
Den starter ADC med DMA-støtte for å fylle et buffer kontinuerlig med ADC-verdier
Hvordan håndterer MyHardFault_Handler i my_hardfault_handler.c en hardfault?
Den blinker en rød LED og teller ned før den utfører en systemreset med NVIC_SystemReset()
Hva er et PWM-signal?
Et PWM-signal (Pulse Width Modulation) er et digitalt signal der pulsbredden (høy andel tid i forhold til lav andel tid) justeres for å kontrollere mengden energi som leveres til en last. PWM brukes ofte til å styre motorhastighet, lysstyrke på LED-er, eller som en analog signalemulering ved å variere pulsens varighet i et digitalt signal.
Hva brukes funksjonen MyADC_PrintCalibratedVREF til i my_adc.c
Den beregner og skriver ut den målte inngangsspenningen basert på ADC-data og en referansespenning
Hva er DMA, og hvordan brukes det i mikroprosessorer?
DMA står for Direct Memory Access. Det er en teknologi som gjør det mulig for periferiutstyr(Hardware) som ADC, UART eller SPI å overføre data direkte til eller fra minnet uten å belaste CPU-en.
I mikroprosessorer som STM32 brukes DMA for å avlaste CPU-en ved store datamengder, slik at CPU kan håndtere andre oppgaver.
Eksempel i kode: I my_adc.c brukes HAL_ADC_Start_DMA til å konfigurere ADC for automatisk å fylle et buffer med målte verdier uten CPU-intervensjon(my_adc).
Hva gjør osEventFlagsWait i funksjonen BlinkControl i lamp_control.c?
Den venter på at et spesifikt event-flag blir satt før den starter blinkingen av en bestemt lampe. Event-flagget indikerer at en tilknyttet knapp er trykket(lamp_control).