Semaphores, another important contribution by E. W. Dijkstra,
can be viewed as an extension to mutex locks. A semaphore is an object
with two methods Wait and Signal, a private integer counter and a
private queue (of threads). The semantics of a semaphore is very simple.
Suppose S is a semaphore whose private counter has been
CodeSourcery give you free toolchain but you have to pay for debugger and Eclipse IDE support. FSF is free (as in freedom !)
Some general tips for reducing the Code size for firmware.
1) Use the Map file.
Configure the tool to generate a MAP file. Most linker/locators will generate a fairly detailed map file, which you can use to hunt down the biggest targets for code reduction.
2) Use compiler optimization.
1) GNUARM toolchain.
http://www.gnuarm.com/
2) Rowley provides a professional quality IDE,Debugger for arm GCC toolchain at a very
reasonable price.