First Java support for a DSP core?
Every family of DSP chips is quite different from every other, memory architecture and pipelining is peculiar when compared to traditional microcontrollers. DSPs are generally RISC machines highly optimized for Digital Signal Processing (FFTs, image manipulation, telcom data streams, realtime video and digital audio codecs, etc). All of this conspires to make DSP one place where I thought Java might never go. But apparently that is all about to change.
These abbreviations may not be familiar to you all. LSI Logic is a chip manufacturer. RTJ here is *not* "Real Time Java" but "RTJ Computing", of Perth, Australia, who have ported their cleanroom simpleRTJ Java virtual machine to the ZSP G1 family of DSP cores, which execute up to 960 MIPS. The G2 cores are about twice as fast, but this release doesn't mention Java support for them. Oddly, (at least on 2005 July 21) the ZSP Partners page mentions nothing about this, and RTJ Computing isn't listed as a partner. RTJ's website does list a ZSP board on their showcase page, referencing a ZSP 402ZX development board. LSI Logic responded to my email about all this by saying "RTJ has created a Java virtual machine to emulate all of our G1 (first generation) DSP embeddable cores â€“ the ZSP Neo, ZSP200 and ZSP400. Please contact them directly for any sort of SW development kits or evaluation tools". That reply raises more questions than it answers - the JVM emulates the ZSP hardware rather than executing on it? This would be a question for RTJ... I'll ask and update this blog as appropriate.
In any case, this is potentially exciting news because programming DSPs could certainly benefit from any useful progress towards making code more reliable, standardized and portable. "Useful" is the keyword here, because the nature of DSP makes much of its coding arcane, and it's not clear how useful a highly-abstracted OO language like Java will fit. Part of the dark side of embedded Java now is that the interesting bits of code - where it starts to touch the so-called "real world" often is handled by vendor- and application- specific libraries or native methods. These bits tend to be hard to reuse, are often not at all portable to other hardware, and frequently comprise a significant portion of the application code.
In other words, making a modern, object-oriented, general-purpose, abstracted programming tool for DSP use is not a trivial task. I hope this new effort achieves a great deal of success. I'd love to hear from anyone with hands-on experience with this new tool, or other similar approaches.