Colin Walls, Mentor Graphics Embedded Systems Division
Embedded considerations for using USB in a design are split between need to implement functionality as a peripheral device, a host, or both. This was addressed in the On-The-Go (OTG) supplement to the USB 2.0 specification.
In C and C++, it can be very convenient to allocate and de-allocate blocks of memory as and when needed. This is certainly standard practice in both languages and almost unavoidable in C++. However, the handling of such dynamic memory can be problematic and inefficient. For desktop applications, where memory is freely available, these difficulties can be ignored. For real-time embedded systems, ignoring the issues is not an option.
This paper takes a look at the design of Android, how it works, and how it may be deployed to accelerate the development of a connected device.