Difference between revisions of "Didj"

From eLinux.org
Jump to: navigation, search
(Removed duplicate links, broke up Technical Information to create Source Code section)
(Broke up more of Technical Information to create section for development scripts and programs)
Line 80: Line 80:
 
* Corbin's OpenDidj Linux Kernel Tree
 
* Corbin's OpenDidj Linux Kernel Tree
 
** [http://git.kernel.org/?p=linux/kernel/git/csimpson/linux-2.6.git;a=summary Git Repository]
 
** [http://git.kernel.org/?p=linux/kernel/git/csimpson/linux-2.6.git;a=summary Git Repository]
 +
 +
== Development Scripts and Programs ==
 +
 +
* [http://git.berlios.de/cgi-bin/gitweb.cgi?p=opendidj;a=blob_plain;f=host_tools/lf1000_bootstrap.py;h=f0d3ef0d9186edf368062608ff868914e6083ee4;hb=06890453479d271856f58d1d2cb685ee6e5afd5f LF1000 UART Bootstrap Utility] written in Python
 +
* [[media:lf1000-bootstrap-utilities.tar.gz |LF1000 UART Bootstrap Utilities]] based on the OMAP boot utilities from TI
 +
* [[File:OpenDidjConnect_v1.2.zip ]] lock, unlock, eject Didj USB drive from Windows Command Line.
 +
 
== Technical Information ==
 
== Technical Information ==
  
Line 85: Line 92:
 
* [[Didj_Mem_Map|Initial Memory Map Dump]]
 
* [[Didj_Mem_Map|Initial Memory Map Dump]]
 
* [[Didj_GPIO_Map|Map of Didj GPIO Pins]]
 
* [[Didj_GPIO_Map|Map of Didj GPIO Pins]]
 
* [http://git.berlios.de/cgi-bin/gitweb.cgi?p=opendidj;a=blob_plain;f=host_tools/lf1000_bootstrap.py;h=f0d3ef0d9186edf368062608ff868914e6083ee4;hb=06890453479d271856f58d1d2cb685ee6e5afd5f LF1000 UART Bootstrap Utility] written in Python
 
* [[media:lf1000-bootstrap-utilities.tar.gz |LF1000 UART Bootstrap Utilities]] based on the OMAP boot utilities from TI
 
  
 
== Discussion ==
 
== Discussion ==

Revision as of 01:39, 20 April 2010

The LeapFrog Didj

Project Summary

The Didj is a toy produced by Leapfrog marketed for educational games for 5-10 year olds. Although it has a proprietary graphical front end, it runs a generic Linux distribution on an Arm based processor. Soon after the Didj's release, it was discovered that the cartridge port contained pins that allowed for serial console access with root privileges. After this discovery, work began to modify the Didj into an accessible emulation device.

Since development began, much has been accomplished, including:

  • Discovered that the Arm chip is the same as on the GP2X Wiz, only at a lower clock speed.
  • Created cartridges that support SD cards
  • Accessed the UART features in the cartridge slot

Project Goals

Here is a place to list all the the goals or wants that we have for this project.

  • GP2x / GP2x Wiz
    • Port Libraries
    • Flash Player
    • Emulation (Wiz Emulators)
      • NES
      • SNES
      • Gameboy BW/Color/Advanced
      • Gamegear
      • MAME
      • Atari 2600
      • Colecovision
      • Others
  • GUI
    • Custom or Modified
      • Customizable Themes
  • Homebrew Games
  • Overclock Processor

Project Status and Issues


Tutorials/How To's

Booting From External Sources

Build Environments

Flashing the Didj

Hardware Adding, Hacking

LFConnect Software

Mounting Didj USB Drive

Networking

On Host

On Didj

Source Code

Development Scripts and Programs

Technical Information

Discussion

Graphics Hardware

  • Resolution: 320x240
  • Display Modes: RGBA 565
  • MLC: Multi-layer controller provides HW compositing for up to three graphics layers
    • One 24-bit 2D layers (no HW accel)
    • One 16-bit 3D layer
    • One YUV video layer (no HW accel)
  • Graphics API OpenGL ES 1.1: A reduced instruction set version of OpenGL for embedded systems. OpenGL is a 3D graphics programming interface. Proprietary interface to Multi- Layer Display controller for 2D RGB and YUV video buffer support. FreeType Font renderer. Theora video codec plays OGG-Theora files.

Chip List

Error creating thumbnail: File with dimensions greater than 12.5 MP
Scan of front side of Didj mainboard, with LF1000 CPU and SDRAM de-soldered.
Close up of the LF1000 CPU ball-grid.
Error creating thumbnail: File with dimensions greater than 12.5 MP
Scan of back side of Didj mainboard, with cartridge socket and NAND de-soldered.
A picture of the front of the Didj mainboard
A picture of the back of the Didj mainboard

Processor

Memory

  • 1 QImonda HYB25DC25616OCE-5 - 32megabyte sdram Datasheet

or

  • 1 Nanya NT5DS16M16CS-5T - 32megabyte sdram (Datasheet)


  • 1 Micron MT29F2G08AAC - 256megabyte nand flash 8-bit [[media:MT29F2G08AAC.pdf | Datasheet]
  • 1 7s08f -2 input or gate connected to WP on flash

Audio

Display Driver

Power

  • 1 Intersil ISL7665SACBAZ - Programmable Over/Under Voltage Detector Datasheet
  • 3 TI TPS62050 - Adjustable Step-Down Converter Datasheet

Crystals

  • Oscillators
    • 12MHz Crystal
      • For usb
    • 27MHz Crystal
      • For the Processor*
    • Barrel Crystal
      • For the RTC 32.768KHz*

Test Pads

  • JTAG on pads
    • TP8 - Vcc
    • TP9
    • TP10
    • TP11
    • TP12
    • TP13
    • TP14 - Vss

Ethernet?

There is info of a CS9800 Ethernet controller used on the development board

* See the processor datasheet page 20.

USB

USB 2.0 Device Interface

  • Pins USB_DP and USB_DM on the Processor
  • The Usb 2.0 Device port is what is used on the Didj to connect to the PC.

USB 1.1 HOST Interface

  • Pins UP and UM on the Processor
  • The USB1.1 Host pins must be pulled down through 15Kohm resistor whether it is used or not.
  • There is no traces to the USB Host pins thus we can not use USB Host

UART Adapter Info

A direct serial-line connection won't work with the Didj because the RS-232 spec uses 12v, while the Didj prefers about 3-5v. So you'll need an adapter to communicate to the UART on the Didj.


Cartridges

Detailed Pin info of the Cart Connector

Original Cartridge

Manufactured by Sandisk

  • s740878-1
  • 4620329
  • 0621
  • 151-10043-07-a


Custom Cartridges

DJHI

DJHI stand for "Did Ja Hack It?" Right now you can only buy them fully assembled and tested from JerTechOnline.com

Home Etched Didj Breakout Board

  • Easy to make at home (can be made with a radioshack kit and a dremel)
  • The board layout was designed in eagle.
    • The Eagle Board file Download
    • The Didj Edgecard connector library file Download
      • You can use this to make any board you want.
    • Edited Didj Cartridge library Download
      • (including outlines and keepout regions according to Awesomnesser's diagrams)
  • This cartridge locks in just like the real thing.
    • It is easy to do just superglue a small piece of FR4 in the corner and dremel a notch out. (see dimensions below)
    • You will also need a spacer on the top and bottom and those dimensions are also included.

Hack an Original Cart

  • Modify an original cart to have a uart output

Claudes Cartridge

SD and USB Serial Cart

  • Features
    • Fits (mostly) within the Didj
    • Includes an FTDI FT232RL USB-Serial adaptor for Bootloader and Serial Console
    • Includes SD card slot
    • Includes solder jumpers for custom bootloader
    • Open Eagle source files (CC Attribution, Non-Commercial, Share Alike)
  • Front and Back PDF
  • Eagle files
  • BatchPCB public design
  • Comments welcome!
    • Gerbers haven't been made yet. Please post comments here, or as a message to me.
    • I think the design is correct based on Claude's schematic and Awesomenesser's diagrams, but I can't be sure.
    • Later, I'll have this produced by BatchPCB, I'll post a link to the public design on that site, if others want boards made.

SSP / SPI Controller

Didj SPI Info

File System Info

  • rootfs / rootfs rw
  • /dev/root / jffs2 ro
  • none /proc proc rw
  • sysfs /sys sysfs rw
  • /dev/ram0 /tmp tmpfs rw
  • /dev/mtdblock1 /flags jffs2 rw,sync,noatime
  • /dev/mtdblock2 /mfgdata jffs2 ro,sync,noatime
  • /dev/mtdblock10 /Didj vfat rw,noatime,fmask=0022,dmask=0022,codepage=cp437,iocha rset=iso8859-1
  • /dev/mtdblock11 /Cart vfat ro,noatime,fmask=0022,dmask=0022,codepage=cp437,iocha rset=iso8859-1

Filesystem Size Mounted on

/dev/mtdblock6 14.0M /

/dev/mtdblock1 896.0k /flags

/dev/mtdblock2 1.0M /mfgdata

/dev/mtdblock9 215.8M /Didj


if at boot you see:

root=31:04

you are using mtd4: 00e00000 00020000 "Linux_RFS0"

root=31:06

you are using mtd6: 00e00000 00020000 "Linux_RFS1"


Important File Locations