Software Development
From M:Robe 500i Development Wiki
The exploited firmware allows us to run our own code from the m:robe 500i. Currently, a fully working C language Integrated Development Environment (CIDE) is available.
Contents |
Drivers
Developed drivers and their status:
| Device Name | Current status |
|---|---|
| LCD Display | fully working - fully C sourced |
| Remote Control | fully working - fully C sourced |
| LCD Touch Screen | SPI reg found, triggers are shown when touching the screen TSC2101 LINUX DRIVER HERE |
| HD | working fopen, fread, fwrite and fclose - by wrapping existing firmware functions |
Development
The Exploit
The most low-level way of executing custom code on the device is by exploiting the remix feature. Using a bug in libpng (forum thread), the device can be made to execute code in a specially crafted ".svg" file. Roughly, the steps are:
- Compile the code using a compiler targeted at the device's CPU
- Pack it into a ".svg" file
- Copy the ".svg" file into the correct directory for the remix files
- Select the remix in the remix feature of the device
For more information, see shirour's guide, under "M:Robe's IDE version 0.91BETA".
Using the Loader
A more convenient way is to use a small precompiled ".svg" file that acts as a loader for your program. This needs to be copied to the device only once, after which only the payload (your program) needs to be updated. Once again, roughly, the steps are:
- Copy the loader R0030001.svg (link down as of 11/12/2006; mirror) into the remix directory
- Compile the code into a binary file as in the first step above
- Copy the file as "prog.mrb" in the root directory of the device
- Using the remix feature, execute the loader
- The loader then loads the "prob.mrb" file at 0x900000 and starts executing there
For more information, see shirour's guide, under "M:Robe's IDE version 0.92BETA".
The Platform
See DM320 SoC.
Tools
Mirrors
Examples
Some applications that have at some point been functional on the device:
- mrobedemo (screenshot), part of shirour's C IDE
- Modified version of MediOS with Doom (screenshot), see DOOM
Links
- ARM Instruction Set Quick Reference Card
- ARM and Thumb-2 Instruction Set Quick Reference Card
- ARM GCC Inline Assembler Cookbook
Specific Applications
Games
- DOOM - well, you know this 3d game. click for more information.
- Supermario coded in C...perhaps people could make use of this... [1] "posted by xserjicalstrikex....10/18/06...
possible emulators compiled for target distro(binaries etc), gnuboy, NES emulators,neogeo, genesis, gamegear,
Video Player
- Here is some information on a plugin that has been seen on ipods, nanos, and the archos....same chip as the 500...check the link...anyone with knowledge of programming...see if you can make sense of this... Link
- Link 1 (pepetrueno via jamelikat)
- Link 1 (by listening, via jamelikat). Last update, 18oct2006, jamelikat.
To add to that, here is links to free c compilers if any are interested in helping develop programs...(edited 10/24/2006...you have to copy/paste this link in a new browser to visit the site...) [2]
MediOS
- Update on medios on mr500, the medios team syd/olesz have just today-yesterday posted on mrobe org on their success in loading medios onto the mr500. They show screenshots of the touchscreen icons on the screen. The actual applications within medios are not working yet, but this loading of medios is meant to be a great advance. Link to mrobe org posts Posts. (Posted by jamelikat 26 Oct 06).
- Update 29 oct 06. Unkalle4, mrobe org member has experience with medios, and the mr500. He presents thoughts and experiences regarding the cowon mp3 player which, he says, being similar to the mr500, brings him into the right area for developing video for the mr500. MPEG4 and MPEG2 are file types he's made improvements about, on the mr500 Unkalle4's Post(s)
- Must Read Posted by jamelikat.
Linux
After using the remote connection as a serial port, I was able to get a full working copy of linux kernel 2.6.15 to run - fully working TTY access.
Afterwards, I've ported the touchscreen driver made for the OMAP SoC, and got it to work as well. see linux on m:robe
U-Boot
In the same vein, Cat was able to get Neuros' U-Boot (Linux bootloader) working over the serial interface. It doesn't yet recognize all the devices (such as, most importantly, the IDE controller), but at least it will be a bit easier to work on it.
Log file of U-Boot properly showing a prompt
prog.mrb file of U-Boot, really only useful if you have a serial level converter