FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [April 2013 Threads]
Hi all,
whilst analyzing my software i found something that concerned me.
I was wondering why the priority of the control-task is set back at this point in time.
But first things first.
The image below shows a part of a trace captured with percepio. There are no events hidden.
There are mainly three active tasks.
- Display (Priority 1)
- Radio (Priority 2)
- Control (Priority 3)
To share some resources with tasks (some were not active during the capture) there are mainly two mutexes:
- SPI Mutex
- Radio Mutex
Any task communicating with the display has to have the SPI mutex first.
Any task communicating with the radio needs to get the Radio mutex and then the SPI mutex.
Even though it isn't very pretty the control-task attempts to get the Radio-mutex and blocks.
This leads to the inheritance of the priority of the Radio-task, which has the radio mutex during the whole capture.
Somewhat later the priority of the radio-task is returned to its original priority (2).
This right after the radio-task returns the other mutex (SPI).
I cannot see any reason why this should be. The Radio-mutex is still owned by the radio-task.
Thanks for any idea, I'm quite confused right now...
Also should to my opinion the control-task get active if the priority of the radio task was actually returned to 2.
The priority inheritance mechanism is very simply and does not stack inherited priorities - it assumes only one mutex is held at a time.
Regards.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.