For many years I've been using Keil/ARM's C compiler. Recently we started using the so called 'middleware' which was, to put it at its best, a rather mixed experience.
They have just released (couple of months ago) version 5 of their tool set which includes a software component packaging system and the full ARM CMSIS API with drivers for many processors.
The CMSIS API is rather limited but we gave it a good try and have developed a real system with it.
We had seen the odd hard fault and today pinned it down - the UART driver is GARBAGE ! It uses a circular buffer and will fall over (hard fault the processor) every time an incoming message wraps round the end of the buffer. We didn't see it at first because the device sending data happens to use 8 byte packets but as soon as we started real testing for exceptions the fault was obvious.
In this case we were able to extract the offending driver from the packaging system, work out what was wrong and fix it but our confidence level in code supplied by Keil/ARM is now zero.
I'm ready to dump it.
So, I'm looking for suggestions - it would be nice if we could still