I am trying to come up with an overview of a common software architecture, which I would like to keep reasonably generic. That being said, it is intended for embedded systems, specifically mobile (cell) 'phones.
Irrespective of the actual software project, there are certain common functionalities which should be present in most systems. The operating system (currently VxWorks, but that could change) should take care of things like message passing, process scheduling, timers, etc. However, before beginning a project, it might be nice to have a skeleton which sits above that, as a sort of scaffolding upon which to build development.
I am thinking, for instance, of a decent memory management system, with defragmentation, checking for leaks, double-free and the like, some debug trace logging and so on.
Can anyone suggest anything else, of a good web site or book discussing this topic? If anyone knows of any freely reusable software, that would be a great bonus.
If not, I was thinking of going C++ (not meaning to re-ignite the perennial C vs. C++ debate), so that anything that I missed could be easily added into base classes later. I rather thought hat I might base upon "Design Patterns" by Gamma, et al
Does anyone have any suggestions for finding or designing a decent framework which could be used to hang each new embedded project off of?
Thanks very much in advance