Help - play video on Gumstix

Jan 25, 2009 at 2:52 PM
In a 20 year career in software, I've never posted this - help!

ALL i need to be able to do is play a video file full screen on the Gumstix / Samsung LCD.

I am in the software field, but a nub at embedded. I have spent many many evenings trying, searching, messing, etc. and it's all been fruitless. Hence my post here. I promise that I'm so far from the person who posts "lay it up for me", but I'm at a point of massive frustration now, and am doing that!

(I'm Windows through and through and fudged around the Linux path for this for many many long evenings too, and it's a dead end for me there)

I've got e-boot on the Gumstix. I can boot the standard basic NK.BIN that comes with the SDK (v1.4 installed, as well as the emulator). I've installed a trial of Platform Builder with VS2005 on XP. And that's where I'm stumped - I can't put the pieces together in VS, build an OS image based on the BSP (I can't even see the BSP in VS), experiment with an image that includes Media Player, or whatever I need.

How can I get from where I am to where I want to be? Any help or suggestions would be great. Please bear in mind that to those experienced in PB, the documentation and resources are helpful but to those new to it (or at least to me), it appears to be really hard to get the right information. It doesn't have to be via PB ("oh, you idiot Beermat, FredSoft make a video player you can just stick on an MMC card and run on the supplied NK.BIN, it has all it needs in the install. Duh")

Any help would be massively appreciated!

Yours in extreme frustration,
Jan 25, 2009 at 5:09 PM
This is how I would proceed. To give you a clean starting point....
Remove everything from WINCE600 related to gumstixIII i.e. the GumstixIII_BIN_1 under the OSDESIGN and the GumstixIII_BIN under the PLATFORM tree.
Use Control panel and remove any previous Gumstix SDK. Remove anything left under the C:\Program Files\Windows CE Tools\wce600\GumstixIII_BIN SDK XXX
This completly removes the SDK.

Download and install the latest Gumstix SDK from this site.
Download and install the latest BSP and place BSP in PLATFORM directory and GumstixIII_BIN_1 example osdesign under the OSDESIGN tree.
Flash boot loader (from newly installed SDK folder) and place default nk.bin (also in SDK folder) on SD card.
Configure bootloader hardware settings and configure to boot from SD card.
Boot and verify default image boots correctly.

Build your version of the same default image by opening the default osdesign in Visual Studio and doing a "Retail" build. Make sure "Build image for Flash" is selected and Kitl and Debug is Unselected.
Build by using Clean and Sysgen from Advanced Build menu.
You should have a locally generated nk.bin as a result. Copy to SD card and replace the default image from the SDK.
Boot and make sure everything comes up. This image should be exactally the same with just the build dates different (see terminal screen douring boot).

Add the Media Player component (not included by default in example osdesign) and probably some codecs.
Do a Sysgen to regenerate image with added Media Player components.
Copy to card and replace old nk.bin.
Probably also want to put a .wmv test file on card also.
Boot, select media file and play!


Jan 26, 2009 at 2:27 AM

Thanks for taking the time for a prompt and informative reply, really appreciate that.

I did the PC cleanup, flashed the bootloader, set the hardware settings and booted from the default NK.bin without issue. I then moved all the folders to where you indicated.

In VS I couldn't see a 'Retail' in the Build Configuration Manager, only Debug and Release. I chose Release, and made sure the above options were checked/unchecked appropriately.

Didnt see a 'Clean and Sysgen' so I did 'Clean Sysgen' (this gave a build error, but not any details) and then 'Build and Sysgen', which lead to 85 warnings and 1 error.

In the build.log, at the end, is this. Could be related to the 85 warnings, but anyway:

ppp.exp : error LNK2001: unresolved external symbol AfdRasDeleteEntry
ppp.exp : error LNK2001: unresolved external symbol AfdRasDial
ppp.exp : error LNK2001: unresolved external symbol AfdRasEnumConnections
ppp.exp : error LNK2001: unresolved external symbol AfdRasEnumEntries
ppp.exp : error LNK2001: unresolved external symbol AfdRasGetConnectStatus
ppp.exp : error LNK2001: unresolved external symbol AfdRasGetEntryDevConfig
ppp.exp : error LNK2001: unresolved external symbol AfdRasGetEntryDialParams
ppp.exp : error LNK2001: unresolved external symbol AfdRasGetEntryProperties
ppp.exp : error LNK2001: unresolved external symbol AfdRasHangUp
ppp.exp : error LNK2001: unresolved external symbol AfdRasIOControl
ppp.exp : error LNK2001: unresolved external symbol AfdRasRenameEntry
ppp.exp : error LNK2001: unresolved external symbol AfdRasSetEntryDevConfig
ppp.exp : error LNK2001: unresolved external symbol AfdRasSetEntryDialParams
ppp.exp : error LNK2001: unresolved external symbol AfdRasSetEntryProperties
ppp.exp : error LNK2001: unresolved external symbol AfdRasValidateEntryName
C:\WINCE600\OSDesigns\GumstixIII_BIN_1\GumstixIII_BIN_1\Wince600\GumstixIII_BIN_ARMV4I\cesysgen\oak\target\ARMV4I\retail\ppp.dll : fatal error LNK1120: 15 unresolved externals

A lot of the warnings were like this one:

Warning 37 BUILD: [00:0000013263:WARNN ] File: C:\WINCE600\public\common\oak\lib\ARMV4I\retail\ddi_flat.def does not exist (2).  

Thanks for the help so far!

Jan 26, 2009 at 5:11 AM
Sorry for the typos ..ment release .. release and retail are sometimes used interchangeabily.
Only want to do "sysgen" or "clean sysgen" .. not a good practice to do "build and sysgen" ... see many online posts. will end up with a lot of warning like you show. 

Sounds like you are close.

Jan 27, 2009 at 12:10 AM
Ok, cleaned up, restored everything fresh and tried 'Sysgen' and also 'Clean Sysgen'. Both choices give me one non-descript error in VS (no warnings this time), and in the build log, the same 15 unresolved externals as above.
Jan 27, 2009 at 11:59 AM
The errors seem to indicate something wrong with the Point To Point Protocol of the RAS componet or its dependentices.
Check under Communication Services and Networking->Networking--Wide Area Network->Dial Up Netwotrking (RAS/PPP) for anything screwy.
You should have several setting automatically selected as part of the ActiveSync dependicy.
Could be several other things going on like corrupted or modified Public or Private tree components, bad or missing QFEs etc, etc.
Sometime just a good cleaning ... delete the RelDir and cesysgen directorys under the osdesign (OSDesign\GumstixIII_BIN_1)  as well as all the lib and target directories etc. Some people use a batch file for this.
Sometimes the build system will get out of sync and confused thinking a component is already built so it will save you time by not doing it again. When it comes link time it can't find the component or one of its dependices.

A good house cleaning and rebuild usually solves the problem.

Jan 28, 2009 at 4:42 AM
I would have posted a reply sooner.............but I was too busy watching a video on my Gumstix. Progress! Victory!

Your comment - a good house cleaning - got me thinking like the methodical pro that I once was and not the nub I've become :) I originally just installed the evaluation PB and tried to dive right in, got lost, and eventually posted here for help. After your instructions didn't work for me, I got to thinking - did I really pay attention to what I was doing when I was clueless installing PB? So I unstalled PB, reinstalled PB and, duh, all the updates I could find (which I didn't do before), and was THEN able to build the default image with 'Sysgen', and boot it on the Gumstix! I then added in a couple of codecs and Windows Media Player and, with 'Clean Sysgen', was able to build a platform that boots on the Gumstix and allows me to play video! Woot!!

Massive thanks for the help - you coulda bailed on me, and you didn't, and that is very much appreciated. My task is complete, excellent product, and excellent work! A contribution will be forthcoming soon! Thanks again!