FreeRTOS: Improvements #55
Labels
No Label
API Change
Breaking API Change
bug
build
cosmetics
Documentation
duplicate
feature
help wanted
hotfix
invalid
question
Refactor
Tests
wontfix
No Milestone
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: fsfw/fsfw#55
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Issue for several freeRTOS improvements:
Semaphore class for FreeRTOS.
Has been implemented. It would make sense to create a Semaphore factory, interface, and implement it for the other OSes as well. There are binary and counting semaphores, for now I implemented the binary semaphore. Tied to the new TaskManagement helper functions (see 3.)
ISR calls for Message Queue
Simple version implemented. Requires switchting contex manually.
Tied to new TaskManagement functions (3.).
Also implemented a new cast for the xQueueSendToBack: Uses a cast to QueueHandle_t instead of void* , new FreeRTOS functions don't use a void* cast anymore but a special Queuedefinition struct pointer cast. The QueueHandle_t cast should be compatible to older FreeRTOS versions as long as as the respective downwards compatibility configuration define in the freeRTOS config file is set to one
Task Management Helper functions.
THere is no reliable way in FreeRTOS to get the current task context (ISR or Task) for every architecture and some of those function calls are also architecture dependant, so a general way to get this context is to ask it from the developer. This is how ISIS does it.
Also see here:
https://stackoverflow.com/questions/58631246/freertos-why-to-call-taskyield-from-isr-method-within-the-isrhandler
UPDATE: The pull request does it like that now: function call is external and has to be implemented by developer when starting new freeRTOS project. This generally involves looking for the function call in the partmacro.h file. This is small hassle but keeps the osal separated from the architecture.
The TaskManagement helpers also are wrappers to ensure abstracton of certain OSAL features:
FreeRTOS: Task Contextto FreeRTOS: Improvements