DM320 Platform development
From The Neuros Technology Wiki
This page discusses information about the development of the DM320 Platform, the combination of hardware and software that forms the core of Neuros Technology's 2006-2007 product lineup. This page is useful for those who wish to participate in the development process, contributing features, fixes, or ideas to the platform as a whole; it's also an excellent starting place for those wishing to work on one specific platform, because much of this code is shared. It is not intended for users -- instead, we recommend you visit the Product Lineup.
Firmware and Software
The DM320 Platform includes a feature-complete embedded Linux environment, with a standard set of tools across the entire product range. The Neuros Toolkit provides everything needed for user interaction, multimedia playback, and hardware support; in effect, programming applications and libraries for an embedded system becomes as simple as writing a desktop application. Newer firmware has a different design based on Trolltech Qt4. The graphic & description above represents the original firmware codenamed TORFU. Read more about GUI toolkit and firmware changes on the OSD 1.0 Firmware page.
Proprietary and Closed Source Elements
As you can see from the diagram above, some parts of our system are not Open Source Software. We are forced to distribute them as binaries due to agreements with the vendor. It was deemed a reasonable tradeoff to bring the product to market at all.
Some parts may be rewritten cleanly as OSS, but others are quite hard to get rid of. We think it is very important for many people to know immediately what these parts are, so that they can make more informed decisions about the platform and their interest in hacking on it.
Here's a brief rundown of what belongs to the non-open category, and what may be opened:
- All video codecs
- they run on the DSP and they are an huge amount of effort to re-write and maintain, which means it's probably never going to happen. There's also no gcc for this DSP, only binutils.
- All audio codecs
- these run on the ARM, so it might be possible to use existing OSS codecs here. Work is in progress to open this part as much as possible.
- Codec wrapper plugins
- To load codecs on the DSP and to route data to them, we have an OSS plugin-based layer framework with well defined APIs that allows to manipulate the closed source codecs from Linux. However the plugin wrapper over the closed source codecs is closed source too, for obvious reasons.
- Some kernel modules
- Real time clock - this needs to stay closed for some half-bogus DRM approval stamp. Sorry.
- Framebuffer - it's closed and pretty non-standard. Some efforts are being made to rewrite it as OSS by members of the community.
- Audio ADC/DAC (AIC23)
- Video ADC (TVP5150) - There's some preliminary work on this by a community member to rewrite it.
Neuros Media Framework
Main article: Multi-media framework API:architecture
The Framework controls all media playback on the device. The Media Server interfaces with the Plugin API, automatically creating the necessary "plugin graph" using the plugins available to the system, and controls playback on a low level. The Media Client is only required to connect to the server and request playback of a particular stream.
It is important to note that that the plugin API is not intended to support extensions to the main application. Those are called, uh, "extensions".
In Later versions of the firmware Neux and the main application layer was replaced by Qt4. The Nuex based firmware is referred to as "TORFU", the Qt4 based firmware referred to as "Arizona".
Main article: Neuros Widgets
The Widgets are the primary interface between an application and its user. The widgets will be specifically designed for an embedded player, enabling a uniform method of interacting with the user over a variety of applications.
DSP Codecs and Licensing
Main article: DM320 Platform licensing issues
In order to do real-time video decoding and encoding, and still be able to release the player in a reasonable time-frame, Neuros Technologies chose to license some closed-source libraries to use on the DSP portion of the DM320. These codecs are buried beneath the plugin API, so the developer never needs to link to closed-source code directly. However, including any closed-source libraries has sparked a lot of concern throughout the community. It is important to understand the implications of using these codecs, and alternatives for overly-strict licenses. Become informed.
Additional Proposed APIs to DSP
These are additional API that have been proposed/requested for more access to the DSP side. As noted above, much of the DSP is under NDA, so we provide API's allowing open source developers to be untainted, clean-room style from the proprietary stuff. See 6/13/06 API discussion IRC conversation for discussion between Rasterman (of Enlightenment) and Bob Faskos. Complete meeting log is here
Peripherals and Interfaces
Main article: DM320 Platform accessories
Most DM320-based boards are equipped with some form of USB Host, be it an implementation of USB-OTG or USB Hi-Speed support. Being based on Linux, we have a fairly complete set of drivers that need only be ported -- and perhaps not even that. For USB devices, a good rule of thumb is, "If it works on Linux, it might on the DM320."
The below is missing some characters, you can download the PDFs on OdNT Node 271
Inputs and Outputs
As a lot of development is still under way, the information in this section will change as we perfect each product. However, for a good idea, check out the developer samples, see below. A somewhat outdated table of features is hosted here.
TI DM320 Multimedia SoC
The Texas Instruments DM320 series DSP/ARM CPU is the heart of the DM320 platform. This system-on-a-chip will do almost all processing, from digital video encoding to retagging your music files. The SoC is comprised of an ARM926EJ core and a TI C54x DSP core. The platform will support the DM320's High Performance mode of operation, pegging the maximum ARM clock at 203MHz, with a DSP rated in excess of 120MHz.
In addition, the SoC also contains dedicated hardware acceleration for video encoding and decoding, making it capable of achieving DVD-like quality playback as well as high quality, D1 resolution video encoding using MPEG-4.
Texas Instruments is, as usual, rather coy with its release of public documentation. However, the ARM core is, after all, an ARM core, and those are very well documented. The DSP side of the chip can be largely ignored; although it will do most of the multimedia applications, it will do so with code licensed from Ingenient Technologies, and this black-box code will be exposed to community developers through a well-documented Neuros API. What little is available is posted below. If you find more documentation, please add a link.
- A brief description of the DM320.
- The TMS320DM320 Technical Reference Manual Set (sourced from here - thanks Rick!):
- A datasheet for the TMS320VC5416 Fixed-Point Digital Signal Processor.
- A brochure for the 2005 TI Streaming Media lineup (PDF).
- A datasheet for Monterey Linux, an Embedded Linux platform, for the TI 320 and 342 (PDF).
- A list of tech docs on the TMS320C54x from TI.
- The TMS320C54x DSP Reference Set:
Prior to releasing products, developer boards were released to a select few Neuros hackers. We made these "developer samples" available to the public. The first version of these was referred to by many docs as "The MPEG-4 Recorder III" later replaced by the name "Neuros OSD" and they can be seen here. It was expected that in July '06 developer samples of the 442v2 will become available. The project was dropped in favor of full focus on the Neuros OSD.