nobody wrote on Wednesday, June 07, 2006:
Hi!
I have some doubts on semahore use for lock a resource (EEPROM).
I try to define the semaphore, let’s say in eeprom.c and initialize it:
static xSemaphoreHandle xSemaphoreEEPROM;
char eepromInit(void)
{
vSemaphoreCreateBinary( xSemaphoreEEPROM );
if( xSemaphoreEEPROM != NULL ) return 0;
return 1;
}
Then, can I have two files, each one with one different task that can test the semaphore xSemaphoreEEPROM before addressing the EEPROM, like:
…
if( xSemaphoreTake( xSemaphoreEEPROM, ( portTickType ) timeout ) )
{
/* Call function to write data on eeprom… */
xSemaphoreGive( xSemaphoreEEPROM );
}
…
This can lock the resource, or the last code must be included in eeprom.c like a driver:
char writeEEPROM (int addr, int n, char *data, int timeout)
{
if( xSemaphoreTake( xSemaphoreEEPROM, ( portTickType ) timeout ) )
{
/* Write data… */
xSemaphoreGive( xSemaphoreEEPROM );
}
}
Please give me some hint about this.