I have made a code using RTOS.There are 12 Tasks. 3 queues 16 semaphores(For passing controls between tasks ) yesterday the code with 8 tasks and 10 semaphores was running.There may be some problem in the newly added code. But the problem is that a semaphore passed is not recieved. Ram in LM3S811 is 8192KB. Can you tell me the exact significance of #define configMINIMAL_STACK_SIZE( ( unsigned portSHORT ) 64 ) #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 7000 ) ) #define configMAX_TASK_NAME_LEN ( 3 ) as changing these may help.
See http://www.freertos.org/a00110.html and http://www.freertos.org/a00111.html. If you ran out of heap you would not be able to create the semaphore – are you checking the return value when the semaphore is created. Once the semaphore is created successfully it should not make any difference. It looks like you are not using the latest FreeRTOS.org release. This does not matter in this case, but in later releases I changed these definitions to get around the 16K RAM+ROM limit imposed by the eval versions on the Keil tools. Instead of allocating a 7KByte array for the heap I just created a pointer to the end of the used memory. While this has the advantage of taking 7K from the RAM+ROM limit, it has the disadvantage of not being able to determine when the heap was exhausted making error detection harder. Regards.