DM320 Platform development

From The Neuros Technology Wiki

Jump to: navigation, search
Sit3-shine.7.gif

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.

Contents

Firmware and Software

Working diagram of the relationship between portions of the Neuros toolkit. 27 Apr 2007, this will be re-drawn soon, there are some details to fix

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".

Neuros Widgets

Circle.jpg
NOTE: THIS PAGE IS OBSOLETE. IT MAY HAVE HISTORICAL SIGNIFICANCE, BUT IS OUT OF DATE OR NO LONGER PERTINENT.

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."

Block Diagram

The below is missing some characters, you can download the PDFs on OdNT Node 271

http://wiki.neurostechnology.com/images/e/ee/R3-block-diagram.jpg

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.

Documentation

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.

Developer Board

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.

Personal tools