BeagleBox: Adjusting the design, learning about SGX and DSP


I'm working two main issues at the moment:  stripping Matchbox to get a new BUI core and working on building and packaging the SGX SDK drivers.  The former is going well.  I've stripped session management and gconf already and checked those in.  I've got themes stripped down so that the build is just what it would be if STANDALONE were used with configure.  However, I still need to properly strip the standalone configure options and verify that before checking in the changes.  In my developer tree the build is now a minimal window manager with only simplified window decorations.  The goal here is to strip the window manager down to a minimalist environment before trying to add pieces back in and start work on the panel.

The sgx SDK drivers are a bit of a different story.  There is a lot of information available from the TI and eLinux.org wikis about how to work with this.  And while it's all fairly well written I found it difficult to determine exactly which kernel to use as a baseline. The release notes for the -07 release say that the AM35x/OMAP25x PSP (version -06) should be used.  The psp is the Platform Support Package and includes a patched version of the kernel along with a collection of the patches applied to the kernel source (along with other things like a prebuilt u-boot image and root filesystem).  The kernel source is the 2.6.32 kernel from the tmlind git tree with a specific git id.  The instructions say to use the omap3_evm_defconfig target, but for the BeagleBoard it seems more appropriate to use the omap3_beagle_defconfig target.

If we pull the proper git source we still need to apply the patches.  To get these you have to unpack the SGX SDK, then unpack the kernel source packages.  Only then can you apply the patches to the tree (assuming you don't use the kernel source that is already patched in the SGX SDK).

I've updated the build in my developer sandbox to test this and it works okay though none of it is tested on the board yet (still don't have one – mid-September for that purchase).  I still need to add support for unpacking the patches.  By not relying on the patched kernel source in the SGX SDK we can keep aware of how these pieces are being pulled together.  Remember, this project is also a learning process.

From SGX to dsp

While doing all that work on the SGX SDK to merge it into the build I downloaded and read Introduction to creating 3D UI with BeagleBoard, a paper on that describes the SGX SDK and how to use it with the BeagleBoard.  Something it also describes is the C64+ DSP.  This is the component of the omap processor responsible for hardware accelerated video playback.  This was interesting to read since, while I'd heard about the DSP, I wasn't aware of it's association with video playback.

What this means is that the SGX support will provide us some opengl support for use with gnash, which provides our flash player along with providing us some options for eye candy in the UI.  But other video playback, such as H.264, will be through the DSP. Without the DSP we can still play video but only through the processor itself using software decoding. That potentially limits the size and quality of the videos we'd be able to play.

So I have to integrate the DSP support into the build too. Along with drivers there is a user space component based on the gstreamer infrastructure.  Those will also have to be integrated.

And that meant I had to revisit the software stack in the BeagleBox Design.  I've rebuilt the image depicting the stack.  But I still need to update the Design page to reflect the changes.  And then determine what that means to the Architecture.  But at least I now have a much better idea of what I need to integrate from off-the-shelf components and what those components should provide.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.