Microchip AN1264 not using mutex

anguel78 wrote on Friday, June 24, 2011:


I am just wondering if there is any specific reason or advantage for using binary semaphores instead of mutexes in AN1264 from Microchip. In most cases I think a mutex would be more appropriate.


rtel wrote on Friday, June 24, 2011:

I am not the application note author, so can only speculate.  If the semaphores are used for mutual exclusion, then it might be better to use a mutex, I would agree.  The only real difference between the two is that a mutex includes a basic priority inheritance mechanism, whereas binary semaphores don’t.


richard_damon wrote on Friday, June 24, 2011:

My guess, based on the fact that while they are using FreeRTOS as the example,  they also want to be as general as possible, would be that since a Semaphore is a simpler object, and is available in more RTOSes than a mutex, it makes there example more generic. A Mutex is a Binary Semaphore with additional features to specialize it for mutual exclusion, which for FreeRTOS means adding priority inheritance.

Reading over their usage, a mutex really is the proper choice, as they are using them mutual exclusion on a resource, which is what mutexes were developed for.

anguel78 wrote on Friday, June 24, 2011:

Thanks for the help! Portability looks like a good reason. Or maybe the application author simply used to use semaphores. As far as I know, mutexes were introduced later in FreeRTOS. Or could maybe memory usage or performance be also a reason for his choice?