Category: FreeRtos

Mine sider

FreeRtos – TMR SVR stack overflow

I dag havde jeg et problem med jeg fik et stack overflow crash. Det viste sig, at det var et TMR SCR stack overflow. Efter lidt søgning viste det sig, at man bestemmer stack størrelse i freeRtosConfig.h. Jeg øgede Timer stack størrelsen til 3 gange minimal stack størrelse med nedenstående i freeRtosConfig.h. #define configTIMER_TASK_STACK_DEPTH            ( configMINIMAL_STACK_SIZE *…
Read more


April 30, 2018 0

STM32F7 – HAL – Interrupt handling

Når man bruger CubeMx til at lave den basale kode får man automatisk genereret en interrupt handler for External Interrupts, som vist nedenfor.   /** * @brief This function handles EXTI line0 interrupt. */ void EXTI0_IRQHandler(void) { /* USER CODE BEGIN EXTI0_IRQn 0 */ /* USER CODE END EXTI0_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); /* USER CODE…
Read more


April 22, 2018 0

UNI/O med STM32F7 og FreeRtos

For at kunne kommunikere med en UNI/O eeprom med en STM32F7, som kører FreeRtos, har jeg lavet et lille test program. Jeg har taget udgangspunkt i et eksempel skrevet af Stephen Early (Thanks Steve 🙂 – https://github.com/martmaiste/UNIO/blob/master/UNIO.h )   /* Copyright (C) 2011 by Stephen Early <steve@greenend.org.uk> Permission is hereby granted, free of charge, to any…
Read more


March 11, 2018 0

FreeRtos – Find ud af om man er i handler mode

I FreeRtos er det irriterende, at man skal bruge to forskellige måder til at ligge noget i en kø, alt efter om man er i en taks eller i ISR. Hvis man bruger CMSIS_OS sammen med FreeRtos, findes der faktisk en funktion, der kan fortælle om man er i ISR eller TASK. Desværre er den…
Read more


March 3, 2018 0

FreeRtos – TaskNotify eller Semaphore

Jeg har altid lært, at man skal bruge semaphores til at synkronisere mellem threads i et multithreaded system, men er nu blevet opmærksom på at FreeRtos har noget, der hedder Tasknotify. TaskNotify kan bruges i langt de fleste tilfælde, hvor man ville ha brugt en semaphore. Jævnfør FreeRtos’s egen dokumentation bruger TaskNotify’ing mindre RAM og…
Read more


January 24, 2018 0

Hvordan debugger man “HardFault_Handler” med FreeRtos og ARM Cortex-M

Når man arbejder med FreeRtos sker det (ret ofte), at man får et system crash, der ender i HardFault_Handler handleren, og så vil man jo gerne vide, hvad der gik galt. Dette kan bedst gøres ved at undersøge indholdet af Cortex -M registrene. Det kan gøres ved, at indføre nedenstående kode i HardFault_Handler  funktionen. Det mest…
Read more


January 17, 2018 0

FreeRtos – xQueueSendToFrontFromISR – assertion failure

I dag havde jeg er problem med at sende data til en FreeRtos queue fra et interrupt kald. Problemet var, at når jeg kaldte xQueueSendToFrontFromISR crash’ede systemet med en assertion. Det viste sig at FreeRtos ikke tillader at have en interrupt med en højere prioritet end configMAX_SYSCALL_INTERRUPT_PRIORITY, så problemet blev løst ved at sætte interrupt prioriteten.…
Read more


January 9, 2018 0

Lav et Ethernet loopback med FreeRtos ogLWIP

Vores produkt har et Ethernet interface, og vi har et ønske om at kunne lave en selftest af dette interface ved, at lave et loopback i PHY’en, så sende en pakke på interfacet, og checke at vi modtager den samme pakke. Vi bruger LWIP og FreeRtos, og nedenstående kode viser hvordan en sådan selftest kan…
Read more


November 26, 2017 0

Cache coherence problem med STM Cortex M7 processor

Selvom jeg har arbejdet med embedded systemer i mange år, kan jeg stadig støde på ting jeg ikke har prøvet før. Et problem jeg ikke havde stødt på før er et problem, der hedder ”cache coherence”, og som jeg lige har brugt laaaang tid på. Problemet viste sig ved, at mit system pludselig begyndte at…
Read more


November 18, 2017 0

DMA overførsel via FreeRtos queue systemet fra ISR routine.

På mit arbejde har jeg længe haft et problem med, ikke at kunne få kald til FreeRtos queue systemet til at virke fra en  ISR routine, når jeg brugte DMA overførsel. Problemet var, at min DMA overførsel gik i stå efter et lille stykke tid. Jeg har levet med det, og lavet en work-around, hvor…
Read more


August 7, 2017 0