As I spend a lot of my time talking about embedded software via a variety of media – conferences, articles, Web seminars, this blog are examples – I frequently get emails requesting copies of materials or posing questions. All of this communication is very welcome and I do my best to respond promptly and, where I can, usefully.
If I think a question might be of wider interest, it seems only logical to share it here. I recently heard from Vahid Montazeri, who was asking about Android …
Here is Vahid’s question:
I watched your web seminar on internet. I want to write a real time audio processing application on cell phone. But it seems that android can not support real time signal processing. (see http://code.google.com/p/android/issues/detail?id=3434). In fact it has a latency. I want to know your opinion about this, how do you think? Can we for example change the linux kernel to overcome this issue? How do you think about other OSs like windows mobilw or symbian or iOS?
And this is my response:
I am a little confused about what you want to do. Surely if you are writing an app for smart phones, you have no opportunity to modify the OS?
None of the smart phone OSes are real time. Although you could – in theory – modify the Linux kernel under Android, that would probably make the system incompatible with standard apps, which would make its use illogical.
There are plenty of apps that do handle audio processing under Android etc. – Shazam is a good example. I guess it depends upon what you really want to achieve.
Can you not simply use a real time operating system [RTOS]?
This is really just an illustration of a bigger issue: using the right embedded OS for the right application. For many purposes, Android is an excellent choice, particularly if you need to support the post-deployment installation of apps. But for a real-time application, it is not really a good option at all and a true RTOS, like Nucleus, makes much more sense.