https://elinux.org/api.php?action=feedcontributions&user=Nirvous&feedformat=atomeLinux.org - User contributions [en]2024-03-28T22:31:23ZUser contributionsMediaWiki 1.31.0https://elinux.org/index.php?title=LeapFrog_Pollux_Platform:_FTDI_JTAG_How_To&diff=66469LeapFrog Pollux Platform: FTDI JTAG How To2011-09-16T04:38:52Z<p>Nirvous: /* Connecting */</p>
<hr />
<div>[[Image:Didj_DLP_JTAG.JPG |350px|thumb|Didj FTDI2232 JTAG setup]]<br />
<br />
== Background ==<br />
<br />
I had been curious about JTAG ever since I started experimenting with Didj. I had wondered about whether it could be used to investigate our Pollux-based devices. <br />
<br />
As we all progressed with our experimentation, Moogle [http://wtfmoogle.com/?p=910 identified the JTAG pads] on Didj, and then bcav added [[Didj JTAG How To | a wiki entry]] on how to use the JTAG port to debug a bootloader on Didj with [http://openocd.berlios.de/web/ OpenOCD] (Open On-Chip Debugger). We later happily discovered that JTAG pads are clearly labeled on the Leapster Explorer mainboard (in my book, its a Big Win whenever a manufacturer acknowleges our [http://cdn.makezine.com/make/MAKERS_RIGHTS.pdf Fundamental Rights!])<br />
<br />
I had JTAG experimentation on my list-of-things-to-try for a while, but I didnt want to spend $72 to buy the JTAG dongle bcav used in the wiki entry. (I did have a home-made [http://nuwiki.openwrt.org/oldwiki/OpenWrtDocs/Customizing/Hardware/JTAG_Cable wiggler cable] that I hacked together for use with WRT routers, but I wasn't confident enough that it would fit the bill for this use case. Plus the speed over a parallel port was not great)<br />
<br />
Upon learning that that the ftdi2232 chip could be used to bitbang a JTAG connection and that the same part powers many USB-based JTAG cables, I purchased a $30 breakout board that was based on that chip - [http://www.dlpdesign.com/usb/usb1232h.shtml DLP Design DLP-USB1232H] ([http://www.dlpdesign.com/usb/usb1232h-ds-v13.pdf datasheet]). <br />
<br />
What follows are the steps I used to make this breakout work with Didj, LX, LPX, and the Pollux-based eGo netbooks.<br />
<br />
== Connecting ==<br />
[[Image:JTAG PADS.jpg |150px|thumb|Didj JTAG pads]]<br />
[[Image:DidjTP103.png|150px|thumb|Didj nSRST pad on opposite side of mainboard from JTAG pads]]<br />
[[Image:LX-JTAG.jpg |150px|thumb|Leapster Explorer JTAG pads]]<br />
[[Image:LP-JTAG.png |150px|thumb|LeapPad Explorer JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-FRONT.png|150px|thumb|Augen eGo 730-4 front JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-BACK.png|150px|thumb|Augen eGo 730-4 back JTAG pads]]<br />
<br />
The table below illustrates how to connect the DLP-USB1232H device pins to Didj, LX and the eGo.<br />
The pinout on the breakout is in the [http://www.dlpdesign.com/usb1232h-ds-v12.pdf DLP-USB1232H datasheet] (pinout is on page 4 and page 7).<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Pin type<br />
! align="left" | DLP-USB1232H pin #<br />
! align="left" | Didj Test Pad label<br />
! align="left" | LX Test Pad label<br />
! align="left" | LPX Test Pad label<br />
! align="left" | eGo photo label<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TRST'''<br />
| 17<br />
| TP9<br />
| RST<br />
| RST<br />
| nTRST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDI'''<br />
| 16<br />
| TP10<br />
| TDI <br />
| TDI<br />
| TDI<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TMS'''<br />
| 5<br />
| TP11<br />
| TMS<br />
| TMS<br />
| TMS<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TCK'''<br />
| 18<br />
| TP12<br />
| TCK<br />
| TCK<br />
| TCK<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDO'''<br />
| 2<br />
| TP13<br />
| TDO<br />
| TDO<br />
| TDO<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''(S)RST'''<br />
| 13<br />
| TP103 [1]<br />
| nRST<br />
| nRST<br />
| nPORST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''GND'''<br />
| Either 1 or 10<br />
| TP14<br />
| GND<br />
| GND<br />
| use any GND<br />
<br />
|}<br />
<br />
'''IMPORTANT:''' You also need to '''connect pins 8 and 9 together''' on the DLP-USB1232H module in order to configure it to be powered via USB.<br />
<br />
[1] As an alternative to TP103, either side of R43 (jumper/0 Ohms) or the right pad of R45 (unpopulated) works. This is near the other test pads.<br />
<br />
Also, the Didj or LX must be powered on.<br />
<br />
== Software Installation ==<br />
<br />
Install OpenOCD (examples are Ubuntu Lucid)<br />
<br />
$ '''sudo apt-get install openocd'''<br />
<br />
Place this configuration file - name it dlp-usb1232h.cfg - into your openocd /usr/share/openocd/scripts/interface directory:<br />
<br />
<code><br />
<br />
#<br />
# DLP Design DLP-USB1232H USB-to-UART/FIFO interface module<br />
#<br />
# http://www.dlpdesign.com/usb/usb1232h.shtml<br />
#<br />
interface ft2232<br />
ft2232_device_desc "Dual RS232-HS"<br />
ft2232_layout usbjtag<br />
ft2232_vid_pid 0x0403 0x6010<br />
<br />
</code><br />
<br />
<br />
Place the file below, named openocd.cfg (originally described [[Didj JTAG How To | here]]), into your home directory:<br />
<code><br />
<br />
telnet port 4444<br />
source [find interface/dlp-usb1232h.cfg]<br />
jtag_khz 15000<br />
# length of reset signal: [ms]<br />
jtag_nsrst_assert_width 100<br />
# don't talk to JTAG after reset for: [ms]<br />
jtag_nsrst_delay 250<br />
reset_config trst_and_srst separate<br />
# end reset config<br />
if { [info exists CHIPNAME] } {<br />
set _CHIPNAME $CHIPNAME<br />
} else {<br />
set _CHIPNAME pollux<br />
}<br />
if { [info exists ENDIAN] } {<br />
set _ENDIAN $ENDIAN<br />
} else {<br />
set _ENDIAN little<br />
}<br />
if { [info exists CPUTAPID ] } {<br />
set _CPUTAPID $CPUTAPID<br />
} else {<br />
# force an error till we get a good number<br />
set _CPUTAPID 0x07926f0f<br />
}<br />
#jtag scan chain<br />
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID<br />
set _TARGETNAME $_CHIPNAME.cpu<br />
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs <br />
<br />
</code><br />
<br />
== Usage ==<br />
<br />
To launch OpenOCD from your home directory:<br />
<br />
$ '''sudo /usr/bin/openocd -s /usr/share/openocd/scripts'''<br />
<br />
<br />
To access OpenOCD directly, telnet to localhost port 4444:<br />
<br />
$ '''telnet localhost 4444'''<br />
== Usage Examples ==<br />
Read the registers using the 'mdw phys <address>' command in OpenOCD. In this example we are reading the MLCCONTROL0 register:<br />
<br />
<code><br />
<br />
>halt<br />
>mdw phys 0xc0004024<br />
0xc0004024: 86534024<br />
</code> <br />
<br />
To write registers, use 'mww phys <address> <value>' In this example we are changing to the MLC to RGB888 mode, setting the H-stride and V-stride appropriately, and then setting the dirty flag:<br />
<code><br />
<br />
>halt<br />
>mww phys 0xc0004024 0x46534024<br />
>mww phys 0xc0004028 0x00000003<br />
>mww phys 0xc000402c 0x000003c0<br />
>mww phys 0xc0004024 0x4653d034<br />
</code><br />
<br />
The reset command will restart the device:<br />
>reset<br />
<br />
To debug bootloaders with GDB, see [[Didj JTAG How To]].<br />
<br />
== Resources ==<br />
<br />
The DLP-USB1232H is available from various sources, e.g.: [http://digikey.com/scripts/dksus.dll?Detail&name=813-1026-ND Digikey], [http://mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMt/5FJRvmqHBjWi/VTYGDW6 Mouser], or [http://www.saelig.com/product/UB068.htm Saelig].<br />
<br />
The module can also be used as a cheap and simple [http://www.flashrom.org/FT2232SPI_Programmer SPI BIOS chip programmer] together with the [http://www.flashrom.org flashrom] utility.<br />
<br />
== References ==<br />
<br />
[[Didj JTAG How To]]<br />
<br />
[http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter DLP-USB1232H_and_OpenOCD_based_JTAG_adapter]<br />
<br />
[http://vak.ru/doku.php/proj/bitbang/bitbang-jtag Low-cost Bitbang JTAG using the FTDI FT232]<br />
<br />
<br />
<br />
[[Category:Didj]]<br />
[[Category:Leapster Explorer]]<br />
[[Category:Augen eGo]]<br />
[[Category:LeapFrog Pollux Platform]]</div>Nirvoushttps://elinux.org/index.php?title=LeapFrog_Pollux_Platform:_FTDI_JTAG_How_To&diff=66463LeapFrog Pollux Platform: FTDI JTAG How To2011-09-16T02:00:35Z<p>Nirvous: </p>
<hr />
<div>[[Image:Didj_DLP_JTAG.JPG |350px|thumb|Didj FTDI2232 JTAG setup]]<br />
<br />
== Background ==<br />
<br />
I had been curious about JTAG ever since I started experimenting with Didj. I had wondered about whether it could be used to investigate our Pollux-based devices. <br />
<br />
As we all progressed with our experimentation, Moogle [http://wtfmoogle.com/?p=910 identified the JTAG pads] on Didj, and then bcav added [[Didj JTAG How To | a wiki entry]] on how to use the JTAG port to debug a bootloader on Didj with [http://openocd.berlios.de/web/ OpenOCD] (Open On-Chip Debugger). We later happily discovered that JTAG pads are clearly labeled on the Leapster Explorer mainboard (in my book, its a Big Win whenever a manufacturer acknowleges our [http://cdn.makezine.com/make/MAKERS_RIGHTS.pdf Fundamental Rights!])<br />
<br />
I had JTAG experimentation on my list-of-things-to-try for a while, but I didnt want to spend $72 to buy the JTAG dongle bcav used in the wiki entry. (I did have a home-made [http://nuwiki.openwrt.org/oldwiki/OpenWrtDocs/Customizing/Hardware/JTAG_Cable wiggler cable] that I hacked together for use with WRT routers, but I wasn't confident enough that it would fit the bill for this use case. Plus the speed over a parallel port was not great)<br />
<br />
Upon learning that that the ftdi2232 chip could be used to bitbang a JTAG connection and that the same part powers many USB-based JTAG cables, I purchased a $30 breakout board that was based on that chip - [http://www.dlpdesign.com/usb/usb1232h.shtml DLP Design DLP-USB1232H] ([http://www.dlpdesign.com/usb/usb1232h-ds-v13.pdf datasheet]). <br />
<br />
What follows are the steps I used to make this breakout work with Didj, LX, LPX, and the Pollux-based eGo netbooks.<br />
<br />
== Connecting ==<br />
[[Image:JTAG PADS.jpg |150px|thumb|Didj JTAG pads]]<br />
[[Image:DidjTP103.png|150px|thumb|Didj nSRST pad on opposite side of mainboard from JTAG pads]]<br />
[[Image:LX-JTAG.jpg |150px|thumb|Leapster Explorer JTAG pads]]<br />
[[Image:LP-JTAG.png |150px|thumb|LeapPad Explorer JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-FRONT.png|150px|thumb|Augen eGo 730-4 front JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-BACK.png|150px|thumb|Augen eGo 730-4 back JTAG pads]]<br />
<br />
The table below illustrates how to connect the DLP-USB1232H device pins to Didj, LX and the eGo.<br />
The pinout on the breakout is in the [http://www.dlpdesign.com/usb1232h-ds-v12.pdf DLP-USB1232H datasheet] (pinout is on page 4 and page 7).<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Pin type<br />
! align="left" | DLP-USB1232H pin #<br />
! align="left" | Didj Test Pad label<br />
! align="left" | LX Test Pad label<br />
! align="left" | LPX Test Pad label<br />
! align="left" | eGo photo label<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TRST'''<br />
| 17<br />
| TP9<br />
| RST<br />
| RST<br />
| nTRST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDI'''<br />
| 16<br />
| TP10<br />
| TDI <br />
| TDI<br />
| TDI<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TMS'''<br />
| 5<br />
| TP11<br />
| TMS<br />
| TMS<br />
| TMS<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TCK'''<br />
| 18<br />
| TP12<br />
| TCK<br />
| TCK<br />
| TCK<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDO'''<br />
| 2<br />
| TP13<br />
| TDO<br />
| TDO<br />
| TDO<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''(S)RST'''<br />
| 13<br />
| TP103 [1]<br />
| nRST<br />
| nEXTRST<br />
| nPORST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''GND'''<br />
| Either 1 or 10<br />
| TP14<br />
| GND<br />
| GND<br />
| use any GND<br />
<br />
|}<br />
<br />
'''IMPORTANT:''' You also need to '''connect pins 8 and 9 together''' on the DLP-USB1232H module in order to configure it to be powered via USB.<br />
<br />
[1] As an alternative to TP103, either side of R43 (jumper/0 Ohms) or the right pad of R45 (unpopulated) works. This is near the other test pads.<br />
<br />
Also, the Didj or LX must be powered on.<br />
<br />
== Software Installation ==<br />
<br />
Install OpenOCD (examples are Ubuntu Lucid)<br />
<br />
$ '''sudo apt-get install openocd'''<br />
<br />
Place this configuration file - name it dlp-usb1232h.cfg - into your openocd /usr/share/openocd/scripts/interface directory:<br />
<br />
<code><br />
<br />
#<br />
# DLP Design DLP-USB1232H USB-to-UART/FIFO interface module<br />
#<br />
# http://www.dlpdesign.com/usb/usb1232h.shtml<br />
#<br />
interface ft2232<br />
ft2232_device_desc "Dual RS232-HS"<br />
ft2232_layout usbjtag<br />
ft2232_vid_pid 0x0403 0x6010<br />
<br />
</code><br />
<br />
<br />
Place the file below, named openocd.cfg (originally described [[Didj JTAG How To | here]]), into your home directory:<br />
<code><br />
<br />
telnet port 4444<br />
source [find interface/dlp-usb1232h.cfg]<br />
jtag_khz 15000<br />
# length of reset signal: [ms]<br />
jtag_nsrst_assert_width 100<br />
# don't talk to JTAG after reset for: [ms]<br />
jtag_nsrst_delay 250<br />
reset_config trst_and_srst separate<br />
# end reset config<br />
if { [info exists CHIPNAME] } {<br />
set _CHIPNAME $CHIPNAME<br />
} else {<br />
set _CHIPNAME pollux<br />
}<br />
if { [info exists ENDIAN] } {<br />
set _ENDIAN $ENDIAN<br />
} else {<br />
set _ENDIAN little<br />
}<br />
if { [info exists CPUTAPID ] } {<br />
set _CPUTAPID $CPUTAPID<br />
} else {<br />
# force an error till we get a good number<br />
set _CPUTAPID 0x07926f0f<br />
}<br />
#jtag scan chain<br />
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID<br />
set _TARGETNAME $_CHIPNAME.cpu<br />
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs <br />
<br />
</code><br />
<br />
== Usage ==<br />
<br />
To launch OpenOCD from your home directory:<br />
<br />
$ '''sudo /usr/bin/openocd -s /usr/share/openocd/scripts'''<br />
<br />
<br />
To access OpenOCD directly, telnet to localhost port 4444:<br />
<br />
$ '''telnet localhost 4444'''<br />
== Usage Examples ==<br />
Read the registers using the 'mdw phys <address>' command in OpenOCD. In this example we are reading the MLCCONTROL0 register:<br />
<br />
<code><br />
<br />
>halt<br />
>mdw phys 0xc0004024<br />
0xc0004024: 86534024<br />
</code> <br />
<br />
To write registers, use 'mww phys <address> <value>' In this example we are changing to the MLC to RGB888 mode, setting the H-stride and V-stride appropriately, and then setting the dirty flag:<br />
<code><br />
<br />
>halt<br />
>mww phys 0xc0004024 0x46534024<br />
>mww phys 0xc0004028 0x00000003<br />
>mww phys 0xc000402c 0x000003c0<br />
>mww phys 0xc0004024 0x4653d034<br />
</code><br />
<br />
The reset command will restart the device:<br />
>reset<br />
<br />
To debug bootloaders with GDB, see [[Didj JTAG How To]].<br />
<br />
== Resources ==<br />
<br />
The DLP-USB1232H is available from various sources, e.g.: [http://digikey.com/scripts/dksus.dll?Detail&name=813-1026-ND Digikey], [http://mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMt/5FJRvmqHBjWi/VTYGDW6 Mouser], or [http://www.saelig.com/product/UB068.htm Saelig].<br />
<br />
The module can also be used as a cheap and simple [http://www.flashrom.org/FT2232SPI_Programmer SPI BIOS chip programmer] together with the [http://www.flashrom.org flashrom] utility.<br />
<br />
== References ==<br />
<br />
[[Didj JTAG How To]]<br />
<br />
[http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter DLP-USB1232H_and_OpenOCD_based_JTAG_adapter]<br />
<br />
[http://vak.ru/doku.php/proj/bitbang/bitbang-jtag Low-cost Bitbang JTAG using the FTDI FT232]<br />
<br />
<br />
<br />
[[Category:Didj]]<br />
[[Category:Leapster Explorer]]<br />
[[Category:Augen eGo]]<br />
[[Category:LeapFrog Pollux Platform]]</div>Nirvoushttps://elinux.org/index.php?title=LeapFrog_Pollux_Platform:_FTDI_JTAG_How_To&diff=66457LeapFrog Pollux Platform: FTDI JTAG How To2011-09-16T01:52:55Z<p>Nirvous: /* Background */</p>
<hr />
<div>[[Image:Didj_DLP_JTAG.JPG |350px|thumb|Didj FTDI2232 JTAG setup]]<br />
<br />
== Background ==<br />
<br />
I had been curious about JTAG ever since I started experimenting with Didj. I had wondered about whether it could be used to investigate our Pollux-based devices. <br />
<br />
As we all progressed with our experimentation, Moogle [http://wtfmoogle.com/?p=910 identified the JTAG pads] on Didj, and then bcav added [[Didj JTAG How To | a wiki entry]] on how to use the JTAG port to debug a bootloader on Didj with [http://openocd.berlios.de/web/ OpenOCD] (Open On-Chip Debugger). We later happily discovered that JTAG pads are clearly labeled on the Leapster Explorer mainboard (in my book, its a Big Win whenever a manufacturer acknowleges our [http://cdn.makezine.com/make/MAKERS_RIGHTS.pdf Fundamental Rights!])<br />
<br />
I had JTAG experimentation on my list-of-things-to-try for a while, but I didnt want to spend $72 to buy the JTAG dongle bcav used in the wiki entry. (I did have a home-made [http://nuwiki.openwrt.org/oldwiki/OpenWrtDocs/Customizing/Hardware/JTAG_Cable wiggler cable] that I hacked together for use with WRT routers, but I wasn't confident enough that it would fit the bill for this use case. Plus the speed over a parallel port was not great)<br />
<br />
Upon learning that that the ftdi2232 chip could be used to bitbang a JTAG connection and that the same part powers many USB-based JTAG cables, I purchased a $30 breakout board that was based on that chip - [http://www.dlpdesign.com/usb/usb1232h.shtml DLP Design DLP-USB1232H] ([http://www.dlpdesign.com/usb/usb1232h-ds-v13.pdf datasheet]). <br />
<br />
What follows are the steps I used to make this breakout work with Didj, LX, LPX, and the Pollux-based eGo netbooks.<br />
<br />
== Connecting ==<br />
[[Image:JTAG PADS.jpg |150px|thumb|Didj JTAG pads]]<br />
[[Image:DidjTP103.png|150px|thumb|Didj nSRST pad on opposite side of mainboard from JTAG pads]]<br />
[[Image:LX-JTAG.jpg |150px|thumb|Leapster Explorer JTAG pads]]<br />
[[Image:LP-JTAG.png |150px|thumb|LeapPad Explorer JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-FRONT.png|150px|thumb|Augen eGo 730-4 front JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-BACK.png|150px|thumb|Augen eGo 730-4 back JTAG pads]]<br />
<br />
The table below illustrates how to connect the DLP-USB1232H device pins to Didj, LX and the eGo.<br />
The pinout on the breakout is in the [http://www.dlpdesign.com/usb1232h-ds-v12.pdf DLP-USB1232H datasheet] (pinout is on page 4 and page 7).<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Pin type<br />
! align="left" | DLP-USB1232H pin #<br />
! align="left" | Didj Test Pad label<br />
! align="left" | LX Test Pad label<br />
! align="left" | LPX Test Pad label<br />
! align="left" | eGo photo label<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TRST'''<br />
| 17<br />
| TP9<br />
| RST<br />
| RST<br />
| nTRST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDI'''<br />
| 16<br />
| TP10<br />
| TDI <br />
| TDI<br />
| TDI<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TMS'''<br />
| 5<br />
| TP11<br />
| TMS<br />
| TMS<br />
| TMS<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TCK'''<br />
| 18<br />
| TP12<br />
| TCK<br />
| TCK<br />
| TCK<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDO'''<br />
| 2<br />
| TP13<br />
| TDO<br />
| TDO<br />
| TDO<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''(S)RST'''<br />
| 13<br />
| TP103 [1]<br />
| nRST<br />
| nEXTRST<br />
| nPORST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''GND'''<br />
| Either 1 or 10<br />
| TP14<br />
| GND<br />
| GND<br />
| use any GND<br />
<br />
|}<br />
<br />
'''IMPORTANT:''' You also need to '''connect pins 8 and 9 together''' on the DLP-USB1232H module in order to configure it to be powered via USB.<br />
<br />
[1] As an alternative to TP103, either side of R43 (jumper/0 Ohms) or the right pad of R45 (unpopulated) works. This is near the other test pads.<br />
<br />
Also, the Didj or LX must be powered on.<br />
<br />
== Software Installation ==<br />
<br />
Install OpenOCD (examples are Ubuntu Lucid)<br />
<br />
$ '''sudo apt-get install openocd'''<br />
<br />
Place this configuration file - name it dlp-usb1232h.cfg - into your openocd /usr/share/openocd/scripts/interfaces directory:<br />
<br />
<code><br />
<br />
#<br />
# DLP Design DLP-USB1232H USB-to-UART/FIFO interface module<br />
#<br />
# http://www.dlpdesign.com/usb/usb1232h.shtml<br />
#<br />
interface ft2232<br />
ft2232_device_desc "Dual RS232-HS"<br />
ft2232_layout usbjtag<br />
ft2232_vid_pid 0x0403 0x6010<br />
<br />
</code><br />
<br />
<br />
Place the file below, named openocd.cfg (originally described [[Didj JTAG How To | here]]), into your home directory:<br />
<code><br />
<br />
telnet port 4444<br />
source [find interface/dlp-usb1232h.cfg]<br />
jtag_khz 15000<br />
# length of reset signal: [ms]<br />
jtag_nsrst_assert_width 100<br />
# don't talk to JTAG after reset for: [ms]<br />
jtag_nsrst_delay 250<br />
reset_config trst_and_srst separate<br />
# end reset config<br />
if { [info exists CHIPNAME] } {<br />
set _CHIPNAME $CHIPNAME<br />
} else {<br />
set _CHIPNAME pollux<br />
}<br />
if { [info exists ENDIAN] } {<br />
set _ENDIAN $ENDIAN<br />
} else {<br />
set _ENDIAN little<br />
}<br />
if { [info exists CPUTAPID ] } {<br />
set _CPUTAPID $CPUTAPID<br />
} else {<br />
# force an error till we get a good number<br />
set _CPUTAPID 0x07926f0f<br />
}<br />
#jtag scan chain<br />
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID<br />
set _TARGETNAME $_CHIPNAME.cpu<br />
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs <br />
<br />
</code><br />
<br />
== Usage ==<br />
<br />
To launch OpenOCD from your home directory:<br />
<br />
$ '''sudo /usr/bin/openocd -s /usr/share/openocd/scripts'''<br />
<br />
<br />
To access OpenOCD directly, telnet to localhost port 4444:<br />
<br />
$ '''telnet localhost 4444'''<br />
== Usage Examples ==<br />
Read the registers using the 'mdw phys <address>' command in OpenOCD. In this example we are reading the MLCCONTROL0 register:<br />
<br />
<code><br />
<br />
>halt<br />
>mdw phys 0xc0004024<br />
0xc0004024: 86534024<br />
</code> <br />
<br />
To write registers, use 'mww phys <address> <value>' In this example we are changing to the MLC to RGB888 mode, setting the H-stride and V-stride appropriately, and then setting the dirty flag:<br />
<code><br />
<br />
>halt<br />
>mww phys 0xc0004024 0x46534024<br />
>mww phys 0xc0004028 0x00000003<br />
>mww phys 0xc000402c 0x000003c0<br />
>mww phys 0xc0004024 0x4653d034<br />
</code><br />
<br />
The reset command will restart the device:<br />
>reset<br />
<br />
To debug bootloaders with GDB, see [[Didj JTAG How To]].<br />
<br />
== Resources ==<br />
<br />
The DLP-USB1232H is available from various sources, e.g.: [http://digikey.com/scripts/dksus.dll?Detail&name=813-1026-ND Digikey], [http://mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMt/5FJRvmqHBjWi/VTYGDW6 Mouser], or [http://www.saelig.com/product/UB068.htm Saelig].<br />
<br />
The module can also be used as a cheap and simple [http://www.flashrom.org/FT2232SPI_Programmer SPI BIOS chip programmer] together with the [http://www.flashrom.org flashrom] utility.<br />
<br />
== References ==<br />
<br />
[[Didj JTAG How To]]<br />
<br />
[http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter DLP-USB1232H_and_OpenOCD_based_JTAG_adapter]<br />
<br />
[http://vak.ru/doku.php/proj/bitbang/bitbang-jtag Low-cost Bitbang JTAG using the FTDI FT232]<br />
<br />
<br />
<br />
[[Category:Didj]]<br />
[[Category:Leapster Explorer]]<br />
[[Category:Augen eGo]]<br />
[[Category:LeapFrog Pollux Platform]]</div>Nirvoushttps://elinux.org/index.php?title=LeapFrog_Pollux_Platform:_FTDI_JTAG_How_To&diff=66451LeapFrog Pollux Platform: FTDI JTAG How To2011-09-16T01:52:21Z<p>Nirvous: /* Connecting */</p>
<hr />
<div>[[Image:Didj_DLP_JTAG.JPG |350px|thumb|Didj FTDI2232 JTAG setup]]<br />
<br />
== Background ==<br />
<br />
I had been curious about JTAG ever since I started experimenting with Didj. I had wondered about whether it could be used to investigate our Pollux-based devices. <br />
<br />
As we all progressed with our experimentation, Moogle [http://wtfmoogle.com/?p=910 identified the JTAG pads] on Didj, and then bcav added [[Didj JTAG How To | a wiki entry]] on how to use the JTAG port to debug a bootloader on Didj with [http://openocd.berlios.de/web/ OpenOCD] (Open On-Chip Debugger). We later happily discovered that JTAG pads are clearly labeled on the Leapster Explorer mainboard (in my book, its a Big Win whenever a manufacturer acknowleges our [http://cdn.makezine.com/make/MAKERS_RIGHTS.pdf Fundamental Rights!])<br />
<br />
I had JTAG experimentation on my list-of-things-to-try for a while, but I didnt want to spend $72 to buy the JTAG dongle bcav used in the wiki entry. (I did have a home-made [http://nuwiki.openwrt.org/oldwiki/OpenWrtDocs/Customizing/Hardware/JTAG_Cable wiggler cable] that I hacked together for use with WRT routers, but I wasn't confident enough that it would fit the bill for this use case. Plus the speed over a parallel port was not great)<br />
<br />
Upon learning that that the ftdi2232 chip could be used to bitbang a JTAG connection and that the same part powers many USB-based JTAG cables, I purchased a $30 breakout board that was based on that chip - [http://www.dlpdesign.com/usb/usb1232h.shtml DLP Design DLP-USB1232H] ([http://www.dlpdesign.com/usb/usb1232h-ds-v13.pdf datasheet]). <br />
<br />
What follows are the steps I used to make this breakout work with Didj, LX, and the Pollux-based eGo netbooks.<br />
<br />
== Connecting ==<br />
[[Image:JTAG PADS.jpg |150px|thumb|Didj JTAG pads]]<br />
[[Image:DidjTP103.png|150px|thumb|Didj nSRST pad on opposite side of mainboard from JTAG pads]]<br />
[[Image:LX-JTAG.jpg |150px|thumb|Leapster Explorer JTAG pads]]<br />
[[Image:LP-JTAG.png |150px|thumb|LeapPad Explorer JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-FRONT.png|150px|thumb|Augen eGo 730-4 front JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-BACK.png|150px|thumb|Augen eGo 730-4 back JTAG pads]]<br />
<br />
The table below illustrates how to connect the DLP-USB1232H device pins to Didj, LX and the eGo.<br />
The pinout on the breakout is in the [http://www.dlpdesign.com/usb1232h-ds-v12.pdf DLP-USB1232H datasheet] (pinout is on page 4 and page 7).<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Pin type<br />
! align="left" | DLP-USB1232H pin #<br />
! align="left" | Didj Test Pad label<br />
! align="left" | LX Test Pad label<br />
! align="left" | LPX Test Pad label<br />
! align="left" | eGo photo label<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TRST'''<br />
| 17<br />
| TP9<br />
| RST<br />
| RST<br />
| nTRST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDI'''<br />
| 16<br />
| TP10<br />
| TDI <br />
| TDI<br />
| TDI<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TMS'''<br />
| 5<br />
| TP11<br />
| TMS<br />
| TMS<br />
| TMS<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TCK'''<br />
| 18<br />
| TP12<br />
| TCK<br />
| TCK<br />
| TCK<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDO'''<br />
| 2<br />
| TP13<br />
| TDO<br />
| TDO<br />
| TDO<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''(S)RST'''<br />
| 13<br />
| TP103 [1]<br />
| nRST<br />
| nEXTRST<br />
| nPORST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''GND'''<br />
| Either 1 or 10<br />
| TP14<br />
| GND<br />
| GND<br />
| use any GND<br />
<br />
|}<br />
<br />
'''IMPORTANT:''' You also need to '''connect pins 8 and 9 together''' on the DLP-USB1232H module in order to configure it to be powered via USB.<br />
<br />
[1] As an alternative to TP103, either side of R43 (jumper/0 Ohms) or the right pad of R45 (unpopulated) works. This is near the other test pads.<br />
<br />
Also, the Didj or LX must be powered on.<br />
<br />
== Software Installation ==<br />
<br />
Install OpenOCD (examples are Ubuntu Lucid)<br />
<br />
$ '''sudo apt-get install openocd'''<br />
<br />
Place this configuration file - name it dlp-usb1232h.cfg - into your openocd /usr/share/openocd/scripts/interfaces directory:<br />
<br />
<code><br />
<br />
#<br />
# DLP Design DLP-USB1232H USB-to-UART/FIFO interface module<br />
#<br />
# http://www.dlpdesign.com/usb/usb1232h.shtml<br />
#<br />
interface ft2232<br />
ft2232_device_desc "Dual RS232-HS"<br />
ft2232_layout usbjtag<br />
ft2232_vid_pid 0x0403 0x6010<br />
<br />
</code><br />
<br />
<br />
Place the file below, named openocd.cfg (originally described [[Didj JTAG How To | here]]), into your home directory:<br />
<code><br />
<br />
telnet port 4444<br />
source [find interface/dlp-usb1232h.cfg]<br />
jtag_khz 15000<br />
# length of reset signal: [ms]<br />
jtag_nsrst_assert_width 100<br />
# don't talk to JTAG after reset for: [ms]<br />
jtag_nsrst_delay 250<br />
reset_config trst_and_srst separate<br />
# end reset config<br />
if { [info exists CHIPNAME] } {<br />
set _CHIPNAME $CHIPNAME<br />
} else {<br />
set _CHIPNAME pollux<br />
}<br />
if { [info exists ENDIAN] } {<br />
set _ENDIAN $ENDIAN<br />
} else {<br />
set _ENDIAN little<br />
}<br />
if { [info exists CPUTAPID ] } {<br />
set _CPUTAPID $CPUTAPID<br />
} else {<br />
# force an error till we get a good number<br />
set _CPUTAPID 0x07926f0f<br />
}<br />
#jtag scan chain<br />
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID<br />
set _TARGETNAME $_CHIPNAME.cpu<br />
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs <br />
<br />
</code><br />
<br />
== Usage ==<br />
<br />
To launch OpenOCD from your home directory:<br />
<br />
$ '''sudo /usr/bin/openocd -s /usr/share/openocd/scripts'''<br />
<br />
<br />
To access OpenOCD directly, telnet to localhost port 4444:<br />
<br />
$ '''telnet localhost 4444'''<br />
== Usage Examples ==<br />
Read the registers using the 'mdw phys <address>' command in OpenOCD. In this example we are reading the MLCCONTROL0 register:<br />
<br />
<code><br />
<br />
>halt<br />
>mdw phys 0xc0004024<br />
0xc0004024: 86534024<br />
</code> <br />
<br />
To write registers, use 'mww phys <address> <value>' In this example we are changing to the MLC to RGB888 mode, setting the H-stride and V-stride appropriately, and then setting the dirty flag:<br />
<code><br />
<br />
>halt<br />
>mww phys 0xc0004024 0x46534024<br />
>mww phys 0xc0004028 0x00000003<br />
>mww phys 0xc000402c 0x000003c0<br />
>mww phys 0xc0004024 0x4653d034<br />
</code><br />
<br />
The reset command will restart the device:<br />
>reset<br />
<br />
To debug bootloaders with GDB, see [[Didj JTAG How To]].<br />
<br />
== Resources ==<br />
<br />
The DLP-USB1232H is available from various sources, e.g.: [http://digikey.com/scripts/dksus.dll?Detail&name=813-1026-ND Digikey], [http://mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMt/5FJRvmqHBjWi/VTYGDW6 Mouser], or [http://www.saelig.com/product/UB068.htm Saelig].<br />
<br />
The module can also be used as a cheap and simple [http://www.flashrom.org/FT2232SPI_Programmer SPI BIOS chip programmer] together with the [http://www.flashrom.org flashrom] utility.<br />
<br />
== References ==<br />
<br />
[[Didj JTAG How To]]<br />
<br />
[http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter DLP-USB1232H_and_OpenOCD_based_JTAG_adapter]<br />
<br />
[http://vak.ru/doku.php/proj/bitbang/bitbang-jtag Low-cost Bitbang JTAG using the FTDI FT232]<br />
<br />
<br />
<br />
[[Category:Didj]]<br />
[[Category:Leapster Explorer]]<br />
[[Category:Augen eGo]]<br />
[[Category:LeapFrog Pollux Platform]]</div>Nirvoushttps://elinux.org/index.php?title=LeapFrog_Pollux_Platform:_FTDI_JTAG_How_To&diff=66445LeapFrog Pollux Platform: FTDI JTAG How To2011-09-16T01:47:00Z<p>Nirvous: </p>
<hr />
<div>[[Image:Didj_DLP_JTAG.JPG |350px|thumb|Didj FTDI2232 JTAG setup]]<br />
<br />
== Background ==<br />
<br />
I had been curious about JTAG ever since I started experimenting with Didj. I had wondered about whether it could be used to investigate our Pollux-based devices. <br />
<br />
As we all progressed with our experimentation, Moogle [http://wtfmoogle.com/?p=910 identified the JTAG pads] on Didj, and then bcav added [[Didj JTAG How To | a wiki entry]] on how to use the JTAG port to debug a bootloader on Didj with [http://openocd.berlios.de/web/ OpenOCD] (Open On-Chip Debugger). We later happily discovered that JTAG pads are clearly labeled on the Leapster Explorer mainboard (in my book, its a Big Win whenever a manufacturer acknowleges our [http://cdn.makezine.com/make/MAKERS_RIGHTS.pdf Fundamental Rights!])<br />
<br />
I had JTAG experimentation on my list-of-things-to-try for a while, but I didnt want to spend $72 to buy the JTAG dongle bcav used in the wiki entry. (I did have a home-made [http://nuwiki.openwrt.org/oldwiki/OpenWrtDocs/Customizing/Hardware/JTAG_Cable wiggler cable] that I hacked together for use with WRT routers, but I wasn't confident enough that it would fit the bill for this use case. Plus the speed over a parallel port was not great)<br />
<br />
Upon learning that that the ftdi2232 chip could be used to bitbang a JTAG connection and that the same part powers many USB-based JTAG cables, I purchased a $30 breakout board that was based on that chip - [http://www.dlpdesign.com/usb/usb1232h.shtml DLP Design DLP-USB1232H] ([http://www.dlpdesign.com/usb/usb1232h-ds-v13.pdf datasheet]). <br />
<br />
What follows are the steps I used to make this breakout work with Didj, LX, and the Pollux-based eGo netbooks.<br />
<br />
== Connecting ==<br />
[[Image:JTAG PADS.jpg |150px|thumb|Didj JTAG pads]]<br />
[[Image:DidjTP103.png|150px|thumb|Didj nSRST pad on opposite side of mainboard from JTAG pads]]<br />
[[Image:LX-JTAG.jpg |150px|thumb|Leapster Explorer JTAG pads]]<br />
[[Image:LP-JTAG.png |150px|thumb|LeapPad Explorer JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-FRONT.png|150px|thumb|Augen eGo 730-4 front JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-BACK.png|150px|thumb|Augen eGo 730-4 back JTAG pads]]<br />
<br />
The table below illustrates how to connect the DLP-USB1232H device pins to Didj, LX and the eGo.<br />
The pinout on the breakout is in the [http://www.dlpdesign.com/usb1232h-ds-v12.pdf DLP-USB1232H datasheet] (pinout is on page 4 and page 7).<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Pin type<br />
! align="left" | DLP-USB1232H pin #<br />
! align="left" | Didj Test Pad label<br />
! align="left" | LX Test Pad label<br />
! align="left" | eGo photo label<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TRST'''<br />
| 17<br />
| TP9<br />
| RST<br />
| nTRST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDI'''<br />
| 16<br />
| TP10<br />
| TDI <br />
| TDI<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TMS'''<br />
| 5<br />
| TP11<br />
| TMS<br />
| TMS<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TCK'''<br />
| 18<br />
| TP12<br />
| TCK<br />
| TCK<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDO'''<br />
| 2<br />
| TP13<br />
| TDO<br />
| TDO<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''(S)RST'''<br />
| 13<br />
| TP103 [1]<br />
| nRST<br />
| nPORST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''GND'''<br />
| Either 1 or 10<br />
| TP14<br />
| GND<br />
| use any GND<br />
<br />
|}<br />
<br />
'''IMPORTANT:''' You also need to '''connect pins 8 and 9 together''' on the DLP-USB1232H module in order to configure it to be powered via USB.<br />
<br />
[1] As an alternative to TP103, either side of R43 (jumper/0 Ohms) or the right pad of R45 (unpopulated) works. This is near the other test pads.<br />
<br />
Also, the Didj or LX must be powered on.<br />
<br />
== Software Installation ==<br />
<br />
Install OpenOCD (examples are Ubuntu Lucid)<br />
<br />
$ '''sudo apt-get install openocd'''<br />
<br />
Place this configuration file - name it dlp-usb1232h.cfg - into your openocd /usr/share/openocd/scripts/interfaces directory:<br />
<br />
<code><br />
<br />
#<br />
# DLP Design DLP-USB1232H USB-to-UART/FIFO interface module<br />
#<br />
# http://www.dlpdesign.com/usb/usb1232h.shtml<br />
#<br />
interface ft2232<br />
ft2232_device_desc "Dual RS232-HS"<br />
ft2232_layout usbjtag<br />
ft2232_vid_pid 0x0403 0x6010<br />
<br />
</code><br />
<br />
<br />
Place the file below, named openocd.cfg (originally described [[Didj JTAG How To | here]]), into your home directory:<br />
<code><br />
<br />
telnet port 4444<br />
source [find interface/dlp-usb1232h.cfg]<br />
jtag_khz 15000<br />
# length of reset signal: [ms]<br />
jtag_nsrst_assert_width 100<br />
# don't talk to JTAG after reset for: [ms]<br />
jtag_nsrst_delay 250<br />
reset_config trst_and_srst separate<br />
# end reset config<br />
if { [info exists CHIPNAME] } {<br />
set _CHIPNAME $CHIPNAME<br />
} else {<br />
set _CHIPNAME pollux<br />
}<br />
if { [info exists ENDIAN] } {<br />
set _ENDIAN $ENDIAN<br />
} else {<br />
set _ENDIAN little<br />
}<br />
if { [info exists CPUTAPID ] } {<br />
set _CPUTAPID $CPUTAPID<br />
} else {<br />
# force an error till we get a good number<br />
set _CPUTAPID 0x07926f0f<br />
}<br />
#jtag scan chain<br />
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID<br />
set _TARGETNAME $_CHIPNAME.cpu<br />
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs <br />
<br />
</code><br />
<br />
== Usage ==<br />
<br />
To launch OpenOCD from your home directory:<br />
<br />
$ '''sudo /usr/bin/openocd -s /usr/share/openocd/scripts'''<br />
<br />
<br />
To access OpenOCD directly, telnet to localhost port 4444:<br />
<br />
$ '''telnet localhost 4444'''<br />
== Usage Examples ==<br />
Read the registers using the 'mdw phys <address>' command in OpenOCD. In this example we are reading the MLCCONTROL0 register:<br />
<br />
<code><br />
<br />
>halt<br />
>mdw phys 0xc0004024<br />
0xc0004024: 86534024<br />
</code> <br />
<br />
To write registers, use 'mww phys <address> <value>' In this example we are changing to the MLC to RGB888 mode, setting the H-stride and V-stride appropriately, and then setting the dirty flag:<br />
<code><br />
<br />
>halt<br />
>mww phys 0xc0004024 0x46534024<br />
>mww phys 0xc0004028 0x00000003<br />
>mww phys 0xc000402c 0x000003c0<br />
>mww phys 0xc0004024 0x4653d034<br />
</code><br />
<br />
The reset command will restart the device:<br />
>reset<br />
<br />
To debug bootloaders with GDB, see [[Didj JTAG How To]].<br />
<br />
== Resources ==<br />
<br />
The DLP-USB1232H is available from various sources, e.g.: [http://digikey.com/scripts/dksus.dll?Detail&name=813-1026-ND Digikey], [http://mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMt/5FJRvmqHBjWi/VTYGDW6 Mouser], or [http://www.saelig.com/product/UB068.htm Saelig].<br />
<br />
The module can also be used as a cheap and simple [http://www.flashrom.org/FT2232SPI_Programmer SPI BIOS chip programmer] together with the [http://www.flashrom.org flashrom] utility.<br />
<br />
== References ==<br />
<br />
[[Didj JTAG How To]]<br />
<br />
[http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter DLP-USB1232H_and_OpenOCD_based_JTAG_adapter]<br />
<br />
[http://vak.ru/doku.php/proj/bitbang/bitbang-jtag Low-cost Bitbang JTAG using the FTDI FT232]<br />
<br />
<br />
<br />
[[Category:Didj]]<br />
[[Category:Leapster Explorer]]<br />
[[Category:Augen eGo]]<br />
[[Category:LeapFrog Pollux Platform]]</div>Nirvoushttps://elinux.org/index.php?title=File:LP-JTAG.png&diff=66439File:LP-JTAG.png2011-09-16T01:43:55Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=LeapFrog_Pollux_Platform:_FTDI_JTAG_How_To&diff=66385LeapFrog Pollux Platform: FTDI JTAG How To2011-09-15T04:24:55Z<p>Nirvous: </p>
<hr />
<div>[[Image:Didj_DLP_JTAG.JPG |350px|thumb|Didj FTDI2232 JTAG setup]]<br />
<br />
== Background ==<br />
<br />
I had been curious about JTAG ever since I started experimenting with Didj. I had wondered about whether it could be used to investigate our Pollux-based devices. <br />
<br />
As we all progressed with our experimentation, Moogle [http://wtfmoogle.com/?p=910 identified the JTAG pads] on Didj, and then bcav added [[Didj JTAG How To | a wiki entry]] on how to use the JTAG port to debug a bootloader on Didj with [http://openocd.berlios.de/web/ OpenOCD] (Open On-Chip Debugger). We later happily discovered that JTAG pads are clearly labeled on the Leapster Explorer mainboard (in my book, its a Big Win whenever a manufacturer acknowleges our [http://cdn.makezine.com/make/MAKERS_RIGHTS.pdf Fundamental Rights!])<br />
<br />
I had JTAG experimentation on my list-of-things-to-try for a while, but I didnt want to spend $72 to buy the JTAG dongle bcav used in the wiki entry. (I did have a home-made [http://nuwiki.openwrt.org/oldwiki/OpenWrtDocs/Customizing/Hardware/JTAG_Cable wiggler cable] that I hacked together for use with WRT routers, but I wasn't confident enough that it would fit the bill for this use case. Plus the speed over a parallel port was not great)<br />
<br />
Upon learning that that the ftdi2232 chip could be used to bitbang a JTAG connection and that the same part powers many USB-based JTAG cables, I purchased a $30 breakout board that was based on that chip - [http://www.dlpdesign.com/usb/usb1232h.shtml DLP Design DLP-USB1232H] ([http://www.dlpdesign.com/usb/usb1232h-ds-v13.pdf datasheet]). <br />
<br />
What follows are the steps I used to make this breakout work with Didj, LX, and the Pollux-based eGo netbooks.<br />
<br />
== Connecting ==<br />
[[Image:JTAG PADS.jpg |150px|thumb|Didj JTAG pads]]<br />
[[Image:DidjTP103.png|150px|thumb|Didj nSRST pad on opposite side of mainboard from JTAG pads]]<br />
[[Image:LX-JTAG.jpg |150px|thumb|Explorer JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-FRONT.png|150px|thumb|Augen eGo 730-4 front JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-BACK.png|150px|thumb|Augen eGo 730-4 back JTAG pads]]<br />
<br />
The table below illustrates how to connect the DLP-USB1232H device pins to Didj, LX and the eGo.<br />
The pinout on the breakout is in the [http://www.dlpdesign.com/usb1232h-ds-v12.pdf DLP-USB1232H datasheet] (pinout is on page 4 and page 7).<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Pin type<br />
! align="left" | DLP-USB1232H pin #<br />
! align="left" | Didj Test Pad label<br />
! align="left" | LX Test Pad label<br />
! align="left" | eGo photo label<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TRST'''<br />
| 17<br />
| TP9<br />
| RST<br />
| nTRST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDI'''<br />
| 16<br />
| TP10<br />
| TDI <br />
| TDI<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TMS'''<br />
| 5<br />
| TP11<br />
| TMS<br />
| TMS<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TCK'''<br />
| 18<br />
| TP12<br />
| TCK<br />
| TCK<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDO'''<br />
| 2<br />
| TP13<br />
| TDO<br />
| TDO<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''(S)RST'''<br />
| 13<br />
| TP103 [1]<br />
| nRST<br />
| nPORST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''GND'''<br />
| Either 1 or 10<br />
| TP14<br />
| GND<br />
| use any GND<br />
<br />
|}<br />
<br />
'''IMPORTANT:''' You also need to '''connect pins 8 and 9 together''' on the DLP-USB1232H module in order to configure it to be powered via USB.<br />
<br />
[1] As an alternative to TP103, either side of R43 (jumper/0 Ohms) or the right pad of R45 (unpopulated) works. This is near the other test pads.<br />
<br />
Also, the Didj or LX must be powered on.<br />
<br />
== Software Installation ==<br />
<br />
Install OpenOCD (examples are Ubuntu Lucid)<br />
<br />
$ '''sudo apt-get install openocd'''<br />
<br />
Place this configuration file - name it dlp-usb1232h.cfg - into your openocd /usr/share/openocd/scripts/interfaces directory:<br />
<br />
<code><br />
<br />
#<br />
# DLP Design DLP-USB1232H USB-to-UART/FIFO interface module<br />
#<br />
# http://www.dlpdesign.com/usb/usb1232h.shtml<br />
#<br />
interface ft2232<br />
ft2232_device_desc "Dual RS232-HS"<br />
ft2232_layout usbjtag<br />
ft2232_vid_pid 0x0403 0x6010<br />
<br />
</code><br />
<br />
<br />
Place the file below, named openocd.cfg (originally described [[Didj JTAG How To | here]]), into your home directory:<br />
<code><br />
<br />
telnet port 4444<br />
source [find interface/dlp-usb1232h.cfg]<br />
jtag_khz 15000<br />
# length of reset signal: [ms]<br />
jtag_nsrst_assert_width 100<br />
# don't talk to JTAG after reset for: [ms]<br />
jtag_nsrst_delay 250<br />
reset_config trst_and_srst separate<br />
# end reset config<br />
if { [info exists CHIPNAME] } {<br />
set _CHIPNAME $CHIPNAME<br />
} else {<br />
set _CHIPNAME pollux<br />
}<br />
if { [info exists ENDIAN] } {<br />
set _ENDIAN $ENDIAN<br />
} else {<br />
set _ENDIAN little<br />
}<br />
if { [info exists CPUTAPID ] } {<br />
set _CPUTAPID $CPUTAPID<br />
} else {<br />
# force an error till we get a good number<br />
set _CPUTAPID 0x07926f0f<br />
}<br />
#jtag scan chain<br />
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID<br />
set _TARGETNAME $_CHIPNAME.cpu<br />
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs <br />
<br />
</code><br />
<br />
== Usage ==<br />
<br />
To launch OpenOCD from your home directory:<br />
<br />
$ '''sudo /usr/bin/openocd -s /usr/share/openocd/scripts'''<br />
<br />
<br />
To access OpenOCD directly, telnet to localhost port 4444:<br />
<br />
$ '''telnet localhost 4444'''<br />
== Usage Examples ==<br />
Read the registers using the 'mdw phys <address>' command in OpenOCD. In this example we are reading the MLCCONTROL0 register:<br />
<br />
<code><br />
<br />
>halt<br />
>mdw phys 0xc0004024<br />
0xc0004024: 86534024<br />
</code> <br />
<br />
To write registers, use 'mww phys <address> <value>' In this example we are changing to the MLC to RGB888 mode, setting the H-stride and V-stride appropriately, and then setting the dirty flag:<br />
<code><br />
<br />
>halt<br />
>mww phys 0xc0004024 0x46534024<br />
>mww phys 0xc0004028 0x00000003<br />
>mww phys 0xc000402c 0x000003c0<br />
>mww phys 0xc0004024 0x4653d034<br />
</code><br />
<br />
The reset command will restart the device:<br />
>reset<br />
<br />
To debug bootloaders with GDB, see [[Didj JTAG How To]].<br />
<br />
== Resources ==<br />
<br />
The DLP-USB1232H is available from various sources, e.g.: [http://digikey.com/scripts/dksus.dll?Detail&name=813-1026-ND Digikey], [http://mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMt/5FJRvmqHBjWi/VTYGDW6 Mouser], or [http://www.saelig.com/product/UB068.htm Saelig].<br />
<br />
The module can also be used as a cheap and simple [http://www.flashrom.org/FT2232SPI_Programmer SPI BIOS chip programmer] together with the [http://www.flashrom.org flashrom] utility.<br />
<br />
== References ==<br />
<br />
[[Didj JTAG How To]]<br />
<br />
[http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter DLP-USB1232H_and_OpenOCD_based_JTAG_adapter]<br />
<br />
[http://vak.ru/doku.php/proj/bitbang/bitbang-jtag Low-cost Bitbang JTAG using the FTDI FT232]<br />
<br />
<br />
<br />
[[Category:Didj]]<br />
[[Category:Leapster Explorer]]<br />
[[Category:Augen eGo]]<br />
[[Category:LeapFrog Pollux Platform]]</div>Nirvoushttps://elinux.org/index.php?title=LeapFrog_Pollux_Platform:_Technical_Details&diff=64939LeapFrog Pollux Platform: Technical Details2011-09-04T22:39:32Z<p>Nirvous: </p>
<hr />
<div>{|width="100%" border="1" cellspacing="0"<br />
|-<br />
|width="10%" style="background-color:#FFFFFF;padding:5px;vertical-align:top"|'''Category'''<br />
[[LeapFrog_Pollux_Platform| LeapFrog Pollux Platform]]<br />
|width="30%" style="background-color:#FFFFFF;padding:5px;vertical-align:top"|'''Didj'''[[Didj | Page]]<br />
[[image:Didj.jpg|center|250px]]<br />
<br />
|width="30%" style="background-color:#FFFFFF;padding:5px;vertical-align:top"|'''Leapster Explorer'''[[Leapster_Explorer | Page]]<br />
[[image:LeapsterExplorer.jpg|center|250px]]<br />
<br />
|width="30%" style="background-color:#FFFFFF;padding:5px;vertical-align:top"|'''LeapPad Explorer'''[[Leappad_Explorer | Page]]<br />
[[image:Leappad_explorer_promo.jpg |center|250px]]<br />
'''* Best Guess/Promotional Specs'''<br />
|-<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
''' CPU '''<br />
<!-- ---------------Category--------------- --><br />
|colspan="3" style="background-color:#FFFFFF;padding:5px;vertical-align:top; text-align:center"|<br />
<!-- Didj --><br />
LeapFrog LF1000 branded MagicEyes [[Pollux | Pollux VF3520F]]<br />
<br />
ARM926ejs core<br />
<br />
Clocked at 393MHz<br />
|-<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
''' RAM '''<br />
<!-- ---------------Category--------------- --><br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Didj --><br />
32MB SDRAM<br />
* [[media:HYB25DC25616OCE-5.pdf | QImonda HYB25DC25616OCE-5]]<br />
* or<br />
* Nanya NT5DS16M16CS-5T<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Explorer --><br />
<br />
64MB DDR SDRAM<br />
* [[media:nt5d32m16cs-5t.pdf|Nanya NT5DS32M16CS-5T]]<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- LeapPad --><br />
<br />
64MB DDR SDRAM<br />
* [[media:nt5d32m16cs-5t.pdf|Nanya NT5DS32M16CS-5T]]<br />
<br />
|-<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
''' Storage '''<br />
<!-- ---------------Category--------------- --><br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Didj --><br />
<br />
256MB NAND<br />
* [[media:MT29F2G08AAC.pdf|Micron MT29F2G08AAC]] (Rootfs, User Data)<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Explorer --><br />
<br />
512KB NOR<br />
* [[media:sst39vf040.pdf|SST SST39VF040]] (Boot loader)<br />
<br />
512MB NAND<br />
* [[media:MT29F2G08AAC.pdf|Micron MT29F4G08AAC]] (Rootfs, User Data)<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- LeapPad --><br />
<br />
512KB NOR<br />
* [[media:sst39vf040.pdf|SST SST39VF040]] (Boot loader)<br />
<br />
2GB NAND<br />
* SM2683LT SD controller<br />
* Check sm2683lt.c in the kernel sources for more details<br />
<br />
|-<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
''' Display '''<br />
<!-- ---------------Category--------------- --><br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Didj --><br />
320x240 TFT - 3.2"<br />
* Giantplus GPM758A0<br />
* [http://www.giantplus.com.tw/en/p/34-color_stn_module-gpg0909_3.html Pinouts and Specifications]<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Explorer --><br />
320x240 TFT - 3.2" - Touch Screen<br />
* Giantplus GPM824A0 - <br />
* [http://www.texim-europe.com/promotion/402/ili9322%20driver%20datasheet_te.pdf IlI9322 TFT Driver]<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- LeapPad --><br />
480x272 5" LCD<br />
5" Touchscreen<br />
<br />
|-<br />
|style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
''' Graphics '''<br />
<!-- ---------------Category--------------- --><br />
|colspan="3" style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- All --><br />
* Display Modes: RGBA 565<br />
* MLC: Multi-layer controller provides HW compositing for up to three graphics layers<br />
** One 24-bit 2D layers (no HW accel)<br />
** One 16-bit 3D layer<br />
** One YUV video layer (no HW accel) <br />
<br />
* Graphics API OpenGL ES 1.1.<br />
* Proprietary interface to Multi- Layer Display controller for 2D RGB and YUV video buffer support.<br />
* FreeType Font renderer.<br />
* Theora video codec plays OGG-Theora files.<br />
<br />
<br />
|-<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
''' Audio '''<br />
<!-- ---------------Category--------------- --><br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Didj --><br />
<br />
[[media:CS43L22.pdf|Cirrus Logic CS43L22]]<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Explorer --><br />
<br />
[[media:CS43L22.pdf|Cirrus Logic CS43L22]]<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- LeapPad --><br />
* Cirrus Logic CS43L22 audio codec<br />
* or<br />
* LFP100 custom leapfrog Audio chip<br />
<br />
|-<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
''' Interface Types '''<br />
<!-- ---------------Category--------------- --><br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Didj --><br />
<br />
USB 2.0 device<br />
<br />
UART [1]<br />
<br />
SD/MMC [1] <br />
<br />
External NAND [1]<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Explorer --><br />
<br />
USB 2.0 device<br />
<br />
UART [1]<br />
<br />
SD/MMC [1]<br />
<br />
External NAND [1]<br />
<br />
USB 1.1 host (Proprietary Connector)<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- LeapPad --><br />
<br />
USB 2.0 device<br />
<br />
UART [1]<br />
<br />
SD/MMC [1]<br />
Didj_Enable_Networking<br />
<br />
|-<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
''' Networking '''<br />
<!-- ---------------Category--------------- --><br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Didj --><br />
USB Ethernet [2]<br />
* Requires Kernel Module to [[Didj_Enable_Networking| Enable Networking]]<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Explorer --><br />
USB Ethernet[2]<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- LeapPad --><br />
USB Ethernet[2]<br />
<br />
|-<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
''' Physical Connectors '''<br />
<!-- ---------------Category--------------- --><br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Didj --><br />
<br />
[[LeapFrog_Pollux_Platform:_Cartridge |Cartridge]] socket<br />
* NAND, SDIO and UART<br />
<br />
Mini USB B Device<br />
<br />
DC Power<br />
<br />
Headphone<br />
<br />
Charging Socket<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Explorer --><br />
<br />
[[LeapFrog_Pollux_Platform:_Cartridge |Cartridge]] socket<br />
* NAND, SDIO and UART<br />
<br />
Mini USB B Device<br />
<br />
Camera (Proprietary USB Host) [[Leapster_explorer_webcam_info|Webcam Information]]<br />
<br />
DC Power<br />
<br />
Headphone<br />
<br />
Charging Socket<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- LeapPad --><br />
<br />
[[LeapFrog_Pollux_Platform:_Cartridge |Cartridge]] socket<br />
* NAND, SDIO and UART<br />
<br />
Mini USB B Device<br />
<br />
DC Power<br />
<br />
Headphone<br />
<br />
Charging Socket<br />
<br />
|-<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
''' Human Interface '''<br />
<!-- ---------------Category--------------- --><br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Didj --><br />
<br />
10 Buttons<br />
<br />
D-Pad<br />
<br />
Speaker/Headphones<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Explorer --><br />
<br />
10 Buttons<br />
<br />
D-Pad<br />
<br />
Speaker/Headphones<br />
<br />
Touchscreen/stylus<br />
<br />
Camera: Optional<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- LeapPad --><br />
<br />
3 Buttons<br />
<br />
D-Pad<br />
<br />
Touchscreen/stylus<br />
<br />
Speaker/Headphones<br />
<br />
Microphone<br />
<br />
Accelerometer<br />
* [[Media:BST-BMA220-DS003-07.pdf|Bosch BMA220]]<br />
<br />
Camera<br />
<br />
Rumble Motor<br />
<br />
|-<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
''' Linux Kernel '''<br />
<!-- ---------------Category--------------- --><br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Didj --><br />
<br />
2.6.20<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Explorer --><br />
<br />
2.6.31<br />
<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- LeapPad --><br />
<br />
2.6.31<br />
<br />
|-<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
'''GUI'''<br />
<!-- ---------------Category--------------- --><br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Didj --><br />
Proprietary<br />
* Runs Games on Cartridges or Downloaded from LFConnect<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- Explorer --><br />
Proprietary<br />
* Based on Flash Lite for the Digital Home<br />
* Runs Content on Cartridges or Downloaded from LFConnect<br />
** Games<br />
** Ebooks<br />
** Videos<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- LeapPad --><br />
<br />
Proprietary<br />
* Based on Flash Lite for the Digital Home<br />
* Runs Content on Cartridges or Downloaded from LFConnect<br />
** Games<br />
** Ebooks<br />
** Videos<br />
<br />
|-<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
'''Oscillators'''<br />
<!-- ---------------Category--------------- --><br />
|colspan="3" style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- All --><br />
27MHz Crystal Processor<br />
<br />
12MHz Crystal USB<br />
<br />
32.768KHz RTC<br />
<br />
|-<br />
| style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
'''Power'''<br />
<!-- ---------------Category--------------- --><br />
|colspan="3" style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
<!-- All --><br />
Source<br />
* 4x AA Batteries <br />
* 9v 700maH AC Adapter<br />
<br />
Hardware<br />
* 1 Intersil ISL7665SACBAZ - Programmable Over/Under Voltage Detector [[media:isl7665s.pdf | Datasheet]]<br />
* 3 TI TPS62050 - Adjustable Step-Down Converter [[media:tps62050.pdf | Datasheet]]<br />
<br />
<!-- footer --><br />
|-<br />
|colspan="4" style="background-color:#FFFFFF;padding:5px;vertical-align:top"|<br />
[1] Requires [[LeapFrog_Pollux_Platform:_Cartridge|Adapter Cartridge]] or [[LeapFrog_Pollux_Platform:_Hardwire_Serial_Connection|Hardwiring]]<br />
<br />
[2] Requires [[LeapFrog_Pollux_Platform:_Networking| Host PC Configuration]]<br />
<!-- end of table --><br />
|}<br />
<br />
[[Category:Didj]]<br />
[[Category:Leapster Explorer]]<br />
[[Category:LeapPad Explorer]]<br />
[[Category:LeapFrog Pollux Platform]]</div>Nirvoushttps://elinux.org/index.php?title=File:BST-BMA220-DS003-07.pdf&diff=64933File:BST-BMA220-DS003-07.pdf2011-09-04T22:36:26Z<p>Nirvous: Bosch BMA220 acceleration sensor datasheet</p>
<hr />
<div>Bosch BMA220 acceleration sensor datasheet</div>Nirvoushttps://elinux.org/index.php?title=LeapPad_Explorer&diff=64783LeapPad Explorer2011-09-03T15:53:41Z<p>Nirvous: /* Images */</p>
<hr />
<div>[[image:Leappad_explorer_promo.jpg|right|350px|thumb|The Leappad Explorer (Leapfrog Enterprises)]]<br />
<br />
== Platform ==<br />
[[LeapFrog_Pollux_Platform | LeapFrog Pollux Platform]]<br />
<br />
The LeapPad Explorer is part of 3 different devices that all share a common hardware platform, based around the [[Pollux]] SoC. The platform page contains information generic across these devices, and it is recommended that you refer to that page as it is a good starting point to understanding the LeapPad Explorer, and contains some basic How To's and Tutorials to get you started.<br />
<br />
== Project Summary ==<br />
The LeapPad Explorer (like the [[Didj|Didj]] and [[Leapster_Explorer|Leapster Explorer]]) is a toy produced by Leapfrog marketed as an educational handheld gaming console for kids aged 4-9. Although it has a proprietary graphical front end, it runs a generic Linux distribution on the same ARM9-based processor as the Didj and Explorer. It also has built in accellerometer, camera, and microphone, along with a bigger touch screen. There are also hints of an internal rumble pack of some kind in the latest source code.<br />
<br />
== Source Code ==<br />
[[LeapFrog_Pollux_Platform:_Source_Code#LeapPad| Source Code]]<br />
<br />
== Tutorials/How To's ==<br />
<br />
== Technical Information ==<br />
==== Details ====<br />
[[LeapFrog_Pollux_Platform:_Technical_Details | Technical Details]]<br />
<br />
== Images ==<br />
<br />
<br />
<gallery perrow=5 caption="PCB Images"><br />
File:LeapPad_Explorer_-_Teardown_-_LeapPad_Explorer_-_Mainboard_-_Front.jpg |Scan of front side of LeapPad Explorer mainboard.<br />
File:LeapPad_Explorer_-_Teardown_-_LeapPad_Explorer_-_Mainboard_-_Rear.jpg|Scan of back side of LeapPad Explorer mainboard.<br />
File:LeapPad_Explorer_-_Teardown_-_LeapPad_Explorer_-_Mainboard_-_Desoldered.jpg|With CPU and cartridge socket desoldered - scan of back side of LeapPad Explorer mainboard.<br />
</gallery><br />
<br />
<br />
'''Issue:''' For some reason I can't upload these pictures to the wiki, so here is a link for now.<br />
[https://picasaweb.google.com/102093118465882721887/LeapPad LeapPad PCB Images]<br />
<br />
== Discussion ==<br />
<br />
* [irc://chat.freenode.net/didj #Didj on Freenode IRC] [http://www.poxlib.org/irclogs/ Channel Logs]<br />
<br />
[[Category:LeapPad Explorer]]<br />
[[Category:LeapFrog Pollux Platform]]</div>Nirvoushttps://elinux.org/index.php?title=LeapPad_Explorer&diff=64777LeapPad Explorer2011-09-03T15:53:15Z<p>Nirvous: /* Images */</p>
<hr />
<div>[[image:Leappad_explorer_promo.jpg|right|350px|thumb|The Leappad Explorer (Leapfrog Enterprises)]]<br />
<br />
== Platform ==<br />
[[LeapFrog_Pollux_Platform | LeapFrog Pollux Platform]]<br />
<br />
The LeapPad Explorer is part of 3 different devices that all share a common hardware platform, based around the [[Pollux]] SoC. The platform page contains information generic across these devices, and it is recommended that you refer to that page as it is a good starting point to understanding the LeapPad Explorer, and contains some basic How To's and Tutorials to get you started.<br />
<br />
== Project Summary ==<br />
The LeapPad Explorer (like the [[Didj|Didj]] and [[Leapster_Explorer|Leapster Explorer]]) is a toy produced by Leapfrog marketed as an educational handheld gaming console for kids aged 4-9. Although it has a proprietary graphical front end, it runs a generic Linux distribution on the same ARM9-based processor as the Didj and Explorer. It also has built in accellerometer, camera, and microphone, along with a bigger touch screen. There are also hints of an internal rumble pack of some kind in the latest source code.<br />
<br />
== Source Code ==<br />
[[LeapFrog_Pollux_Platform:_Source_Code#LeapPad| Source Code]]<br />
<br />
== Tutorials/How To's ==<br />
<br />
== Technical Information ==<br />
==== Details ====<br />
[[LeapFrog_Pollux_Platform:_Technical_Details | Technical Details]]<br />
<br />
== Images ==<br />
<br />
<br />
<gallery perrow=5 caption="PCB Images"><br />
File:LeapPad_Explorer_-_Teardown_-_LeapPad_Explorer_-_Mainboard_-_Front.jpg |Scan of front side of LeapPad Explorer mainboard.<br />
File:LeapPad_Explorer_-_Teardown_-_LeapPad_Explorer_-_Mainboard_-_Rear.jpg|Scan of back side of LeapPad Explorer mainboard.<br />
File:LeapPad_Explorer_-_Teardown_-_LeapPad_Explorer_-_Mainboard_-_Desoldered.jpg|With CPU desoldered - scan of back side of LeapPad Explorer mainboard.<br />
</gallery><br />
<br />
<br />
'''Issue:''' For some reason I can't upload these pictures to the wiki, so here is a link for now.<br />
[https://picasaweb.google.com/102093118465882721887/LeapPad LeapPad PCB Images]<br />
<br />
== Discussion ==<br />
<br />
* [irc://chat.freenode.net/didj #Didj on Freenode IRC] [http://www.poxlib.org/irclogs/ Channel Logs]<br />
<br />
[[Category:LeapPad Explorer]]<br />
[[Category:LeapFrog Pollux Platform]]</div>Nirvoushttps://elinux.org/index.php?title=LeapPad_Explorer&diff=64771LeapPad Explorer2011-09-03T15:52:38Z<p>Nirvous: /* Images */</p>
<hr />
<div>[[image:Leappad_explorer_promo.jpg|right|350px|thumb|The Leappad Explorer (Leapfrog Enterprises)]]<br />
<br />
== Platform ==<br />
[[LeapFrog_Pollux_Platform | LeapFrog Pollux Platform]]<br />
<br />
The LeapPad Explorer is part of 3 different devices that all share a common hardware platform, based around the [[Pollux]] SoC. The platform page contains information generic across these devices, and it is recommended that you refer to that page as it is a good starting point to understanding the LeapPad Explorer, and contains some basic How To's and Tutorials to get you started.<br />
<br />
== Project Summary ==<br />
The LeapPad Explorer (like the [[Didj|Didj]] and [[Leapster_Explorer|Leapster Explorer]]) is a toy produced by Leapfrog marketed as an educational handheld gaming console for kids aged 4-9. Although it has a proprietary graphical front end, it runs a generic Linux distribution on the same ARM9-based processor as the Didj and Explorer. It also has built in accellerometer, camera, and microphone, along with a bigger touch screen. There are also hints of an internal rumble pack of some kind in the latest source code.<br />
<br />
== Source Code ==<br />
[[LeapFrog_Pollux_Platform:_Source_Code#LeapPad| Source Code]]<br />
<br />
== Tutorials/How To's ==<br />
<br />
== Technical Information ==<br />
==== Details ====<br />
[[LeapFrog_Pollux_Platform:_Technical_Details | Technical Details]]<br />
<br />
== Images ==<br />
<br />
<br />
<gallery perrow=5 caption="PCB Images"><br />
File:LeapPad_Explorer_-_Teardown_-_LeapPad_Explorer_-_Mainboard_-_Front.jpg |Scan of front side of LeapPad Explorer mainboard.<br />
File:LeapPad_Explorer_-_Teardown_-_LeapPad_Explorer_-_Mainboard_-_Desoldered.jpg|With CPU desoldered - scan of back side of LeapPad Explorer mainboard.<br />
File:LeapPad_Explorer_-_Teardown_-_LeapPad_Explorer_-_Mainboard_-_Rear.jpg|Scan of back side of LeapPad Explorer mainboard.<br />
</gallery><br />
<br />
<br />
'''Issue:''' For some reason I can't upload these pictures to the wiki, so here is a link for now.<br />
[https://picasaweb.google.com/102093118465882721887/LeapPad LeapPad PCB Images]<br />
<br />
== Discussion ==<br />
<br />
* [irc://chat.freenode.net/didj #Didj on Freenode IRC] [http://www.poxlib.org/irclogs/ Channel Logs]<br />
<br />
[[Category:LeapPad Explorer]]<br />
[[Category:LeapFrog Pollux Platform]]</div>Nirvoushttps://elinux.org/index.php?title=File:LeapPad_Explorer_-_Teardown_-_LeapPad_Explorer_-_Mainboard_-_Desoldered.jpg&diff=64765File:LeapPad Explorer - Teardown - LeapPad Explorer - Mainboard - Desoldered.jpg2011-09-03T15:44:24Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=File:LP-Rear-desoldered1-PS.jpg&diff=64759File:LP-Rear-desoldered1-PS.jpg2011-09-03T15:40:28Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=File:LeapPad_Explorer_-_Teardown_-_LeapPad_Explorer_-_Mainboard_-_Front.jpg&diff=64753File:LeapPad Explorer - Teardown - LeapPad Explorer - Mainboard - Front.jpg2011-09-03T15:38:50Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=File:LeapPad_Explorer_-_Teardown_-_LeapPad_Explorer_-_Mainboard_-_Rear.jpg&diff=64747File:LeapPad Explorer - Teardown - LeapPad Explorer - Mainboard - Rear.jpg2011-09-03T15:38:21Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=Augen_eGo:_BGA_pin_traces&diff=27463Augen eGo: BGA pin traces2010-11-18T17:28:12Z<p>Nirvous: </p>
<hr />
<div> W3 (SA25) --> Davicom DM9000 pin 34 (interrupt out)<br />
T1 (PWMOUT0/GPIOA[30]) --> J20 (LCD socket) pin 22</div>Nirvoushttps://elinux.org/index.php?title=Augen_eGo:_OE-A730_to_OE-A733&diff=27457Augen eGo: OE-A730 to OE-A7332010-11-18T17:25:10Z<p>Nirvous: </p>
<hr />
<div>[[Image:Blue730.jpg |150px|thumb|Augen E-Go OE-A730]]<br />
[[Image:Black731.jpg |150px|thumb|Augen E-Go OE-A731]]<br />
[[Image:Silver732.jpg |150px|thumb|Augen E-Go OE-A732]]<br />
[[Image:Red-ego733.jpg |150px|thumb|Augen E-Go OE-A733]]<br />
== Overview ==<br />
<br />
<br />
There are four Augen E-Go netbooks based on the MagicEyes [[Pollux]] processor: OE-A730, OE-A731, OE-A732, and OE-A733. As far as we know they are technically identical, the difference being the color of the enclosure. The devices ship by default with WinCE (but [http://www.handhelds.org/moin/moin.cgi/HaRET HaRET] will run on it, facilitating investigation). Most importantly, we have had success [http://wtfmoogle.com/?p=1708 UART-booting the Linux kernel used in the Leapster Explorer] on the device. <br />
<br />
== Tutorials/How To's ==<br />
<br />
* [[Didj,_Explorer_and_eGo_(Pollux)_FTDI_JTAG_How_To| FTDI JTAG How To ]] <br />
<br />
<br />
== Specifications ==<br />
<br />
<br />
'''General:'''<br />
* MagicEyes [[Pollux]] VF3520F MHz processor (ARM 926EJ-S) [[media:pollux-datasheet.pdf|Datasheet]]<br />
* 128 MB DDR RAM<br />
* 2 GB Nand flash storage<br />
* SD/MMC slot<br />
* AC97 audio w/two built-in 0.5W speakers <br />
* 10/100 Mbps Ethernet<br />
* 802.11b/g Wireless LAN<br />
* Built-in digital media card reader<br />
* Keyboard with TouchPad<br />
* Power LED, WiFi LED, Battery LED and Activity LED<br />
* 7-inch widescreen TFT LCD (800 x 480) [[media:at070tn82.pdf|AT070TN82 Datasheet]]<br />
<br />
<br />
'''I/O ports:'''<br />
* Two (2) USB 1.1 ports<br />
* One (1) Mini USB port<br />
* One (1) Microphone in jack<br />
* One (1) Headphone out jack<br />
* One (1) RJ-45 Ethernet port<br />
* One (1) Rest button (on bottom)<br />
<br />
<br />
'''Power Specifications:'''<br />
* DC 9V - 2A<br />
* Battery - Lithium Polymer - 7.4V, 16 Wh - 2100 mAh<br />
<br />
<br />
'''Unit Dimensions:'''<br />
* 1.25 x 8.5 x 5.5-inches (H x W x D, approximate)<br />
* Weight: 1.6 pounds<br />
<br />
== Chip List ==<br />
[[Image:Augen-eGo-mainboard-front.jpg |350px|thumb|Scan of front side of Augen eGo Pollux mainboard.]]<br />
<br />
<br />
[[Image:Augen-eGo-OEA732-mainboard-front-CPU-desoldered-s.jpg |350px|thumb|Scan of front side of Augen eGo Pollux mainboard - CPU removed.]]<br />
<br />
[[Image:Augen-eGo-mainboard-back.jpg |350px|thumb|Scan of back side of Augen eGo Pollux mainboard.]]<br />
<br />
[[Image:Augen-eGo-oea732-Touchpad.jpg|200px|thumb|Scan of Augen eGo Pollux touchpad.]]<br />
<br />
[[Image:Thine-THC63LVDM63A.jpg|200px|thumb|LVDS receiver]]<br />
<br />
[[Image:Augen-eGo-pollux-Wifi-IC.jpg|200px|thumb|Ralink RT2070L Wifi IC]]<br />
<br />
Samsung K9GAG08U0M<br />
<br />
'''SDRAM:''' Nanya NT5DS64M8CS-5T [[media:Nt5d32m16cs-5t.pdf|Datasheet]]<br />
<br />
'''Audio:''' Cirrus 42L52CNZ [[media:Cirrus-CS42L52.pdf|Datasheet]]<br />
<br />
'''Ethernet:''' Davicom DM9000AEP [[media:Davicom-DM9000AEPProductBrief_v1.0.pdf|Product Brief]], [[media:DAVICOM-DM9000A-DATASHEET-F01-101906.pdf|Datasheet]], [[media:DAVICOM_DM9000Acircuit_EMI_052306.pdf|Circuit]]<br />
<br />
'''Wifi:''' Ralink RT2070L<br />
<br />
'''USB Keyboard Controller:''' Cypress CY7C63413C-PVXC [[media:Cypress_CY7C63413C_CY7C63513C_CY7C63613C.pdf|Datasheet]]<br />
<br />
'''Touchpad Controller:''' Cypress CY8C2043412LKXI [[media:Cypress-CY8C20x344.pdf|Datasheet]]<br />
<br />
'''LVDS Host-LCD Panel Interface Receiver:''' Thine THC63LVDM63A [[media:Thine-THC63LVDM63A.pdf|Datasheet]]<br />
<br />
== Technical Information ==<br />
<br />
[http://pastebin.com/n1sZVECB Pollux register dump (using HaRET)]<br />
<br />
[http://iliketopoopinthe.pastebin.com/M0DJLdwz MMU memory map dump]<br />
<br />
[[Augen_eGo:_BGA_pin_traces]]</div>Nirvoushttps://elinux.org/index.php?title=Augen_eGo:_OE-A730_to_OE-A733&diff=27427Augen eGo: OE-A730 to OE-A7332010-11-18T05:54:29Z<p>Nirvous: </p>
<hr />
<div>[[Image:Blue730.jpg |150px|thumb|Augen E-Go OE-A730]]<br />
[[Image:Black731.jpg |150px|thumb|Augen E-Go OE-A731]]<br />
[[Image:Silver732.jpg |150px|thumb|Augen E-Go OE-A732]]<br />
[[Image:Red-ego733.jpg |150px|thumb|Augen E-Go OE-A733]]<br />
== Overview ==<br />
<br />
<br />
There are four Augen E-Go netbooks based on the MagicEyes [[Pollux]] processor: OE-A730, OE-A731, OE-A732, and OE-A733. As far as we know they are technically identical, the difference being the color of the enclosure. The devices ship by default with WinCE (but [http://www.handhelds.org/moin/moin.cgi/HaRET HaRET] will run on it, facilitating investigation). Most importantly, we have had success [http://wtfmoogle.com/?p=1708 UART-booting the Linux kernel used in the Leapster Explorer] on the device. <br />
<br />
== Tutorials/How To's ==<br />
<br />
* [[Didj,_Explorer_and_eGo_(Pollux)_FTDI_JTAG_How_To| FTDI JTAG How To ]] <br />
<br />
<br />
== Specifications ==<br />
<br />
<br />
'''General:'''<br />
* MagicEyes [[Pollux]] VF3520F MHz processor (ARM 926EJ-S) [[media:pollux-datasheet.pdf|Datasheet]]<br />
* 128 MB DDR RAM<br />
* 2 GB Nand flash storage<br />
* SD/MMC slot<br />
* AC97 audio w/two built-in 0.5W speakers <br />
* 10/100 Mbps Ethernet<br />
* 802.11b/g Wireless LAN<br />
* Built-in digital media card reader<br />
* Keyboard with TouchPad<br />
* Power LED, WiFi LED, Battery LED and Activity LED<br />
* 7-inch widescreen TFT LCD (800 x 480) [[media:at070tn82.pdf|AT070TN82 Datasheet]]<br />
<br />
<br />
'''I/O ports:'''<br />
* Two (2) USB 1.1 ports<br />
* One (1) Mini USB port<br />
* One (1) Microphone in jack<br />
* One (1) Headphone out jack<br />
* One (1) RJ-45 Ethernet port<br />
* One (1) Rest button (on bottom)<br />
<br />
<br />
'''Power Specifications:'''<br />
* DC 9V - 2A<br />
* Battery - Lithium Polymer - 7.4V, 16 Wh - 2100 mAh<br />
<br />
<br />
'''Unit Dimensions:'''<br />
* 1.25 x 8.5 x 5.5-inches (H x W x D, approximate)<br />
* Weight: 1.6 pounds<br />
<br />
== Chip List ==<br />
[[Image:Augen-eGo-mainboard-front.jpg |350px|thumb|Scan of front side of Augen eGo Pollux mainboard.]]<br />
<br />
<br />
[[Image:Augen-eGo-OEA732-mainboard-front-CPU-desoldered-s.jpg |350px|thumb|Scan of front side of Augen eGo Pollux mainboard - CPU removed.]]<br />
<br />
[[Image:Augen-eGo-mainboard-back.jpg |350px|thumb|Scan of back side of Augen eGo Pollux mainboard.]]<br />
<br />
[[Image:Augen-eGo-oea732-Touchpad.jpg|200px|thumb|Scan of Augen eGo Pollux touchpad.]]<br />
<br />
[[Image:Thine-THC63LVDM63A.jpg|200px|thumb|LVDS receiver]]<br />
<br />
[[Image:Augen-eGo-pollux-Wifi-IC.jpg|200px|thumb|Ralink RT2070L Wifi IC]]<br />
<br />
Samsung K9GAG08U0M<br />
<br />
'''SDRAM:''' Nanya NT5DS64M8CS-5T [[media:Nt5d32m16cs-5t.pdf|Datasheet]]<br />
<br />
'''Audio:''' Cirrus 42L52CNZ [[media:Cirrus-CS42L52.pdf|Datasheet]]<br />
<br />
'''Ethernet:''' Davicom DM9000AEP [[media:Davicom-DM9000AEPProductBrief_v1.0.pdf|Product Brief]], [[media:DAVICOM-DM9000A-DATASHEET-F01-101906.pdf|Datasheet]], [[media:DAVICOM_DM9000Acircuit_EMI_052306.pdf|Circuit]]<br />
<br />
'''Wifi:''' Ralink RT2070L<br />
<br />
'''USB Keyboard Controller:''' Cypress CY7C63413C-PVXC [[media:Cypress_CY7C63413C_CY7C63513C_CY7C63613C.pdf|Datasheet]]<br />
<br />
'''Touchpad Controller:''' Cypress CY8C2043412LKXI [[media:Cypress-CY8C20x344.pdf|Datasheet]]<br />
<br />
'''LVDS Host-LCD Panel Interface Receiver:''' Thine THC63LVDM63A [[media:Thine-THC63LVDM63A.pdf|Datasheet]]<br />
<br />
== Technical Information ==<br />
<br />
[http://pastebin.com/n1sZVECB Pollux register dump (using HaRET)]<br />
<br />
[http://iliketopoopinthe.pastebin.com/M0DJLdwz MMU memory map dump]</div>Nirvoushttps://elinux.org/index.php?title=LeapFrog_Pollux_Platform:_FTDI_JTAG_How_To&diff=27421LeapFrog Pollux Platform: FTDI JTAG How To2010-11-18T05:35:27Z<p>Nirvous: /* Usage Examples */</p>
<hr />
<div>[[Image:Didj_DLP_JTAG.JPG |350px|thumb|Didj FTDI2232 JTAG setup]]<br />
<br />
== Background ==<br />
<br />
I had been curious about JTAG ever since I started experimenting with Didj. I had wondered about whether it could be used to investigate our Pollux-based devices. <br />
<br />
As we all progressed with our experimentation, Moogle [http://wtfmoogle.com/?p=910 identified the JTAG pads] on Didj, and then bcav added [[Didj JTAG How To | a wiki entry]] on how to use the JTAG port to debug a bootloader on Didj with [http://openocd.berlios.de/web/ OpenOCD] (Open On-Chip Debugger). We later happily discovered that JTAG pads are clearly labeled on the Leapster Explorer mainboard (in my book, its a Big Win whenever a manufacturer acknowleges our [http://cdn.makezine.com/make/MAKERS_RIGHTS.pdf Fundamental Rights!])<br />
<br />
I had JTAG experimentation on my list-of-things-to-try for a while, but I didnt want to spend $72 to buy the JTAG dongle bcav used in the wiki entry. (I did have a home-made [http://nuwiki.openwrt.org/oldwiki/OpenWrtDocs/Customizing/Hardware/JTAG_Cable wiggler cable] that I hacked together for use with WRT routers, but I wasn't confident enough that it would fit the bill for this use case. Plus the speed over a parallel port was not great)<br />
<br />
Upon learning that that the ftdi2232 chip could be used to bitbang a JTAG connection and that the same part powers many USB-based JTAG cables, I purchased a $30 breakout board that was based on that chip - [http://www.dlpdesign.com/usb/usb1232h.shtml DLP Design DLP-USB1232H] ([http://www.dlpdesign.com/usb1232h-ds-v12.pdf datasheet]). <br />
<br />
What follows are the steps I used to make this breakout work with Didj, LX, and the Pollux-based eGo netbooks.<br />
<br />
== Connecting ==<br />
[[Image:JTAG PADS.jpg |150px|thumb|Didj JTAG pads]]<br />
[[Image:DidjTP103.png|150px|thumb|Didj nSRST pad on opposite side of mainboard from JTAG pads]]<br />
[[Image:LX-JTAG.jpg |150px|thumb|Explorer JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-FRONT.png|150px|thumb|Augen eGo 730-4 front JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-BACK.png|150px|thumb|Augen eGo 730-4 back JTAG pads]]<br />
<br />
The table below illustrates how to connect the DLP-USB1232H device pins to Didj, LX and the eGo.<br />
The pinout on the breakout is in the [http://www.dlpdesign.com/usb1232h-ds-v12.pdf DLP-USB1232H datasheet] (pinout is on page 4 and page 7).<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Pin type<br />
! align="left" | DLP-USB1232H pin #<br />
! align="left" | Didj Test Pad label<br />
! align="left" | LX Test Pad label<br />
! align="left" | eGo photo label<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TRST'''<br />
| 17<br />
| TP9<br />
| RST<br />
| nTRST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDI'''<br />
| 16<br />
| TP10<br />
| TDI <br />
| TDI<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TMS'''<br />
| 5<br />
| TP11<br />
| TMS<br />
| TMS<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TCK'''<br />
| 18<br />
| TP12<br />
| TCK<br />
| TCK<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDO'''<br />
| 2<br />
| TP13<br />
| TDO<br />
| TDO<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''(S)RST'''<br />
| 13<br />
| TP103<br />
| nRST<br />
| nPORST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''GND'''<br />
| Either 1 or 10<br />
| TP14<br />
| GND<br />
| use any GND<br />
<br />
|}<br />
<br />
'''IMPORTANT:''' You also need to '''connect pins 8 and 9 together''' on the DLP-USB1232H module in order to configure it to be powered via USB.<br />
<br />
Also, the Didj or LX must be powered on.<br />
<br />
== Software Installation ==<br />
<br />
Install OpenOCD (examples are Ubuntu Lucid)<br />
<br />
$ '''sudo apt-get install openocd'''<br />
<br />
Place this configuration file - name it dlp-usb1232h.cfg - into your openocd /usr/share/openocd/scripts/interfaces directory:<br />
<br />
<code><br />
<br />
#<br />
# DLP Design DLP-USB1232H USB-to-UART/FIFO interface module<br />
#<br />
# http://www.dlpdesign.com/usb/usb1232h.shtml<br />
#<br />
interface ft2232<br />
ft2232_device_desc "Dual RS232-HS"<br />
ft2232_layout usbjtag<br />
ft2232_vid_pid 0x0403 0x6010<br />
<br />
</code><br />
<br />
<br />
Place the file below, named openocd.cfg (originally described [[Didj JTAG How To | here]]), into your home directory:<br />
<code><br />
<br />
telnet port 4444<br />
source [find interface/dlp-usb1232h.cfg]<br />
jtag_khz 15000<br />
# length of reset signal: [ms]<br />
jtag_nsrst_assert_width 100<br />
# don't talk to JTAG after reset for: [ms]<br />
jtag_nsrst_delay 250<br />
reset_config trst_and_srst separate<br />
# end reset config<br />
if { [info exists CHIPNAME] } {<br />
set _CHIPNAME $CHIPNAME<br />
} else {<br />
set _CHIPNAME pollux<br />
}<br />
if { [info exists ENDIAN] } {<br />
set _ENDIAN $ENDIAN<br />
} else {<br />
set _ENDIAN little<br />
}<br />
if { [info exists CPUTAPID ] } {<br />
set _CPUTAPID $CPUTAPID<br />
} else {<br />
# force an error till we get a good number<br />
set _CPUTAPID 0x07926f0f<br />
}<br />
#jtag scan chain<br />
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID<br />
set _TARGETNAME $_CHIPNAME.cpu<br />
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs <br />
<br />
</code><br />
<br />
== Usage ==<br />
<br />
To launch OpenOCD from your home directory:<br />
<br />
$ '''sudo /usr/bin/openocd -s /usr/share/openocd/scripts'''<br />
<br />
<br />
To access OpenOCD directly, telnet to localhost port 4444:<br />
<br />
$ '''telnet localhost 4444'''<br />
== Usage Examples ==<br />
Read the registers using the 'mdw phys <address>' command in OpenOCD. In this example we are reading the MLCCONTROL0 register:<br />
<br />
<code><br />
<br />
>halt<br />
>mdw phys 0xc0004024<br />
0xc0004024: 86534024<br />
</code> <br />
<br />
To write registers, use 'mww phys <address> <value>' In this example we are changing to the MLC to RGB888 mode, setting the H-stride and V-stride appropriately, and then setting the dirty flag:<br />
<code><br />
<br />
>halt<br />
>mww phys 0xc0004024 0x46534024<br />
>mww phys 0xc0004028 0x00000003<br />
>mww phys 0xc000402c 0x000003c0<br />
>mww phys 0xc0004024 0x4653d034<br />
</code><br />
<br />
The reset command will restart the device:<br />
>reset<br />
<br />
To debug bootloaders with GDB, see [[Didj JTAG How To]].<br />
<br />
== Resources ==<br />
<br />
The DLP-USB1232H is available from various sources, e.g.: [http://digikey.com/scripts/dksus.dll?Detail&name=813-1026-ND Digikey], [http://mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMt/5FJRvmqHBjWi/VTYGDW6 Mouser], or [http://www.saelig.com/product/UB068.htm Saelig].<br />
<br />
The module can also be used as a cheap and simple [http://www.flashrom.org/FT2232SPI_Programmer SPI BIOS chip programmer] together with the [http://www.flashrom.org flashrom] utility.<br />
<br />
== References ==<br />
<br />
[[Didj JTAG How To]]<br />
<br />
[http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter DLP-USB1232H_and_OpenOCD_based_JTAG_adapter]<br />
<br />
[http://vak.ru/doku.php/proj/bitbang/bitbang-jtag Low-cost Bitbang JTAG using the FTDI FT232]<br />
<br />
== To do ==<br />
<br />
Photos</div>Nirvoushttps://elinux.org/index.php?title=LeapFrog_Pollux_Platform:_FTDI_JTAG_How_To&diff=27415LeapFrog Pollux Platform: FTDI JTAG How To2010-11-18T05:32:23Z<p>Nirvous: /* Connecting */</p>
<hr />
<div>[[Image:Didj_DLP_JTAG.JPG |350px|thumb|Didj FTDI2232 JTAG setup]]<br />
<br />
== Background ==<br />
<br />
I had been curious about JTAG ever since I started experimenting with Didj. I had wondered about whether it could be used to investigate our Pollux-based devices. <br />
<br />
As we all progressed with our experimentation, Moogle [http://wtfmoogle.com/?p=910 identified the JTAG pads] on Didj, and then bcav added [[Didj JTAG How To | a wiki entry]] on how to use the JTAG port to debug a bootloader on Didj with [http://openocd.berlios.de/web/ OpenOCD] (Open On-Chip Debugger). We later happily discovered that JTAG pads are clearly labeled on the Leapster Explorer mainboard (in my book, its a Big Win whenever a manufacturer acknowleges our [http://cdn.makezine.com/make/MAKERS_RIGHTS.pdf Fundamental Rights!])<br />
<br />
I had JTAG experimentation on my list-of-things-to-try for a while, but I didnt want to spend $72 to buy the JTAG dongle bcav used in the wiki entry. (I did have a home-made [http://nuwiki.openwrt.org/oldwiki/OpenWrtDocs/Customizing/Hardware/JTAG_Cable wiggler cable] that I hacked together for use with WRT routers, but I wasn't confident enough that it would fit the bill for this use case. Plus the speed over a parallel port was not great)<br />
<br />
Upon learning that that the ftdi2232 chip could be used to bitbang a JTAG connection and that the same part powers many USB-based JTAG cables, I purchased a $30 breakout board that was based on that chip - [http://www.dlpdesign.com/usb/usb1232h.shtml DLP Design DLP-USB1232H] ([http://www.dlpdesign.com/usb1232h-ds-v12.pdf datasheet]). <br />
<br />
What follows are the steps I used to make this breakout work with Didj, LX, and the Pollux-based eGo netbooks.<br />
<br />
== Connecting ==<br />
[[Image:JTAG PADS.jpg |150px|thumb|Didj JTAG pads]]<br />
[[Image:DidjTP103.png|150px|thumb|Didj nSRST pad on opposite side of mainboard from JTAG pads]]<br />
[[Image:LX-JTAG.jpg |150px|thumb|Explorer JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-FRONT.png|150px|thumb|Augen eGo 730-4 front JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-BACK.png|150px|thumb|Augen eGo 730-4 back JTAG pads]]<br />
<br />
The table below illustrates how to connect the DLP-USB1232H device pins to Didj, LX and the eGo.<br />
The pinout on the breakout is in the [http://www.dlpdesign.com/usb1232h-ds-v12.pdf DLP-USB1232H datasheet] (pinout is on page 4 and page 7).<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Pin type<br />
! align="left" | DLP-USB1232H pin #<br />
! align="left" | Didj Test Pad label<br />
! align="left" | LX Test Pad label<br />
! align="left" | eGo photo label<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TRST'''<br />
| 17<br />
| TP9<br />
| RST<br />
| nTRST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDI'''<br />
| 16<br />
| TP10<br />
| TDI <br />
| TDI<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TMS'''<br />
| 5<br />
| TP11<br />
| TMS<br />
| TMS<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TCK'''<br />
| 18<br />
| TP12<br />
| TCK<br />
| TCK<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDO'''<br />
| 2<br />
| TP13<br />
| TDO<br />
| TDO<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''(S)RST'''<br />
| 13<br />
| TP103<br />
| nRST<br />
| nPORST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''GND'''<br />
| Either 1 or 10<br />
| TP14<br />
| GND<br />
| use any GND<br />
<br />
|}<br />
<br />
'''IMPORTANT:''' You also need to '''connect pins 8 and 9 together''' on the DLP-USB1232H module in order to configure it to be powered via USB.<br />
<br />
Also, the Didj or LX must be powered on.<br />
<br />
== Software Installation ==<br />
<br />
Install OpenOCD (examples are Ubuntu Lucid)<br />
<br />
$ '''sudo apt-get install openocd'''<br />
<br />
Place this configuration file - name it dlp-usb1232h.cfg - into your openocd /usr/share/openocd/scripts/interfaces directory:<br />
<br />
<code><br />
<br />
#<br />
# DLP Design DLP-USB1232H USB-to-UART/FIFO interface module<br />
#<br />
# http://www.dlpdesign.com/usb/usb1232h.shtml<br />
#<br />
interface ft2232<br />
ft2232_device_desc "Dual RS232-HS"<br />
ft2232_layout usbjtag<br />
ft2232_vid_pid 0x0403 0x6010<br />
<br />
</code><br />
<br />
<br />
Place the file below, named openocd.cfg (originally described [[Didj JTAG How To | here]]), into your home directory:<br />
<code><br />
<br />
telnet port 4444<br />
source [find interface/dlp-usb1232h.cfg]<br />
jtag_khz 15000<br />
# length of reset signal: [ms]<br />
jtag_nsrst_assert_width 100<br />
# don't talk to JTAG after reset for: [ms]<br />
jtag_nsrst_delay 250<br />
reset_config trst_and_srst separate<br />
# end reset config<br />
if { [info exists CHIPNAME] } {<br />
set _CHIPNAME $CHIPNAME<br />
} else {<br />
set _CHIPNAME pollux<br />
}<br />
if { [info exists ENDIAN] } {<br />
set _ENDIAN $ENDIAN<br />
} else {<br />
set _ENDIAN little<br />
}<br />
if { [info exists CPUTAPID ] } {<br />
set _CPUTAPID $CPUTAPID<br />
} else {<br />
# force an error till we get a good number<br />
set _CPUTAPID 0x07926f0f<br />
}<br />
#jtag scan chain<br />
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID<br />
set _TARGETNAME $_CHIPNAME.cpu<br />
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs <br />
<br />
</code><br />
<br />
== Usage ==<br />
<br />
To launch OpenOCD from your home directory:<br />
<br />
$ '''sudo /usr/bin/openocd -s /usr/share/openocd/scripts'''<br />
<br />
<br />
To access OpenOCD directly, telnet to localhost port 4444:<br />
<br />
$ '''telnet localhost 4444'''<br />
== Usage Examples ==<br />
Read the registers using the 'mdw phys <address>' command in OpenOCD. In this example we are reading the MLCCONTROL0 register:<br />
<br />
<code><br />
<br />
>halt<br />
>mdw phys 0xc0004024<br />
0xc0004024: 86534024<br />
</code> <br />
<br />
To write registers, use 'mww phys <address> <value>' In this example we are changing to the MLC to RGB888 mode, setting the H-stride and V-stride appropriately, and then setting the dirty flag:<br />
<code><br />
<br />
>halt<br />
>mww phys 0xc0004024 0x46534024<br />
>mww phys 0xc0004028 0x00000003<br />
>mww phys 0xc000402c 0x000003c0<br />
>mww phys 0xc0004024 0x4653d034<br />
</code><br />
<br />
The reset command will restart the device (Explorer only at this time):<br />
>reset<br />
<br />
To debug bootloaders with GDB, see [[Didj JTAG How To]].<br />
<br />
== Resources ==<br />
<br />
The DLP-USB1232H is available from various sources, e.g.: [http://digikey.com/scripts/dksus.dll?Detail&name=813-1026-ND Digikey], [http://mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMt/5FJRvmqHBjWi/VTYGDW6 Mouser], or [http://www.saelig.com/product/UB068.htm Saelig].<br />
<br />
The module can also be used as a cheap and simple [http://www.flashrom.org/FT2232SPI_Programmer SPI BIOS chip programmer] together with the [http://www.flashrom.org flashrom] utility.<br />
<br />
== References ==<br />
<br />
[[Didj JTAG How To]]<br />
<br />
[http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter DLP-USB1232H_and_OpenOCD_based_JTAG_adapter]<br />
<br />
[http://vak.ru/doku.php/proj/bitbang/bitbang-jtag Low-cost Bitbang JTAG using the FTDI FT232]<br />
<br />
== To do ==<br />
<br />
Photos</div>Nirvoushttps://elinux.org/index.php?title=LeapFrog_Pollux_Platform:_FTDI_JTAG_How_To&diff=27409LeapFrog Pollux Platform: FTDI JTAG How To2010-11-18T05:31:43Z<p>Nirvous: /* Background */</p>
<hr />
<div>[[Image:Didj_DLP_JTAG.JPG |350px|thumb|Didj FTDI2232 JTAG setup]]<br />
<br />
== Background ==<br />
<br />
I had been curious about JTAG ever since I started experimenting with Didj. I had wondered about whether it could be used to investigate our Pollux-based devices. <br />
<br />
As we all progressed with our experimentation, Moogle [http://wtfmoogle.com/?p=910 identified the JTAG pads] on Didj, and then bcav added [[Didj JTAG How To | a wiki entry]] on how to use the JTAG port to debug a bootloader on Didj with [http://openocd.berlios.de/web/ OpenOCD] (Open On-Chip Debugger). We later happily discovered that JTAG pads are clearly labeled on the Leapster Explorer mainboard (in my book, its a Big Win whenever a manufacturer acknowleges our [http://cdn.makezine.com/make/MAKERS_RIGHTS.pdf Fundamental Rights!])<br />
<br />
I had JTAG experimentation on my list-of-things-to-try for a while, but I didnt want to spend $72 to buy the JTAG dongle bcav used in the wiki entry. (I did have a home-made [http://nuwiki.openwrt.org/oldwiki/OpenWrtDocs/Customizing/Hardware/JTAG_Cable wiggler cable] that I hacked together for use with WRT routers, but I wasn't confident enough that it would fit the bill for this use case. Plus the speed over a parallel port was not great)<br />
<br />
Upon learning that that the ftdi2232 chip could be used to bitbang a JTAG connection and that the same part powers many USB-based JTAG cables, I purchased a $30 breakout board that was based on that chip - [http://www.dlpdesign.com/usb/usb1232h.shtml DLP Design DLP-USB1232H] ([http://www.dlpdesign.com/usb1232h-ds-v12.pdf datasheet]). <br />
<br />
What follows are the steps I used to make this breakout work with Didj, LX, and the Pollux-based eGo netbooks.<br />
<br />
== Connecting ==<br />
[[Image:JTAG PADS.jpg |150px|thumb|Didj JTAG pads]]<br />
[[Image:DidjTP103.png|150px|thumb|Didj nSRST pad on opposite side of mainboard from JTAG pads]]<br />
[[Image:LX-JTAG.jpg |150px|thumb|Explorer JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-FRONT.png|150px|thumb|Augen eGo 730-4 front JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-BACK.png|150px|thumb|Augen eGo 730-4 back JTAG pads]]<br />
<br />
The table below illustrates how to connect the DLP-USB1232H device pins to Didj and LX.<br />
The pinout on the breakout is in the [http://www.dlpdesign.com/usb1232h-ds-v12.pdf DLP-USB1232H datasheet] (pinout is on page 4 and page 7).<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Pin type<br />
! align="left" | DLP-USB1232H pin #<br />
! align="left" | Didj Test Pad label<br />
! align="left" | LX Test Pad label<br />
! align="left" | eGo photo label<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TRST'''<br />
| 17<br />
| TP9<br />
| RST<br />
| nTRST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDI'''<br />
| 16<br />
| TP10<br />
| TDI <br />
| TDI<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TMS'''<br />
| 5<br />
| TP11<br />
| TMS<br />
| TMS<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TCK'''<br />
| 18<br />
| TP12<br />
| TCK<br />
| TCK<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDO'''<br />
| 2<br />
| TP13<br />
| TDO<br />
| TDO<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''(S)RST'''<br />
| 13<br />
| TP103<br />
| nRST<br />
| nPORST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''GND'''<br />
| Either 1 or 10<br />
| TP14<br />
| GND<br />
| use any GND<br />
<br />
|}<br />
<br />
'''IMPORTANT:''' You also need to '''connect pins 8 and 9 together''' on the DLP-USB1232H module in order to configure it to be powered via USB.<br />
<br />
Also, the Didj or LX must be powered on.<br />
<br />
== Software Installation ==<br />
<br />
Install OpenOCD (examples are Ubuntu Lucid)<br />
<br />
$ '''sudo apt-get install openocd'''<br />
<br />
Place this configuration file - name it dlp-usb1232h.cfg - into your openocd /usr/share/openocd/scripts/interfaces directory:<br />
<br />
<code><br />
<br />
#<br />
# DLP Design DLP-USB1232H USB-to-UART/FIFO interface module<br />
#<br />
# http://www.dlpdesign.com/usb/usb1232h.shtml<br />
#<br />
interface ft2232<br />
ft2232_device_desc "Dual RS232-HS"<br />
ft2232_layout usbjtag<br />
ft2232_vid_pid 0x0403 0x6010<br />
<br />
</code><br />
<br />
<br />
Place the file below, named openocd.cfg (originally described [[Didj JTAG How To | here]]), into your home directory:<br />
<code><br />
<br />
telnet port 4444<br />
source [find interface/dlp-usb1232h.cfg]<br />
jtag_khz 15000<br />
# length of reset signal: [ms]<br />
jtag_nsrst_assert_width 100<br />
# don't talk to JTAG after reset for: [ms]<br />
jtag_nsrst_delay 250<br />
reset_config trst_and_srst separate<br />
# end reset config<br />
if { [info exists CHIPNAME] } {<br />
set _CHIPNAME $CHIPNAME<br />
} else {<br />
set _CHIPNAME pollux<br />
}<br />
if { [info exists ENDIAN] } {<br />
set _ENDIAN $ENDIAN<br />
} else {<br />
set _ENDIAN little<br />
}<br />
if { [info exists CPUTAPID ] } {<br />
set _CPUTAPID $CPUTAPID<br />
} else {<br />
# force an error till we get a good number<br />
set _CPUTAPID 0x07926f0f<br />
}<br />
#jtag scan chain<br />
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID<br />
set _TARGETNAME $_CHIPNAME.cpu<br />
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs <br />
<br />
</code><br />
<br />
== Usage ==<br />
<br />
To launch OpenOCD from your home directory:<br />
<br />
$ '''sudo /usr/bin/openocd -s /usr/share/openocd/scripts'''<br />
<br />
<br />
To access OpenOCD directly, telnet to localhost port 4444:<br />
<br />
$ '''telnet localhost 4444'''<br />
== Usage Examples ==<br />
Read the registers using the 'mdw phys <address>' command in OpenOCD. In this example we are reading the MLCCONTROL0 register:<br />
<br />
<code><br />
<br />
>halt<br />
>mdw phys 0xc0004024<br />
0xc0004024: 86534024<br />
</code> <br />
<br />
To write registers, use 'mww phys <address> <value>' In this example we are changing to the MLC to RGB888 mode, setting the H-stride and V-stride appropriately, and then setting the dirty flag:<br />
<code><br />
<br />
>halt<br />
>mww phys 0xc0004024 0x46534024<br />
>mww phys 0xc0004028 0x00000003<br />
>mww phys 0xc000402c 0x000003c0<br />
>mww phys 0xc0004024 0x4653d034<br />
</code><br />
<br />
The reset command will restart the device (Explorer only at this time):<br />
>reset<br />
<br />
To debug bootloaders with GDB, see [[Didj JTAG How To]].<br />
<br />
== Resources ==<br />
<br />
The DLP-USB1232H is available from various sources, e.g.: [http://digikey.com/scripts/dksus.dll?Detail&name=813-1026-ND Digikey], [http://mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMt/5FJRvmqHBjWi/VTYGDW6 Mouser], or [http://www.saelig.com/product/UB068.htm Saelig].<br />
<br />
The module can also be used as a cheap and simple [http://www.flashrom.org/FT2232SPI_Programmer SPI BIOS chip programmer] together with the [http://www.flashrom.org flashrom] utility.<br />
<br />
== References ==<br />
<br />
[[Didj JTAG How To]]<br />
<br />
[http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter DLP-USB1232H_and_OpenOCD_based_JTAG_adapter]<br />
<br />
[http://vak.ru/doku.php/proj/bitbang/bitbang-jtag Low-cost Bitbang JTAG using the FTDI FT232]<br />
<br />
== To do ==<br />
<br />
Photos</div>Nirvoushttps://elinux.org/index.php?title=LeapFrog_Pollux_Platform:_FTDI_JTAG_How_To&diff=27397LeapFrog Pollux Platform: FTDI JTAG How To2010-11-18T05:30:53Z<p>Nirvous: moved Didj and Explorer FTDI JTAG How To to Didj, Explorer and eGo (Pollux) FTDI JTAG How To</p>
<hr />
<div>[[Image:Didj_DLP_JTAG.JPG |350px|thumb|Didj FTDI2232 JTAG setup]]<br />
<br />
== Background ==<br />
<br />
I had been curious about JTAG ever since I started experimenting with Didj. I had wondered about whether it could be used to investigate our Pollux-based devices. <br />
<br />
As we all progressed with our experimentation, Moogle [http://wtfmoogle.com/?p=910 identified the JTAG pads] on Didj, and then bcav added [[Didj JTAG How To | a wiki entry]] on how to use the JTAG port to debug a bootloader on Didj with [http://openocd.berlios.de/web/ OpenOCD] (Open On-Chip Debugger). We later happily discovered that JTAG pads are clearly labeled on the Leapster Explorer mainboard (in my book, its a Big Win whenever a manufacturer acknowleges our [http://cdn.makezine.com/make/MAKERS_RIGHTS.pdf Fundamental Rights!])<br />
<br />
I had JTAG experimentation on my list-of-things-to-try for a while, but I didnt want to spend $72 to buy the JTAG dongle bcav used in the wiki entry. (I did have a home-made [http://nuwiki.openwrt.org/oldwiki/OpenWrtDocs/Customizing/Hardware/JTAG_Cable wiggler cable] that I hacked together for use with WRT routers, but I wasn't confident enough that it would fit the bill for this use case. Plus the speed over a parallel port was not great)<br />
<br />
Upon learning that that the ftdi2232 chip could be used to bitbang a JTAG connection and that the same part powers many USB-based JTAG cables, I purchased a $30 breakout board that was based on that chip - [http://www.dlpdesign.com/usb/usb1232h.shtml DLP Design DLP-USB1232H] ([http://www.dlpdesign.com/usb1232h-ds-v12.pdf datasheet]). <br />
<br />
What follows are the steps I used to make this breakout work with Didj and LX.<br />
<br />
== Connecting ==<br />
[[Image:JTAG PADS.jpg |150px|thumb|Didj JTAG pads]]<br />
[[Image:DidjTP103.png|150px|thumb|Didj nSRST pad on opposite side of mainboard from JTAG pads]]<br />
[[Image:LX-JTAG.jpg |150px|thumb|Explorer JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-FRONT.png|150px|thumb|Augen eGo 730-4 front JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-BACK.png|150px|thumb|Augen eGo 730-4 back JTAG pads]]<br />
<br />
The table below illustrates how to connect the DLP-USB1232H device pins to Didj and LX.<br />
The pinout on the breakout is in the [http://www.dlpdesign.com/usb1232h-ds-v12.pdf DLP-USB1232H datasheet] (pinout is on page 4 and page 7).<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Pin type<br />
! align="left" | DLP-USB1232H pin #<br />
! align="left" | Didj Test Pad label<br />
! align="left" | LX Test Pad label<br />
! align="left" | eGo photo label<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TRST'''<br />
| 17<br />
| TP9<br />
| RST<br />
| nTRST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDI'''<br />
| 16<br />
| TP10<br />
| TDI <br />
| TDI<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TMS'''<br />
| 5<br />
| TP11<br />
| TMS<br />
| TMS<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TCK'''<br />
| 18<br />
| TP12<br />
| TCK<br />
| TCK<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDO'''<br />
| 2<br />
| TP13<br />
| TDO<br />
| TDO<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''(S)RST'''<br />
| 13<br />
| TP103<br />
| nRST<br />
| nPORST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''GND'''<br />
| Either 1 or 10<br />
| TP14<br />
| GND<br />
| use any GND<br />
<br />
|}<br />
<br />
'''IMPORTANT:''' You also need to '''connect pins 8 and 9 together''' on the DLP-USB1232H module in order to configure it to be powered via USB.<br />
<br />
Also, the Didj or LX must be powered on.<br />
<br />
== Software Installation ==<br />
<br />
Install OpenOCD (examples are Ubuntu Lucid)<br />
<br />
$ '''sudo apt-get install openocd'''<br />
<br />
Place this configuration file - name it dlp-usb1232h.cfg - into your openocd /usr/share/openocd/scripts/interfaces directory:<br />
<br />
<code><br />
<br />
#<br />
# DLP Design DLP-USB1232H USB-to-UART/FIFO interface module<br />
#<br />
# http://www.dlpdesign.com/usb/usb1232h.shtml<br />
#<br />
interface ft2232<br />
ft2232_device_desc "Dual RS232-HS"<br />
ft2232_layout usbjtag<br />
ft2232_vid_pid 0x0403 0x6010<br />
<br />
</code><br />
<br />
<br />
Place the file below, named openocd.cfg (originally described [[Didj JTAG How To | here]]), into your home directory:<br />
<code><br />
<br />
telnet port 4444<br />
source [find interface/dlp-usb1232h.cfg]<br />
jtag_khz 15000<br />
# length of reset signal: [ms]<br />
jtag_nsrst_assert_width 100<br />
# don't talk to JTAG after reset for: [ms]<br />
jtag_nsrst_delay 250<br />
reset_config trst_and_srst separate<br />
# end reset config<br />
if { [info exists CHIPNAME] } {<br />
set _CHIPNAME $CHIPNAME<br />
} else {<br />
set _CHIPNAME pollux<br />
}<br />
if { [info exists ENDIAN] } {<br />
set _ENDIAN $ENDIAN<br />
} else {<br />
set _ENDIAN little<br />
}<br />
if { [info exists CPUTAPID ] } {<br />
set _CPUTAPID $CPUTAPID<br />
} else {<br />
# force an error till we get a good number<br />
set _CPUTAPID 0x07926f0f<br />
}<br />
#jtag scan chain<br />
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID<br />
set _TARGETNAME $_CHIPNAME.cpu<br />
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs <br />
<br />
</code><br />
<br />
== Usage ==<br />
<br />
To launch OpenOCD from your home directory:<br />
<br />
$ '''sudo /usr/bin/openocd -s /usr/share/openocd/scripts'''<br />
<br />
<br />
To access OpenOCD directly, telnet to localhost port 4444:<br />
<br />
$ '''telnet localhost 4444'''<br />
== Usage Examples ==<br />
Read the registers using the 'mdw phys <address>' command in OpenOCD. In this example we are reading the MLCCONTROL0 register:<br />
<br />
<code><br />
<br />
>halt<br />
>mdw phys 0xc0004024<br />
0xc0004024: 86534024<br />
</code> <br />
<br />
To write registers, use 'mww phys <address> <value>' In this example we are changing to the MLC to RGB888 mode, setting the H-stride and V-stride appropriately, and then setting the dirty flag:<br />
<code><br />
<br />
>halt<br />
>mww phys 0xc0004024 0x46534024<br />
>mww phys 0xc0004028 0x00000003<br />
>mww phys 0xc000402c 0x000003c0<br />
>mww phys 0xc0004024 0x4653d034<br />
</code><br />
<br />
The reset command will restart the device (Explorer only at this time):<br />
>reset<br />
<br />
To debug bootloaders with GDB, see [[Didj JTAG How To]].<br />
<br />
== Resources ==<br />
<br />
The DLP-USB1232H is available from various sources, e.g.: [http://digikey.com/scripts/dksus.dll?Detail&name=813-1026-ND Digikey], [http://mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMt/5FJRvmqHBjWi/VTYGDW6 Mouser], or [http://www.saelig.com/product/UB068.htm Saelig].<br />
<br />
The module can also be used as a cheap and simple [http://www.flashrom.org/FT2232SPI_Programmer SPI BIOS chip programmer] together with the [http://www.flashrom.org flashrom] utility.<br />
<br />
== References ==<br />
<br />
[[Didj JTAG How To]]<br />
<br />
[http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter DLP-USB1232H_and_OpenOCD_based_JTAG_adapter]<br />
<br />
[http://vak.ru/doku.php/proj/bitbang/bitbang-jtag Low-cost Bitbang JTAG using the FTDI FT232]<br />
<br />
== To do ==<br />
<br />
Photos</div>Nirvoushttps://elinux.org/index.php?title=Didj_and_Explorer_FTDI_JTAG_How_To&diff=27403Didj and Explorer FTDI JTAG How To2010-11-18T05:30:53Z<p>Nirvous: moved Didj and Explorer FTDI JTAG How To to Didj, Explorer and eGo (Pollux) FTDI JTAG How To</p>
<hr />
<div>#REDIRECT [[Didj, Explorer and eGo (Pollux) FTDI JTAG How To]]</div>Nirvoushttps://elinux.org/index.php?title=LeapFrog_Pollux_Platform:_FTDI_JTAG_How_To&diff=27391LeapFrog Pollux Platform: FTDI JTAG How To2010-11-18T05:30:10Z<p>Nirvous: /* Connecting */</p>
<hr />
<div>[[Image:Didj_DLP_JTAG.JPG |350px|thumb|Didj FTDI2232 JTAG setup]]<br />
<br />
== Background ==<br />
<br />
I had been curious about JTAG ever since I started experimenting with Didj. I had wondered about whether it could be used to investigate our Pollux-based devices. <br />
<br />
As we all progressed with our experimentation, Moogle [http://wtfmoogle.com/?p=910 identified the JTAG pads] on Didj, and then bcav added [[Didj JTAG How To | a wiki entry]] on how to use the JTAG port to debug a bootloader on Didj with [http://openocd.berlios.de/web/ OpenOCD] (Open On-Chip Debugger). We later happily discovered that JTAG pads are clearly labeled on the Leapster Explorer mainboard (in my book, its a Big Win whenever a manufacturer acknowleges our [http://cdn.makezine.com/make/MAKERS_RIGHTS.pdf Fundamental Rights!])<br />
<br />
I had JTAG experimentation on my list-of-things-to-try for a while, but I didnt want to spend $72 to buy the JTAG dongle bcav used in the wiki entry. (I did have a home-made [http://nuwiki.openwrt.org/oldwiki/OpenWrtDocs/Customizing/Hardware/JTAG_Cable wiggler cable] that I hacked together for use with WRT routers, but I wasn't confident enough that it would fit the bill for this use case. Plus the speed over a parallel port was not great)<br />
<br />
Upon learning that that the ftdi2232 chip could be used to bitbang a JTAG connection and that the same part powers many USB-based JTAG cables, I purchased a $30 breakout board that was based on that chip - [http://www.dlpdesign.com/usb/usb1232h.shtml DLP Design DLP-USB1232H] ([http://www.dlpdesign.com/usb1232h-ds-v12.pdf datasheet]). <br />
<br />
What follows are the steps I used to make this breakout work with Didj and LX.<br />
<br />
== Connecting ==<br />
[[Image:JTAG PADS.jpg |150px|thumb|Didj JTAG pads]]<br />
[[Image:DidjTP103.png|150px|thumb|Didj nSRST pad on opposite side of mainboard from JTAG pads]]<br />
[[Image:LX-JTAG.jpg |150px|thumb|Explorer JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-FRONT.png|150px|thumb|Augen eGo 730-4 front JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-BACK.png|150px|thumb|Augen eGo 730-4 back JTAG pads]]<br />
<br />
The table below illustrates how to connect the DLP-USB1232H device pins to Didj and LX.<br />
The pinout on the breakout is in the [http://www.dlpdesign.com/usb1232h-ds-v12.pdf DLP-USB1232H datasheet] (pinout is on page 4 and page 7).<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Pin type<br />
! align="left" | DLP-USB1232H pin #<br />
! align="left" | Didj Test Pad label<br />
! align="left" | LX Test Pad label<br />
! align="left" | eGo photo label<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TRST'''<br />
| 17<br />
| TP9<br />
| RST<br />
| nTRST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDI'''<br />
| 16<br />
| TP10<br />
| TDI <br />
| TDI<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TMS'''<br />
| 5<br />
| TP11<br />
| TMS<br />
| TMS<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TCK'''<br />
| 18<br />
| TP12<br />
| TCK<br />
| TCK<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDO'''<br />
| 2<br />
| TP13<br />
| TDO<br />
| TDO<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''(S)RST'''<br />
| 13<br />
| TP103<br />
| nRST<br />
| nPORST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''GND'''<br />
| Either 1 or 10<br />
| TP14<br />
| GND<br />
| use any GND<br />
<br />
|}<br />
<br />
'''IMPORTANT:''' You also need to '''connect pins 8 and 9 together''' on the DLP-USB1232H module in order to configure it to be powered via USB.<br />
<br />
Also, the Didj or LX must be powered on.<br />
<br />
== Software Installation ==<br />
<br />
Install OpenOCD (examples are Ubuntu Lucid)<br />
<br />
$ '''sudo apt-get install openocd'''<br />
<br />
Place this configuration file - name it dlp-usb1232h.cfg - into your openocd /usr/share/openocd/scripts/interfaces directory:<br />
<br />
<code><br />
<br />
#<br />
# DLP Design DLP-USB1232H USB-to-UART/FIFO interface module<br />
#<br />
# http://www.dlpdesign.com/usb/usb1232h.shtml<br />
#<br />
interface ft2232<br />
ft2232_device_desc "Dual RS232-HS"<br />
ft2232_layout usbjtag<br />
ft2232_vid_pid 0x0403 0x6010<br />
<br />
</code><br />
<br />
<br />
Place the file below, named openocd.cfg (originally described [[Didj JTAG How To | here]]), into your home directory:<br />
<code><br />
<br />
telnet port 4444<br />
source [find interface/dlp-usb1232h.cfg]<br />
jtag_khz 15000<br />
# length of reset signal: [ms]<br />
jtag_nsrst_assert_width 100<br />
# don't talk to JTAG after reset for: [ms]<br />
jtag_nsrst_delay 250<br />
reset_config trst_and_srst separate<br />
# end reset config<br />
if { [info exists CHIPNAME] } {<br />
set _CHIPNAME $CHIPNAME<br />
} else {<br />
set _CHIPNAME pollux<br />
}<br />
if { [info exists ENDIAN] } {<br />
set _ENDIAN $ENDIAN<br />
} else {<br />
set _ENDIAN little<br />
}<br />
if { [info exists CPUTAPID ] } {<br />
set _CPUTAPID $CPUTAPID<br />
} else {<br />
# force an error till we get a good number<br />
set _CPUTAPID 0x07926f0f<br />
}<br />
#jtag scan chain<br />
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID<br />
set _TARGETNAME $_CHIPNAME.cpu<br />
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs <br />
<br />
</code><br />
<br />
== Usage ==<br />
<br />
To launch OpenOCD from your home directory:<br />
<br />
$ '''sudo /usr/bin/openocd -s /usr/share/openocd/scripts'''<br />
<br />
<br />
To access OpenOCD directly, telnet to localhost port 4444:<br />
<br />
$ '''telnet localhost 4444'''<br />
== Usage Examples ==<br />
Read the registers using the 'mdw phys <address>' command in OpenOCD. In this example we are reading the MLCCONTROL0 register:<br />
<br />
<code><br />
<br />
>halt<br />
>mdw phys 0xc0004024<br />
0xc0004024: 86534024<br />
</code> <br />
<br />
To write registers, use 'mww phys <address> <value>' In this example we are changing to the MLC to RGB888 mode, setting the H-stride and V-stride appropriately, and then setting the dirty flag:<br />
<code><br />
<br />
>halt<br />
>mww phys 0xc0004024 0x46534024<br />
>mww phys 0xc0004028 0x00000003<br />
>mww phys 0xc000402c 0x000003c0<br />
>mww phys 0xc0004024 0x4653d034<br />
</code><br />
<br />
The reset command will restart the device (Explorer only at this time):<br />
>reset<br />
<br />
To debug bootloaders with GDB, see [[Didj JTAG How To]].<br />
<br />
== Resources ==<br />
<br />
The DLP-USB1232H is available from various sources, e.g.: [http://digikey.com/scripts/dksus.dll?Detail&name=813-1026-ND Digikey], [http://mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMt/5FJRvmqHBjWi/VTYGDW6 Mouser], or [http://www.saelig.com/product/UB068.htm Saelig].<br />
<br />
The module can also be used as a cheap and simple [http://www.flashrom.org/FT2232SPI_Programmer SPI BIOS chip programmer] together with the [http://www.flashrom.org flashrom] utility.<br />
<br />
== References ==<br />
<br />
[[Didj JTAG How To]]<br />
<br />
[http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter DLP-USB1232H_and_OpenOCD_based_JTAG_adapter]<br />
<br />
[http://vak.ru/doku.php/proj/bitbang/bitbang-jtag Low-cost Bitbang JTAG using the FTDI FT232]<br />
<br />
== To do ==<br />
<br />
Photos</div>Nirvoushttps://elinux.org/index.php?title=LeapFrog_Pollux_Platform:_FTDI_JTAG_How_To&diff=27385LeapFrog Pollux Platform: FTDI JTAG How To2010-11-18T05:25:18Z<p>Nirvous: /* Connecting */</p>
<hr />
<div>[[Image:Didj_DLP_JTAG.JPG |350px|thumb|Didj FTDI2232 JTAG setup]]<br />
<br />
== Background ==<br />
<br />
I had been curious about JTAG ever since I started experimenting with Didj. I had wondered about whether it could be used to investigate our Pollux-based devices. <br />
<br />
As we all progressed with our experimentation, Moogle [http://wtfmoogle.com/?p=910 identified the JTAG pads] on Didj, and then bcav added [[Didj JTAG How To | a wiki entry]] on how to use the JTAG port to debug a bootloader on Didj with [http://openocd.berlios.de/web/ OpenOCD] (Open On-Chip Debugger). We later happily discovered that JTAG pads are clearly labeled on the Leapster Explorer mainboard (in my book, its a Big Win whenever a manufacturer acknowleges our [http://cdn.makezine.com/make/MAKERS_RIGHTS.pdf Fundamental Rights!])<br />
<br />
I had JTAG experimentation on my list-of-things-to-try for a while, but I didnt want to spend $72 to buy the JTAG dongle bcav used in the wiki entry. (I did have a home-made [http://nuwiki.openwrt.org/oldwiki/OpenWrtDocs/Customizing/Hardware/JTAG_Cable wiggler cable] that I hacked together for use with WRT routers, but I wasn't confident enough that it would fit the bill for this use case. Plus the speed over a parallel port was not great)<br />
<br />
Upon learning that that the ftdi2232 chip could be used to bitbang a JTAG connection and that the same part powers many USB-based JTAG cables, I purchased a $30 breakout board that was based on that chip - [http://www.dlpdesign.com/usb/usb1232h.shtml DLP Design DLP-USB1232H] ([http://www.dlpdesign.com/usb1232h-ds-v12.pdf datasheet]). <br />
<br />
What follows are the steps I used to make this breakout work with Didj and LX.<br />
<br />
== Connecting ==<br />
[[Image:JTAG PADS.jpg |150px|thumb|Didj JTAG pads]]<br />
[[Image:DidjTP103.png|150px|thumb|Didj nSRST pad on opposite side of mainboard from JTAG pads]]<br />
[[Image:LX-JTAG.jpg |150px|thumb|Explorer JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-FRONT.png|150px|thumb|Augen eGo 730-4 front JTAG pads]]<br />
[[Image:Augen-eGo-732-JTAG-BACK.png|150px|thumb|Augen eGo 730-4 back JTAG pads]]<br />
<br />
The table below illustrates how to connect the DLP-USB1232H device pins to Didj and LX.<br />
The pinout on the breakout is in the [http://www.dlpdesign.com/usb1232h-ds-v12.pdf DLP-USB1232H datasheet] (pinout is on page 4 and page 7).<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Pin type<br />
! align="left" | DLP-USB1232H pin #<br />
! align="left" | Didj Test Pad label<br />
! align="left" | LX Test Pad label<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TRST'''<br />
| 17<br />
| TP9<br />
| RST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDI'''<br />
| 16<br />
| TP10<br />
| TDI <br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TMS'''<br />
| 5<br />
| TP11<br />
| TMS<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TCK'''<br />
| 18<br />
| TP12<br />
| TCK<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''TDO'''<br />
| 2<br />
| TP13<br />
| TDO<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''(S)RST'''<br />
| 13<br />
| TP103<br />
| nRST<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''GND'''<br />
| Either 1 or 10<br />
| TP14<br />
| GND<br />
<br />
|}<br />
<br />
'''IMPORTANT:''' You also need to '''connect pins 8 and 9 together''' on the DLP-USB1232H module in order to configure it to be powered via USB.<br />
<br />
Also, the Didj or LX must be powered on.<br />
<br />
== Software Installation ==<br />
<br />
Install OpenOCD (examples are Ubuntu Lucid)<br />
<br />
$ '''sudo apt-get install openocd'''<br />
<br />
Place this configuration file - name it dlp-usb1232h.cfg - into your openocd /usr/share/openocd/scripts/interfaces directory:<br />
<br />
<code><br />
<br />
#<br />
# DLP Design DLP-USB1232H USB-to-UART/FIFO interface module<br />
#<br />
# http://www.dlpdesign.com/usb/usb1232h.shtml<br />
#<br />
interface ft2232<br />
ft2232_device_desc "Dual RS232-HS"<br />
ft2232_layout usbjtag<br />
ft2232_vid_pid 0x0403 0x6010<br />
<br />
</code><br />
<br />
<br />
Place the file below, named openocd.cfg (originally described [[Didj JTAG How To | here]]), into your home directory:<br />
<code><br />
<br />
telnet port 4444<br />
source [find interface/dlp-usb1232h.cfg]<br />
jtag_khz 15000<br />
# length of reset signal: [ms]<br />
jtag_nsrst_assert_width 100<br />
# don't talk to JTAG after reset for: [ms]<br />
jtag_nsrst_delay 250<br />
reset_config trst_and_srst separate<br />
# end reset config<br />
if { [info exists CHIPNAME] } {<br />
set _CHIPNAME $CHIPNAME<br />
} else {<br />
set _CHIPNAME pollux<br />
}<br />
if { [info exists ENDIAN] } {<br />
set _ENDIAN $ENDIAN<br />
} else {<br />
set _ENDIAN little<br />
}<br />
if { [info exists CPUTAPID ] } {<br />
set _CPUTAPID $CPUTAPID<br />
} else {<br />
# force an error till we get a good number<br />
set _CPUTAPID 0x07926f0f<br />
}<br />
#jtag scan chain<br />
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID<br />
set _TARGETNAME $_CHIPNAME.cpu<br />
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs <br />
<br />
</code><br />
<br />
== Usage ==<br />
<br />
To launch OpenOCD from your home directory:<br />
<br />
$ '''sudo /usr/bin/openocd -s /usr/share/openocd/scripts'''<br />
<br />
<br />
To access OpenOCD directly, telnet to localhost port 4444:<br />
<br />
$ '''telnet localhost 4444'''<br />
== Usage Examples ==<br />
Read the registers using the 'mdw phys <address>' command in OpenOCD. In this example we are reading the MLCCONTROL0 register:<br />
<br />
<code><br />
<br />
>halt<br />
>mdw phys 0xc0004024<br />
0xc0004024: 86534024<br />
</code> <br />
<br />
To write registers, use 'mww phys <address> <value>' In this example we are changing to the MLC to RGB888 mode, setting the H-stride and V-stride appropriately, and then setting the dirty flag:<br />
<code><br />
<br />
>halt<br />
>mww phys 0xc0004024 0x46534024<br />
>mww phys 0xc0004028 0x00000003<br />
>mww phys 0xc000402c 0x000003c0<br />
>mww phys 0xc0004024 0x4653d034<br />
</code><br />
<br />
The reset command will restart the device (Explorer only at this time):<br />
>reset<br />
<br />
To debug bootloaders with GDB, see [[Didj JTAG How To]].<br />
<br />
== Resources ==<br />
<br />
The DLP-USB1232H is available from various sources, e.g.: [http://digikey.com/scripts/dksus.dll?Detail&name=813-1026-ND Digikey], [http://mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMt/5FJRvmqHBjWi/VTYGDW6 Mouser], or [http://www.saelig.com/product/UB068.htm Saelig].<br />
<br />
The module can also be used as a cheap and simple [http://www.flashrom.org/FT2232SPI_Programmer SPI BIOS chip programmer] together with the [http://www.flashrom.org flashrom] utility.<br />
<br />
== References ==<br />
<br />
[[Didj JTAG How To]]<br />
<br />
[http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter DLP-USB1232H_and_OpenOCD_based_JTAG_adapter]<br />
<br />
[http://vak.ru/doku.php/proj/bitbang/bitbang-jtag Low-cost Bitbang JTAG using the FTDI FT232]<br />
<br />
== To do ==<br />
<br />
Photos</div>Nirvoushttps://elinux.org/index.php?title=File:Augen-eGo-732-JTAG-BACK.png&diff=27379File:Augen-eGo-732-JTAG-BACK.png2010-11-18T05:22:28Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=File:Augen-eGo-732-JTAG-FRONT.png&diff=27373File:Augen-eGo-732-JTAG-FRONT.png2010-11-18T05:22:02Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=Didj_gpSP_GBA_Emulator&diff=27325Didj gpSP GBA Emulator2010-11-17T02:55:57Z<p>Nirvous: /* Prerequisites */</p>
<hr />
<div>[[image:Didj_gpSP.JPG|right|350px|thumb|gpSP GBA Emulator on Didj]]<br />
==Background==<br />
<br />
We managed to get around the Didj's memory allocation limitations and got Exophase/notaz's gpSP emulator running on the Didj. In order to give gpSP access to the RAM that it requires, we use a specially built kernel zImage which allocates the RAM normally used by the onboard 3D accelerator and the YUV layer to userspace (these features are not used by the emulator). At the time of this writing, the emulator on Didj was reasonably stable, but your mileage may vary.<br />
<br />
==Prerequisites==<br />
<br />
*Didj [[Didj_U_Boot_Flashing_Primer | set up with LightningBoot 1.4]] or higher<br />
*[http://jertechonline.com/ DJHI] or similar breakout with SD card<br />
*You will need to obtain a GBA BIOS (Google is your friend!). This file must be named "gba_bios.bin" in all lowercase as shown, so rename it if needed.<br />
*A modified 2.6.20 kernel:<br />
**apply [[File:Gpsp_lf2.6.20.kernel.patch | this patch]]<br />
**and edit your .config file as follows prior to compiling your kernel:<br />
CONFIG_CMDLINE="mem=28M root=31:04 rw rootflags=noatime rootfstype=jffs2 init=/sbin/init \<br />
console=ttyS0,115200 ubi.mtd=Brio ubi.mtd=prg_Brio ubi.mtd=Cartridge ubi.mtd=EXT ubi.mtd=prg_EXT" <br />
<br />
'''NOTE'''<br />
''There are two commonly available BIOSes - one is the correct one used in production GBA's worldwide and the other is a prototype BIOS. The latter will not cause some games to not work correctly or crash. If you attempt to use this BIOS you will be presented with a warning before being allowed to continue. This screen will give you a checksum of the real BIOS image (see readme.txt for further information).''<br />
<br />
*At least one game rom.<br />
<br />
*Download the archive containing the emulator and related libraries: http://dl.dropbox.com/u/14280130/gpsp_lf1000/gpsp_lf1000.tar.bz2<br />
*Download game_config.txt - part of this package: http://github.com/nirvous/gpsp_lf1000<br />
<br />
==To prepare your Didj for gpSP==<br />
<br />
We are going to take advantage of the existing dual root filesystem scheme and use one of them - RFS0 - to run the emulator. We disable Brio on this rootfs as it will cause reboots when the modified kernel is used.<br />
<br />
1. Change the rootfs flag: <br />
# echo RFS0 >> /flags/rootfs<br />
<br />
2. Reboot normally<br />
# reboot<br />
<br />
3. Disable Brio:<br />
# mount -o remount, rw /<br />
# cd /etc/rc.d<br />
# mkdir backup<br />
# mv *example backup<br />
# mv *lightning backup<br />
<br />
4. Put the emulator file, startup script, the gba_bios.bin file, the game_config.txt file, the wARM kernel module, and at least one game rom onto your Didj<br />
<br />
5. Create this directory for the wARM kernel module:<br />
# mkdir /lib/modules/2.6.20.1-leapfrog/kernel/drivers/warm<br />
<br />
6. Place the warm_2.6.20.1-leapfrog.ko file into the directory you created:<br />
# cp ./warm_2.6.20.1-leapfrog.ko /lib/modules/2.6.20.1-leapfrog/kernel/drivers/warm<br />
<br />
11. Test that it works:<br />
<br />
# insmod warm_2.6.20.1-leapfrog<br />
# rmmod warm_2.6.20.1-leapfrog<br />
<br />
12. Place the SDL file into /user/lib:<br />
<br />
# cp libSDL-1.2.s.0.11.2 /usr/lib<br />
<br />
13. Create a symbolic link:<br />
<br />
# ln -s libSDL-1.2.so.0.11.2 libSDL-1.2.so.0<br />
<br />
14. Place the zImage file onto your sd card.<br />
<br />
15. Boot the zImage from the SD card.<br />
<br />
16. cd to the emulator directory and launch the emulator<br />
<br />
#./go_emu.sh<br />
<br />
==Controls==<br />
<br />
Buttons are mapped as follows (GBA/ingame buttons can be changed in the menu):<br />
<br />
<code><br />
Didj--------------------GBA<br />
-- IN-GAME --<br />
A -> A<br />
B -> B<br />
L TRIG -> L TRIG<br />
R TRIG -> R TRIG<br />
PAUSE -> START<br />
HINT -> SELECT<br />
HOME -> quit emulator<br />
-- IN-MENU --<br />
B -> select option<br />
A -> escape (up one directory level in the<br />
file selector)<br />
HOME -> config options<br />
</code><br />
==Source Code==<br />
http://github.com/nirvous/gpsp_lf1000<br />
<br />
The code in the source tree is LX centric - we will upload the didj patch shortly.</div>Nirvoushttps://elinux.org/index.php?title=Augen_eGo:_BGA_pin_traces&diff=27217Augen eGo: BGA pin traces2010-11-15T03:15:21Z<p>Nirvous: </p>
<hr />
<div>W3 (SA25) --> Davicom DM9000 pin 34<br />
<br />
T1 (PWMOUT0) --> J20 (LCD socket) pin 22</div>Nirvoushttps://elinux.org/index.php?title=Augen_eGo:_BGA_pin_traces&diff=27211Augen eGo: BGA pin traces2010-11-15T03:15:00Z<p>Nirvous: Created page with "W3 (SA25) --> Davicom DM9000 pin 34 T1 (PWmOUT0) --> J20 (LCD socket) pin 22"</p>
<hr />
<div>W3 (SA25) --> Davicom DM9000 pin 34<br />
T1 (PWmOUT0) --> J20 (LCD socket) pin 22</div>Nirvoushttps://elinux.org/index.php?title=Augen_eGo:_OE-A730_to_OE-A733&diff=26947Augen eGo: OE-A730 to OE-A7332010-11-10T02:07:08Z<p>Nirvous: /* Chip List */</p>
<hr />
<div>[[Image:Blue730.jpg |150px|thumb|Augen E-Go OE-A730]]<br />
[[Image:Black731.jpg |150px|thumb|Augen E-Go OE-A731]]<br />
[[Image:Silver732.jpg |150px|thumb|Augen E-Go OE-A732]]<br />
[[Image:Red-ego733.jpg |150px|thumb|Augen E-Go OE-A733]]<br />
== Overview ==<br />
<br />
<br />
There are four Augen E-Go netbooks based on the MagicEyes [[Pollux]] processor: OE-A730, OE-A731, OE-A732, and OE-A733. As far as we know they are technically identical, the difference being the color of the enclosure. The devices ship by default with WinCE (but [http://www.handhelds.org/moin/moin.cgi/HaRET HaRET] will run on it, facilitating investigation). Most importantly, we have had success [http://wtfmoogle.com/?p=1708 UART-booting the Linux kernel used in the Leapster Explorer] on the device. <br />
<br />
== Tutorials/How To's ==<br />
TBD<br />
<br />
== Specifications ==<br />
<br />
<br />
'''General:'''<br />
* MagicEyes [[Pollux]] VF3520F MHz processor (ARM 926EJ-S) [[media:pollux-datasheet.pdf|Datasheet]]<br />
* 128 MB DDR RAM<br />
* 2 GB Nand flash storage<br />
* SD/MMC slot<br />
* AC97 audio w/two built-in 0.5W speakers <br />
* 10/100 Mbps Ethernet<br />
* 802.11b/g Wireless LAN<br />
* Built-in digital media card reader<br />
* Keyboard with TouchPad<br />
* Power LED, WiFi LED, Battery LED and Activity LED<br />
* 7-inch widescreen TFT LCD (800 x 480) [[media:at070tn82.pdf|AT070TN82 Datasheet]]<br />
<br />
<br />
'''I/O ports:'''<br />
* Two (2) USB 1.1 ports<br />
* One (1) Mini USB port<br />
* One (1) Microphone in jack<br />
* One (1) Headphone out jack<br />
* One (1) RJ-45 Ethernet port<br />
* One (1) Rest button (on bottom)<br />
<br />
<br />
'''Power Specifications:'''<br />
* DC 9V - 2A<br />
* Battery - Lithium Polymer - 7.4V, 16 Wh - 2100 mAh<br />
<br />
<br />
'''Unit Dimensions:'''<br />
* 1.25 x 8.5 x 5.5-inches (H x W x D, approximate)<br />
* Weight: 1.6 pounds<br />
<br />
== Chip List ==<br />
[[Image:Augen-eGo-mainboard-front.jpg |350px|thumb|Scan of front side of Augen eGo Pollux mainboard.]]<br />
<br />
<br />
[[Image:Augen-eGo-OEA732-mainboard-front-CPU-desoldered-s.jpg |350px|thumb|Scan of front side of Augen eGo Pollux mainboard - CPU removed.]]<br />
<br />
[[Image:Augen-eGo-mainboard-back.jpg |350px|thumb|Scan of back side of Augen eGo Pollux mainboard.]]<br />
<br />
[[Image:Augen-eGo-oea732-Touchpad.jpg|200px|thumb|Scan of Augen eGo Pollux touchpad.]]<br />
<br />
[[Image:Thine-THC63LVDM63A.jpg|200px|thumb|LVDS receiver]]<br />
<br />
[[Image:Augen-eGo-pollux-Wifi-IC.jpg|200px|thumb|Ralink RT2070L Wifi IC]]<br />
<br />
Samsung K9GAG08U0M<br />
<br />
'''SDRAM:''' Nanya NT5DS64M8CS-5T [[media:Nt5d32m16cs-5t.pdf|Datasheet]]<br />
<br />
'''Audio:''' Cirrus 42L52CNZ [[media:Cirrus-CS42L52.pdf|Datasheet]]<br />
<br />
'''Ethernet:''' Davicom DM9000AEP [[media:Davicom-DM9000AEPProductBrief_v1.0.pdf|Product Brief]], [[media:DAVICOM-DM9000A-DATASHEET-F01-101906.pdf|Datasheet]], [[media:DAVICOM_DM9000Acircuit_EMI_052306.pdf|Circuit]]<br />
<br />
'''Wifi:''' Ralink RT2070L<br />
<br />
'''USB Keyboard Controller:''' Cypress CY7C63413C-PVXC [[media:Cypress_CY7C63413C_CY7C63513C_CY7C63613C.pdf|Datasheet]]<br />
<br />
'''Touchpad Controller:''' Cypress CY8C2043412LKXI [[media:Cypress-CY8C20x344.pdf|Datasheet]]<br />
<br />
'''LVDS Host-LCD Panel Interface Receiver:''' Thine THC63LVDM63A [[media:Thine-THC63LVDM63A.pdf|Datasheet]]<br />
<br />
== Technical Information ==<br />
<br />
[http://pastebin.com/n1sZVECB Pollux register dump (using HaRET)]<br />
<br />
[http://iliketopoopinthe.pastebin.com/M0DJLdwz MMU memory map dump]</div>Nirvoushttps://elinux.org/index.php?title=File:Augen-eGo-OEA732-mainboard-front-CPU-desoldered-s.jpg&diff=26941File:Augen-eGo-OEA732-mainboard-front-CPU-desoldered-s.jpg2010-11-10T02:04:36Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=File:Augen-eGo-OEA732-mainboard-front-CPU-desoldered.jpg&diff=26935File:Augen-eGo-OEA732-mainboard-front-CPU-desoldered.jpg2010-11-10T01:57:53Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=Augen_eGo:_OE-A730_to_OE-A733&diff=26389Augen eGo: OE-A730 to OE-A7332010-11-05T06:09:57Z<p>Nirvous: /* Chip List */</p>
<hr />
<div>[[Image:Blue730.jpg |150px|thumb|Augen E-Go OE-A730]]<br />
[[Image:Black731.jpg |150px|thumb|Augen E-Go OE-A731]]<br />
[[Image:Silver732.jpg |150px|thumb|Augen E-Go OE-A732]]<br />
[[Image:Red-ego733.jpg |150px|thumb|Augen E-Go OE-A733]]<br />
== Overview ==<br />
<br />
<br />
There are four Augen E-Go netbooks based on the MagicEyes [[Pollux]] processor: OE-A730, OE-A731, OE-A732, and OE-A733. As far as we know they are technically identical, the difference being the color of the enclosure. The devices ship by default with WinCE (but [http://www.handhelds.org/moin/moin.cgi/HaRET HaRET] will run on it, facilitating investigation). Most importantly, we have had success [http://wtfmoogle.com/?p=1708 UART-booting the Linux kernel used in the Leapster Explorer] on the device. <br />
<br />
== Tutorials/How To's ==<br />
TBD<br />
<br />
== Specifications ==<br />
<br />
<br />
'''General:'''<br />
* MagicEyes [[Pollux]] VF3520F MHz processor (ARM 926EJ-S) [[media:pollux-datasheet.pdf|Datasheet]]<br />
* 128 MB DDR RAM<br />
* 2 GB Nand flash storage<br />
* SD/MMC slot<br />
* AC97 audio w/two built-in 0.5W speakers <br />
* 10/100 Mbps Ethernet<br />
* 802.11b/g Wireless LAN<br />
* Built-in digital media card reader<br />
* Keyboard with TouchPad<br />
* Power LED, WiFi LED, Battery LED and Activity LED<br />
* 7-inch widescreen TFT LCD (800 x 480) [[media:at070tn82.pdf|AT070TN82 Datasheet]]<br />
<br />
<br />
'''I/O ports:'''<br />
* Two (2) USB 1.1 ports<br />
* One (1) Mini USB port<br />
* One (1) Microphone in jack<br />
* One (1) Headphone out jack<br />
* One (1) RJ-45 Ethernet port<br />
* One (1) Rest button (on bottom)<br />
<br />
<br />
'''Power Specifications:'''<br />
* DC 9V - 2A<br />
* Battery - Lithium Polymer - 7.4V, 16 Wh - 2100 mAh<br />
<br />
<br />
'''Unit Dimensions:'''<br />
* 1.25 x 8.5 x 5.5-inches (H x W x D, approximate)<br />
* Weight: 1.6 pounds<br />
<br />
== Chip List ==<br />
[[Image:Augen-eGo-mainboard-front.jpg |350px|thumb|Scan of front side of Augen eGo Pollux mainboard.]]<br />
<br />
[[Image:Augen-eGo-mainboard-back.jpg |350px|thumb|Scan of back side of Augen eGo Pollux mainboard.]]<br />
<br />
[[Image:Augen-eGo-oea732-Touchpad.jpg|200px|thumb|Scan of Augen eGo Pollux touchpad.]]<br />
<br />
[[Image:Thine-THC63LVDM63A.jpg|200px|thumb|LVDS receiver]]<br />
<br />
[[Image:Augen-eGo-pollux-Wifi-IC.jpg|200px|thumb|Ralink RT2070L Wifi IC]]<br />
<br />
Samsung K9GAG08UOM<br />
<br />
'''SDRAM:''' Nanya NT5DS64M8CS-5T [[media:Nt5d32m16cs-5t.pdf|Datasheet]]<br />
<br />
'''Audio:''' Cirrus 42L52CNZ [[media:Cirrus-CS42L52.pdf|Datasheet]]<br />
<br />
'''Ethernet:''' Davicom DM9000AEP [[media:Davicom-DM9000AEPProductBrief_v1.0.pdf|Product Brief]], [[media:DAVICOM-DM9000A-DATASHEET-F01-101906.pdf|Datasheet]], [[media:DAVICOM_DM9000Acircuit_EMI_052306.pdf|Circuit]]<br />
<br />
'''Wifi:''' Ralink RT2070L<br />
<br />
'''USB Keyboard Controller:''' Cypress CY7C63413C-PVXC [[media:Cypress_CY7C63413C_CY7C63513C_CY7C63613C.pdf|Datasheet]]<br />
<br />
'''Touchpad Controller:''' Cypress CY8C2043412LKXI [[media:Cypress-CY8C20x344.pdf|Datasheet]]<br />
<br />
'''LVDS Host-LCD Panel Interface Receiver:''' Thine THC63LVDM63A [[media:Thine-THC63LVDM63A.pdf|Datasheet]]<br />
<br />
== Technical Information ==<br />
<br />
[http://pastebin.com/n1sZVECB Pollux register dump (using HaRET)]<br />
<br />
[http://iliketopoopinthe.pastebin.com/M0DJLdwz MMU memory map dump]</div>Nirvoushttps://elinux.org/index.php?title=File:Augen-eGo-pollux-Wifi-IC.jpg&diff=26383File:Augen-eGo-pollux-Wifi-IC.jpg2010-11-05T05:58:48Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=Augen_eGo:_OE-A730_to_OE-A733&diff=26377Augen eGo: OE-A730 to OE-A7332010-11-05T05:49:14Z<p>Nirvous: /* Chip List */</p>
<hr />
<div>[[Image:Blue730.jpg |150px|thumb|Augen E-Go OE-A730]]<br />
[[Image:Black731.jpg |150px|thumb|Augen E-Go OE-A731]]<br />
[[Image:Silver732.jpg |150px|thumb|Augen E-Go OE-A732]]<br />
[[Image:Red-ego733.jpg |150px|thumb|Augen E-Go OE-A733]]<br />
== Overview ==<br />
<br />
<br />
There are four Augen E-Go netbooks based on the MagicEyes [[Pollux]] processor: OE-A730, OE-A731, OE-A732, and OE-A733. As far as we know they are technically identical, the difference being the color of the enclosure. The devices ship by default with WinCE (but [http://www.handhelds.org/moin/moin.cgi/HaRET HaRET] will run on it, facilitating investigation). Most importantly, we have had success [http://wtfmoogle.com/?p=1708 UART-booting the Linux kernel used in the Leapster Explorer] on the device. <br />
<br />
== Tutorials/How To's ==<br />
TBD<br />
<br />
== Specifications ==<br />
<br />
<br />
'''General:'''<br />
* MagicEyes [[Pollux]] VF3520F MHz processor (ARM 926EJ-S) [[media:pollux-datasheet.pdf|Datasheet]]<br />
* 128 MB DDR RAM<br />
* 2 GB Nand flash storage<br />
* SD/MMC slot<br />
* AC97 audio w/two built-in 0.5W speakers <br />
* 10/100 Mbps Ethernet<br />
* 802.11b/g Wireless LAN<br />
* Built-in digital media card reader<br />
* Keyboard with TouchPad<br />
* Power LED, WiFi LED, Battery LED and Activity LED<br />
* 7-inch widescreen TFT LCD (800 x 480) [[media:at070tn82.pdf|AT070TN82 Datasheet]]<br />
<br />
<br />
'''I/O ports:'''<br />
* Two (2) USB 1.1 ports<br />
* One (1) Mini USB port<br />
* One (1) Microphone in jack<br />
* One (1) Headphone out jack<br />
* One (1) RJ-45 Ethernet port<br />
* One (1) Rest button (on bottom)<br />
<br />
<br />
'''Power Specifications:'''<br />
* DC 9V - 2A<br />
* Battery - Lithium Polymer - 7.4V, 16 Wh - 2100 mAh<br />
<br />
<br />
'''Unit Dimensions:'''<br />
* 1.25 x 8.5 x 5.5-inches (H x W x D, approximate)<br />
* Weight: 1.6 pounds<br />
<br />
== Chip List ==<br />
[[Image:Augen-eGo-mainboard-front.jpg |350px|thumb|Scan of front side of Augen eGo Pollux mainboard.]]<br />
<br />
[[Image:Augen-eGo-mainboard-back.jpg |350px|thumb|Scan of back side of Augen eGo Pollux mainboard.]]<br />
<br />
[[Image:Augen-eGo-oea732-Touchpad.jpg|200px|thumb|Scan of Augen eGo Pollux touchpad.]]<br />
<br />
[[Image:Thine-THC63LVDM63A.jpg|200px|thumb|LVDS receiver]]<br />
<br />
Samsung K9GAG08UOM<br />
<br />
'''SDRAM:''' Nanya NT5DS64M8CS-5T [[media:Nt5d32m16cs-5t.pdf|Datasheet]]<br />
<br />
'''Audio:''' Cirrus 42L52CNZ [[media:Cirrus-CS42L52.pdf|Datasheet]]<br />
<br />
'''Ethernet:''' Davicom DM9000AEP [[media:Davicom-DM9000AEPProductBrief_v1.0.pdf|Product Brief]], [[media:DAVICOM-DM9000A-DATASHEET-F01-101906.pdf|Datasheet]], [[media:DAVICOM_DM9000Acircuit_EMI_052306.pdf|Circuit]]<br />
<br />
'''USB Keyboard Controller:''' Cypress CY7C63413C-PVXC [[media:Cypress_CY7C63413C_CY7C63513C_CY7C63613C.pdf|Datasheet]]<br />
<br />
'''Touchpad Controller:''' Cypress CY8C2043412LKXI [[media:Cypress-CY8C20x344.pdf|Datasheet]]<br />
<br />
'''LVDS Host-LCD Panel Interface Receiver:''' Thine THC63LVDM63A [[media:Thine-THC63LVDM63A.pdf|Datasheet]]<br />
<br />
== Technical Information ==<br />
<br />
[http://pastebin.com/n1sZVECB Pollux register dump (using HaRET)]<br />
<br />
[http://iliketopoopinthe.pastebin.com/M0DJLdwz MMU memory map dump]</div>Nirvoushttps://elinux.org/index.php?title=File:Thine-THC63LVDM63A.jpg&diff=26371File:Thine-THC63LVDM63A.jpg2010-11-05T05:47:58Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=Augen_eGo:_OE-A730_to_OE-A733&diff=26365Augen eGo: OE-A730 to OE-A7332010-11-05T05:46:41Z<p>Nirvous: /* Chip List */</p>
<hr />
<div>[[Image:Blue730.jpg |150px|thumb|Augen E-Go OE-A730]]<br />
[[Image:Black731.jpg |150px|thumb|Augen E-Go OE-A731]]<br />
[[Image:Silver732.jpg |150px|thumb|Augen E-Go OE-A732]]<br />
[[Image:Red-ego733.jpg |150px|thumb|Augen E-Go OE-A733]]<br />
== Overview ==<br />
<br />
<br />
There are four Augen E-Go netbooks based on the MagicEyes [[Pollux]] processor: OE-A730, OE-A731, OE-A732, and OE-A733. As far as we know they are technically identical, the difference being the color of the enclosure. The devices ship by default with WinCE (but [http://www.handhelds.org/moin/moin.cgi/HaRET HaRET] will run on it, facilitating investigation). Most importantly, we have had success [http://wtfmoogle.com/?p=1708 UART-booting the Linux kernel used in the Leapster Explorer] on the device. <br />
<br />
== Tutorials/How To's ==<br />
TBD<br />
<br />
== Specifications ==<br />
<br />
<br />
'''General:'''<br />
* MagicEyes [[Pollux]] VF3520F MHz processor (ARM 926EJ-S) [[media:pollux-datasheet.pdf|Datasheet]]<br />
* 128 MB DDR RAM<br />
* 2 GB Nand flash storage<br />
* SD/MMC slot<br />
* AC97 audio w/two built-in 0.5W speakers <br />
* 10/100 Mbps Ethernet<br />
* 802.11b/g Wireless LAN<br />
* Built-in digital media card reader<br />
* Keyboard with TouchPad<br />
* Power LED, WiFi LED, Battery LED and Activity LED<br />
* 7-inch widescreen TFT LCD (800 x 480) [[media:at070tn82.pdf|AT070TN82 Datasheet]]<br />
<br />
<br />
'''I/O ports:'''<br />
* Two (2) USB 1.1 ports<br />
* One (1) Mini USB port<br />
* One (1) Microphone in jack<br />
* One (1) Headphone out jack<br />
* One (1) RJ-45 Ethernet port<br />
* One (1) Rest button (on bottom)<br />
<br />
<br />
'''Power Specifications:'''<br />
* DC 9V - 2A<br />
* Battery - Lithium Polymer - 7.4V, 16 Wh - 2100 mAh<br />
<br />
<br />
'''Unit Dimensions:'''<br />
* 1.25 x 8.5 x 5.5-inches (H x W x D, approximate)<br />
* Weight: 1.6 pounds<br />
<br />
== Chip List ==<br />
[[Image:Augen-eGo-mainboard-front.jpg |350px|thumb|Scan of front side of Augen eGo Pollux mainboard.]]<br />
<br />
[[Image:Augen-eGo-mainboard-back.jpg |350px|thumb|Scan of back side of Augen eGo Pollux mainboard.]]<br />
<br />
[[Image:Augen-eGo-oea732-Touchpad.jpg|200px|thumb|Scan of Augen eGo Pollux touchpad.]]<br />
<br />
Samsung K9GAG08UOM<br />
<br />
'''SDRAM:''' Nanya NT5DS64M8CS-5T [[media:Nt5d32m16cs-5t.pdf|Datasheet]]<br />
<br />
'''Audio:''' Cirrus 42L52CNZ [[media:Cirrus-CS42L52.pdf|Datasheet]]<br />
<br />
'''Ethernet:''' Davicom DM9000AEP [[media:Davicom-DM9000AEPProductBrief_v1.0.pdf|Product Brief]], [[media:DAVICOM-DM9000A-DATASHEET-F01-101906.pdf|Datasheet]], [[media:DAVICOM_DM9000Acircuit_EMI_052306.pdf|Circuit]]<br />
<br />
'''USB Keyboard Controller:''' Cypress CY7C63413C-PVXC [[media:Cypress_CY7C63413C_CY7C63513C_CY7C63613C.pdf|Datasheet]]<br />
<br />
'''Touchpad Controller:''' Cypress CY8C2043412LKXI [[media:Cypress-CY8C20x344.pdf|Datasheet]]<br />
<br />
'''LVDS Host-LCD Panel Interface Receiver:''' Thine THC63LVDM63A [[media:Thine-THC63LVDM63A.pdf|Datasheet]]<br />
<br />
== Technical Information ==<br />
<br />
[http://pastebin.com/n1sZVECB Pollux register dump (using HaRET)]<br />
<br />
[http://iliketopoopinthe.pastebin.com/M0DJLdwz MMU memory map dump]</div>Nirvoushttps://elinux.org/index.php?title=File:Thine-THC63LVDM63A.pdf&diff=26359File:Thine-THC63LVDM63A.pdf2010-11-05T05:44:50Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=Augen_eGo:_OE-A730_to_OE-A733&diff=26353Augen eGo: OE-A730 to OE-A7332010-11-05T05:28:04Z<p>Nirvous: /* Chip List */</p>
<hr />
<div>[[Image:Blue730.jpg |150px|thumb|Augen E-Go OE-A730]]<br />
[[Image:Black731.jpg |150px|thumb|Augen E-Go OE-A731]]<br />
[[Image:Silver732.jpg |150px|thumb|Augen E-Go OE-A732]]<br />
[[Image:Red-ego733.jpg |150px|thumb|Augen E-Go OE-A733]]<br />
== Overview ==<br />
<br />
<br />
There are four Augen E-Go netbooks based on the MagicEyes [[Pollux]] processor: OE-A730, OE-A731, OE-A732, and OE-A733. As far as we know they are technically identical, the difference being the color of the enclosure. The devices ship by default with WinCE (but [http://www.handhelds.org/moin/moin.cgi/HaRET HaRET] will run on it, facilitating investigation). Most importantly, we have had success [http://wtfmoogle.com/?p=1708 UART-booting the Linux kernel used in the Leapster Explorer] on the device. <br />
<br />
== Tutorials/How To's ==<br />
TBD<br />
<br />
== Specifications ==<br />
<br />
<br />
'''General:'''<br />
* MagicEyes [[Pollux]] VF3520F MHz processor (ARM 926EJ-S) [[media:pollux-datasheet.pdf|Datasheet]]<br />
* 128 MB DDR RAM<br />
* 2 GB Nand flash storage<br />
* SD/MMC slot<br />
* AC97 audio w/two built-in 0.5W speakers <br />
* 10/100 Mbps Ethernet<br />
* 802.11b/g Wireless LAN<br />
* Built-in digital media card reader<br />
* Keyboard with TouchPad<br />
* Power LED, WiFi LED, Battery LED and Activity LED<br />
* 7-inch widescreen TFT LCD (800 x 480) [[media:at070tn82.pdf|AT070TN82 Datasheet]]<br />
<br />
<br />
'''I/O ports:'''<br />
* Two (2) USB 1.1 ports<br />
* One (1) Mini USB port<br />
* One (1) Microphone in jack<br />
* One (1) Headphone out jack<br />
* One (1) RJ-45 Ethernet port<br />
* One (1) Rest button (on bottom)<br />
<br />
<br />
'''Power Specifications:'''<br />
* DC 9V - 2A<br />
* Battery - Lithium Polymer - 7.4V, 16 Wh - 2100 mAh<br />
<br />
<br />
'''Unit Dimensions:'''<br />
* 1.25 x 8.5 x 5.5-inches (H x W x D, approximate)<br />
* Weight: 1.6 pounds<br />
<br />
== Chip List ==<br />
[[Image:Augen-eGo-mainboard-front.jpg |350px|thumb|Scan of front side of Augen eGo Pollux mainboard.]]<br />
<br />
[[Image:Augen-eGo-mainboard-back.jpg |350px|thumb|Scan of back side of Augen eGo Pollux mainboard.]]<br />
<br />
[[Image:Augen-eGo-oea732-Touchpad.jpg|200px|thumb|Scan of Augen eGo Pollux touchpad.]]<br />
<br />
Samsung K9GAG08UOM<br />
<br />
'''SDRAM:''' Nanya NT5DS64M8CS-5T [[media:Nt5d32m16cs-5t.pdf|Datasheet]]<br />
<br />
'''Audio:''' Cirrus 42L52CNZ [[media:Cirrus-CS42L52.pdf|Datasheet]]<br />
<br />
'''Ethernet:''' Davicom DM9000AEP [[media:Davicom-DM9000AEPProductBrief_v1.0.pdf|Product Brief]], [[media:DAVICOM-DM9000A-DATASHEET-F01-101906.pdf|Datasheet]], [[media:DAVICOM_DM9000Acircuit_EMI_052306.pdf|Circuit]]<br />
<br />
'''USB Keyboard Controller:''' Cypress CY7C63413C-PVXC [[media:Cypress_CY7C63413C_CY7C63513C_CY7C63613C.pdf|Datasheet]]<br />
<br />
'''Touchpad Controller:''' Cypress CY8C2043412LKXI [[media:Cypress-CY8C20x344.pdf|Datasheet]]<br />
<br />
== Technical Information ==<br />
<br />
[http://pastebin.com/n1sZVECB Pollux register dump (using HaRET)]<br />
<br />
[http://iliketopoopinthe.pastebin.com/M0DJLdwz MMU memory map dump]</div>Nirvoushttps://elinux.org/index.php?title=File:Augen-eGo-oea732-Touchpad.jpg&diff=26347File:Augen-eGo-oea732-Touchpad.jpg2010-11-05T05:26:33Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=Augen_eGo:_OE-A730_to_OE-A733&diff=26341Augen eGo: OE-A730 to OE-A7332010-11-05T05:12:25Z<p>Nirvous: </p>
<hr />
<div>[[Image:Blue730.jpg |150px|thumb|Augen E-Go OE-A730]]<br />
[[Image:Black731.jpg |150px|thumb|Augen E-Go OE-A731]]<br />
[[Image:Silver732.jpg |150px|thumb|Augen E-Go OE-A732]]<br />
[[Image:Red-ego733.jpg |150px|thumb|Augen E-Go OE-A733]]<br />
== Overview ==<br />
<br />
<br />
There are four Augen E-Go netbooks based on the MagicEyes [[Pollux]] processor: OE-A730, OE-A731, OE-A732, and OE-A733. As far as we know they are technically identical, the difference being the color of the enclosure. The devices ship by default with WinCE (but [http://www.handhelds.org/moin/moin.cgi/HaRET HaRET] will run on it, facilitating investigation). Most importantly, we have had success [http://wtfmoogle.com/?p=1708 UART-booting the Linux kernel used in the Leapster Explorer] on the device. <br />
<br />
== Tutorials/How To's ==<br />
TBD<br />
<br />
== Specifications ==<br />
<br />
<br />
'''General:'''<br />
* MagicEyes [[Pollux]] VF3520F MHz processor (ARM 926EJ-S) [[media:pollux-datasheet.pdf|Datasheet]]<br />
* 128 MB DDR RAM<br />
* 2 GB Nand flash storage<br />
* SD/MMC slot<br />
* AC97 audio w/two built-in 0.5W speakers <br />
* 10/100 Mbps Ethernet<br />
* 802.11b/g Wireless LAN<br />
* Built-in digital media card reader<br />
* Keyboard with TouchPad<br />
* Power LED, WiFi LED, Battery LED and Activity LED<br />
* 7-inch widescreen TFT LCD (800 x 480) [[media:at070tn82.pdf|AT070TN82 Datasheet]]<br />
<br />
<br />
'''I/O ports:'''<br />
* Two (2) USB 1.1 ports<br />
* One (1) Mini USB port<br />
* One (1) Microphone in jack<br />
* One (1) Headphone out jack<br />
* One (1) RJ-45 Ethernet port<br />
* One (1) Rest button (on bottom)<br />
<br />
<br />
'''Power Specifications:'''<br />
* DC 9V - 2A<br />
* Battery - Lithium Polymer - 7.4V, 16 Wh - 2100 mAh<br />
<br />
<br />
'''Unit Dimensions:'''<br />
* 1.25 x 8.5 x 5.5-inches (H x W x D, approximate)<br />
* Weight: 1.6 pounds<br />
<br />
== Chip List ==<br />
[[Image:Augen-eGo-mainboard-front.jpg |350px|thumb|Scan of front side of Augen eGo Pollux mainboard.]]<br />
<br />
[[Image:Augen-eGo-mainboard-back.jpg |350px|thumb|Scan of back side of Augen eGo Pollux mainboard.]]<br />
<br />
<br />
Samsung K9GAG08UOM<br />
<br />
'''SDRAM:''' Nanya NT5DS64M8CS-5T [[media:Nt5d32m16cs-5t.pdf|Datasheet]]<br />
<br />
'''Audio:''' Cirrus 42L52CNZ [[media:Cirrus-CS42L52.pdf|Datasheet]]<br />
<br />
'''Ethernet:''' Davicom DM9000AEP [[media:Davicom-DM9000AEPProductBrief_v1.0.pdf|Product Brief]], [[media:DAVICOM-DM9000A-DATASHEET-F01-101906.pdf|Datasheet]], [[media:DAVICOM_DM9000Acircuit_EMI_052306.pdf|Circuit]]<br />
<br />
'''USB Keyboard Controller:''' Cypress CY7C63413C-PVXC [[media:Cypress_CY7C63413C_CY7C63513C_CY7C63613C.pdf|Datasheet]]<br />
<br />
'''Touchpad Controller:''' Cypress CY8C2043412LKXI [[media:Cypress-CY8C20x344.pdf|Datasheet]]<br />
<br />
== Technical Information ==<br />
<br />
[http://pastebin.com/n1sZVECB Pollux register dump (using HaRET)]<br />
<br />
[http://iliketopoopinthe.pastebin.com/M0DJLdwz MMU memory map dump]</div>Nirvoushttps://elinux.org/index.php?title=File:Augen-eGo-mainboard-back.jpg&diff=26335File:Augen-eGo-mainboard-back.jpg2010-11-05T05:07:20Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=File:Augen-eGo-mainboard-front.jpg&diff=26329File:Augen-eGo-mainboard-front.jpg2010-11-05T05:06:38Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=File:Augen-ego-oea732-mainboard-front.jpg&diff=26311File:Augen-ego-oea732-mainboard-front.jpg2010-11-05T04:16:21Z<p>Nirvous: </p>
<hr />
<div></div>Nirvoushttps://elinux.org/index.php?title=Augen_eGo:_OE-A730_to_OE-A733&diff=26299Augen eGo: OE-A730 to OE-A7332010-11-05T01:10:47Z<p>Nirvous: </p>
<hr />
<div>[[Image:Blue730.jpg |300px|thumb|Augen E-Go OE-A730]]<br />
[[Image:Black731.jpg |300px|thumb|Augen E-Go OE-A731]]<br />
[[Image:Silver732.jpg |300px|thumb|Augen E-Go OE-A732]]<br />
[[Image:Red-ego733.jpg |300px|thumb|Augen E-Go OE-A733]]<br />
<br />
== Overview ==<br />
There are four Augen E-Go netbooks based on the MagicEyes [[Pollux]] processor: OE-A730, OE-A731, OE-A732, and OE-A733. As far as we know they are technically identical, the difference being the color of the enclosure. The devices ship by default with WinCE (but [http://www.handhelds.org/moin/moin.cgi/HaRET HaRET] will run on it, facilitating investigation). Most importantly, we have had success [http://wtfmoogle.com/?p=1708 UART-booting the Linux kernel used in the Leapster Explorer] on the device. <br />
<br />
== Tutorials/How To's ==<br />
TBD<br />
<br />
== Specifications ==<br />
<br />
<br />
'''General:'''<br />
* MagicEyes [[Pollux]] VF3520F MHz processor (ARM 926EJ-S) [[media:pollux-datasheet.pdf|Datasheet]]<br />
* 128 MB DDR RAM<br />
* 2 GB Nand flash storage<br />
* SD/MMC slot<br />
* AC97 audio w/two built-in 0.5W speakers <br />
* 10/100 Mbps Ethernet<br />
* 802.11b/g Wireless LAN<br />
* Built-in digital media card reader<br />
* Keyboard with TouchPad<br />
* Power LED, WiFi LED, Battery LED and Activity LED<br />
* 7-inch widescreen TFT LCD (800 x 480) [[media:at070tn82.pdf|AT070TN82 Datasheet]]<br />
<br />
<br />
'''I/O ports:'''<br />
* Two (2) USB 1.1 ports<br />
* One (1) Mini USB port<br />
* One (1) Microphone in jack<br />
* One (1) Headphone out jack<br />
* One (1) RJ-45 Ethernet port<br />
* One (1) Rest button (on bottom)<br />
<br />
<br />
'''Power Specifications:'''<br />
* DC 9V - 2A<br />
* Battery - Lithium Polymer - 7.4V, 16 Wh - 2100 mAh<br />
<br />
<br />
'''Unit Dimensions:'''<br />
* 1.25 x 8.5 x 5.5-inches (H x W x D, approximate)<br />
* Weight: 1.6 pounds<br />
<br />
== Chip List ==<br />
Samsung K9GAG08UOM<br />
<br />
'''SDRAM:''' Nanya NT5DS64M8CS-5T [[media:Nt5d32m16cs-5t.pdf|Datasheet]]<br />
<br />
'''Audio:''' Cirrus 42L52CNZ [[media:Cirrus-CS42L52.pdf|Datasheet]]<br />
<br />
'''Ethernet:''' Davicom DM9000AEP [[media:Davicom-DM9000AEPProductBrief_v1.0.pdf|Product Brief]], [[media:DAVICOM-DM9000A-DATASHEET-F01-101906.pdf|Datasheet]], [[media:DAVICOM_DM9000Acircuit_EMI_052306.pdf|Circuit]]<br />
<br />
'''USB Keyboard Controller:''' Cypress CY7C63413C-PVXC [[media:Cypress_CY7C63413C_CY7C63513C_CY7C63613C.pdf|Datasheet]]<br />
<br />
'''Touchpad Controller:''' Cypress CY8C2043412LKXI [[media:Cypress-CY8C20x344.pdf|Datasheet]]<br />
<br />
== Technical Information ==<br />
<br />
[http://pastebin.com/n1sZVECB Pollux register dump (using HaRET)]<br />
<br />
[http://iliketopoopinthe.pastebin.com/M0DJLdwz MMU memory map dump]</div>Nirvoushttps://elinux.org/index.php?title=Leapster_Explorer_Framebuffer_Driver&diff=26281Leapster Explorer Framebuffer Driver2010-11-04T15:17:06Z<p>Nirvous: /* Building the Framebuffer Driver */</p>
<hr />
<div>[[image:LX-FB-example.jpg|right|350px|thumb|]]<br />
==Overview==<br />
These the steps to enable the Linux framebuffer for '''both Didj and Explorer''' on the updated Explorer kernel (2.6.31). <br />
<br />
They involve modifications to the kernel's configuration file to enable the framebuffer (and disable the existing DPC and MLC drivers), minor patches to a few of the existing kernel files, <br />
and the replacement of the new kernel's lf1000fb framebuffer driver with a working modified version.<br />
<br />
'''Note: The stock 'Brio' application environment will no longer be available on your device once you perform this modification.'''<br />
<br />
==Prerequisites==<br />
<br />
Cross compiler environment. For example:<br />
* [[Didj Build Environment|Buildcross]]<br />
* [[Didj Kernel Build Environment| Scratchbox]]<br />
* [[Didj crosstool-NG Build Environment| crosstool-NG]]<br />
<br />
[http://files.poxlib.org/LF-Linux-6905-20100610-0915.tar.gz LF 2.6.31 Source code - 94MB]<br />
<br />
If you havent yet built a kernel config file, you can use the default config as a basis to build this driver.<br />
<br />
<code><br />
make lf1000_ts_defconfig<br />
</code><br />
<br />
If you are building this driver for Didj, you must first follow these instructions:<br />
[[Didj_Explorer_Kernel]]<br />
<br />
==Building the Framebuffer Driver==<br />
<br />
1.Modify the Kernel configuration.<br />
<br />
The following items must be listed in 'lf1000 devices':<br />
<br />
<code><br />
<br />
# CONFIG_LF1000_DPC is not set <br />
# CONFIG_LF1000_MLC is not set<br />
<br />
</code><br />
<br />
The following items must be listed in 'character devices':<br />
<br />
<code><br />
<br />
CONFIG_VT=y <br />
CONFIG_CONSOLE_TRANSLATIONS=y <br />
CONFIG_VT_CONSOLE=y <br />
CONFIG_HW_CONSOLE=y<br />
<br />
</code><br />
The following items must be listed in 'graphics support':<br />
<br />
<code><br />
CONFIG_FB=y<br />
CONFIG_FB_CFB_FILLRECT=y <br />
CONFIG_FB_CFB_COPYAREA=y <br />
CONFIG_FB_CFB_IMAGEBLIT=y<br />
CONFIG_FB_LF1000=y<br />
</code><br />
<br />
The following items must be listed in 'display device support':<br />
<br />
<code><br />
#CONFIG_VGA_CONSOLE is not set<br />
CONFIG_DUMMY_CONSOLE=y <br />
CONFIG_FRAMEBUFFER_CONSOLE=y<br />
CONFIG_FONTS=y <br />
CONFIG_FONT_8x8=y <br />
CONFIG_FONT_MINI_4x6=y<br />
CONFIG_LOGO=y <br />
CONFIG_LOGO_LINUX_MONO=y <br />
CONFIG_LOGO_LINUX_VGA16=y <br />
CONFIG_LOGO_LINUX_CLUT224=y<br />
</code><br />
<br />
<br />
2.Modify arch/arm/mach-lf1000/core.c and drivers/input/keyboard/lf1000-keypad.c<br />
<br />
To enable the fb driver to register, and to remove error-causing references to LCD backlighting, apply the following patches.<br />
<br />
[[file:Core.c.diff]] (this one not needed when building LF-Linux-8291-20101026-1425 kernel)<br />
<br />
[[file:Lf1000-keypad.c.diff]]<br />
<br />
<code><br />
# patch arch/arm/mach-lf1000/core.c < Core.c.diff<br />
# patch drivers/input/keyboard/lf1000-keypad.c < Lf1000-keypad.c.diff<br />
</code><br />
<br />
3.Grab the lf1000fb driver from the [http://github.com/nirvous/lf1000fb github repository]. <br />
<br />
(Rather than incorporate the driver changes into a patch, the code is checked into github to facilitate improvements. If you have improvements or fixes, please contribute them!)<br />
<br />
<br />
4.Replace the current drivers/video/lf1000fb.c file with the file from the repository.<br />
<br />
<br />
5.Compile the kernel.<br />
<code><br />
LF-Linux-6905-20100610-0915/linux2.6# make<br />
</code><br />
<br />
6.Transfer the kernel to your device.<br />
<br />
* [[Didj_UART_Boot_with_Linux_Host|Boot Didj from UART Connection - Linux]] (or if so-equipped use an SD card)<br />
<br />
* [[Leapster_Explorer:_USB_Boot|To transfer kernels to Explorer via USB]]<br />
<br />
7.On the device, check to see that the lf1000fb driver loaded by<br />
<br />
<code><br />
dmesg | grep lf1000fb <br />
</code><br />
<br />
8.On the device, Look for /dev/fb0. <br />
<code><br />
ls /dev/fb*<br />
</code><br />
<br />
9.If it is not present on the device, create the framebuffer device entry.<br />
<br />
<code><br />
mdev -s<br />
</code><br />
<br />
10.Reboot<br />
<br />
<br />
You should see a picture of tux in the upper left corner of the display<br />
<br />
==Where to go from here==<br />
<br />
The Linux framebuffer driver enables you to use a wide variety of packages designed to work with it.<br />
<br />
* [[Didj_and_Explorer_libSDL|Build and install libSDL]]<br />
* [[Leapster Explorer/stc|Build and install a simple Tetris game using libSDL]]<br />
<br />
==Acknowledgments==<br />
<br />
Many thanks to zucchini for his valuable help and input, as well as to Claude, GrizzlyAdams, jburks, jkent, losinggeneration, MostAwesomeDude, NullMoogleCable, PhilKll, prpplague, ReggieUK, and everyone on #Didj (irc.freenode.org).</div>Nirvoushttps://elinux.org/index.php?title=Leapster_Explorer&diff=26269Leapster Explorer2010-11-04T04:45:15Z<p>Nirvous: /* Tutorials/How To's */</p>
<hr />
<div>[[image:LeapsterExplorer.jpg|right|350px|thumb|The Leapster Explorer (Leapfrog Enterprises)]]<br />
<br />
== Project Summary ==<br />
The Leapster Explorer (like its predecessor the [[Didj|Didj]]) is a toy produced by Leapfrog marketed as an educational handheld gaming console for kids aged 4-9. Although it has a proprietary graphical front end, it runs a generic Linux distribution on the same ARM9-based processor as the Didj. Console access to the Explorer is achieved using the same method as found on the Didj. <br />
<br />
[[Didj|Lots more information on the Didj]]<br />
<br />
== Source Code ==<br />
<br />
Latest tarballs<br />
<br />
[http://files.poxlib.org/LF-Linux-8291-20101026-1425.tar.gz LF-Linux-8291-20101026-1425.tar.gz 99MB]<br />
<br />
[http://files.poxlib.org/LF-OE-346-20101026-0945.tar.gz LF-OE-346-20101026-0945.tar.gz 337MB]<br />
<br />
[http://files.poxlib.org/LF-ThirdParty-8291-20101025-1623.tar.gz LF-ThirdParty-8291-20101025-1623.tar.gzz 20MB]<br />
<br />
<br />
Previous tarballs<br />
<br />
[http://files.poxlib.org/LF-Linux-6905-20100610-0915.tar.gz LF-Linux-6905-20100610-0915.tar.gz 94MB]<br />
<br />
[http://files.poxlib.org/LF-OE-251-20100614-0852.tar.bz2 LF-OE-251-20100614-0852.tar.bz2 320MB]<br />
<br />
[http://files.poxlib.org/LF-ThirdParty-7299-20100609-1458.tar.gz LF-ThirdParty-7299-20100609-1458.tar.gz 20MB]<br />
<br />
== Emulators ==<br />
[http://github.com/nirvous/gpsp_lf1000 gpSP_lf1000 - GBA Emulator]<br />
<br />
== Tutorials/How To's ==<br />
<br />
''' Hacks '''<br />
* [[Didj_and_Leapster_Explorer_TV_Out | Connect your Leapster Explorer to your television!]]<br />
* [[Leapster_Explorer:_Over_Clock|How to Overclock your Explorer]]<br />
* [[Leapster_Explorer:_Changes_To_Make_Your_Life_Easy|Changes to your system that will make your life easier]]<br />
* [[Leapster_Explorer:_How_To_Make_a_NAND_Cartridge| How to make a NAND cartridge]]<br />
<br />
''' Booting From External Sources '''<br />
* [[Leapster_Explorer:_Testing_Kernels_via_USB_Boot|Testing Kernels via USB Boot]]<br />
* [[Leapster_Explorer:_USB_Boot|USB Boot without LFConnect]]<br />
* [[Leapster_Explorer:_USB Boot_settings|Developer mode settings for USB Boot]]<br />
* [[Leapster_Explorer:_UART_Boot | UART Boot Explorer (Under Investigation)]]<br />
* [[Didj and Explorer FTDI JTAG How To| FTDI JTAG How To]]<br />
* [[Leapster_Explorer:_GPIO_subsystem|Using the GPIO subsystem to change boot options]] <br />
<br />
'''Networking'''<br />
* [[Leapster_Explorer:_Static_IP| Setup a static IP at boot]]<br />
* [[Leapster_Explorer:_Mount_NFS|Mount NFS partitions on the explorer]]<br />
* [[Leapster_Explorer:_SFTP_Access | SFTP Access]]<br />
<br />
'''Adding Device Drivers and Packages'''<br />
* [[Leapster_Explorer_Framebuffer_Driver|Linux Framebuffer Driver]]<br />
* [[Didj_and_Explorer_MMC_Patch|How to Patch and Build the MMC Drivers]]<br />
* [[Leapster_Explorer:_Install_OE|How to Install OpenEmbedded and Bitbake]]<br />
* [[Leapster_Explorer:_How_To_Extract_Files|How to Extract Files From the Firmware LFP file]]<br />
<br />
'''Cross-compilers / Build Environments'''<br />
* [[Didj Kernel Build Environment|Creating a Kernel Build Scratchbox]]<br />
* [[Didj Build Environment|Setting up a Cross Compiler Build Environment and Basic Usage]]<br />
* [[Didj crosstool-NG Build Environment|An alternate cross compiler, built with crosstool-NG]]<br />
<br />
'''Development'''<br />
* [[Leapster_Explorer_Random_Notes|Random Explorer Notes]]<br />
* [[Leapster_Explorer_Root_File_System|Building The Explorer Root File System]]<br />
* [[Leapster_Explorer_Framebuffer_Driver|Linux Framebuffer Driver]]<br />
* [[Didj_and_Explorer_libSDL|Building libSDL]]<br />
* [[Didj_and_Explorer_SDL_ttf|Building SDL_ttf font library]]<br />
* [[Didj_and_Explorer_SDL_image|Building SDL_image library with jpg and png support]]<br />
* [[Didj_and_Explorer_SDL_mixer|Building SDL_mixer audio library]]<br />
* [[Leapster_Explorer:_tslib_Touchscreen_Library|Building tslib]]<br />
* [[Leapster_Explorer:_SDL_resources|SDL Resources]]<br />
<br />
'''Applications'''<br />
* [[Leapster_Explorer:_Play_Theora_Videos|Play Theora Video files from the LX UI]]<br />
* [[Leapster_Explorer:_Play_Your_Own_Flash_Games|Load your own Flash files from the LX UI]]<br />
* [[Leapster_Explorer:_stc|STC (Simple tetris clone using SDL)]]<br />
* [[Leapster_Explorer:_mplayer|Compile and install mplayer for the explorer]]<br />
<br />
'''Graphics'''<br />
* [[Didj_and_Explorer:_rgb|creating .rgb files on the didj]]<br />
* [[Didj_and_Explorer:_boot_pixel_format|Changing the fb driver to display the boot logo correctly]]<br />
<br />
'''Games'''<br />
* [[Didj_and_Explorer:_sdlDoom|Compiling sdlDoom for the didj/lx]]<br />
<br />
== Technical Information ==<br />
[[Image:Leapster_Explorer-Mainboard-front.jpg |350px|thumb|Scan of front side of Leapster Explorer mainboard.]]<br />
[[Image:LX-fully-desoldered-front.jpeg |350px|thumb|With components desoldered - scan of front side of Leapster Explorer mainboard.]]<br />
[[Image:Leapster_Explorer-Mainboard-back.jpg |350px|thumb|Scan of back side of Leapster Explorer mainboard.]]<br />
[[Image:LX-fully-desoldered-back.jpeg |350px|thumb|With components desoldered - scan of back side of Leapster Explorer mainboard.]]<br />
[[Image:Leapster_Explorer_Usb_Pinouts.jpg |350px|thumb|Leapster Explorer USB Host Pinout. http://wtfmoogle.com/?p=1190]]<br />
[[Image:Leapster_Explorer_Usb_Connector.jpg |350px|thumb|Leapster Explorer USB Host Connector.]]<br />
[[Image:LX-TVOut-TestPad.JPG |350px|thumb|TVout BGA pin(2A) and suspected test pad (TP30 right).]]<br />
<br />
[[Leapster_Explorer:_FileSystem_Listing | Contents of erootfs version 1.0.8.6905]]<br />
<br />
[[Leapster_Explorer:_FileSystem_Listing_1.1.46.8291 | Contents of erootfs version 1.1.46.8291]]<br />
<br />
[[Leapster Explorer Memory Map]]<br />
<br />
[http://wtfmoogle.com/?p=1175 More Internal Photos Of the Explorer]<br />
<br />
====CPU====<br />
* OEM branded version of the MagicEyes [[Pollux]] VF3520F [[media:pollux-datasheet.pdf|Datasheet]]<br />
* Marked "LF-1000" - [[LF-1000|LF-1000 Specifications]]<br />
* ARM926ejs core<br />
* Same CPU as found in the [[Didj]]<br />
* Clocked at 393MHz<br />
<br />
====RAM====<br />
<br />
64MB DDR SDRAM - Nanya [[media:nt5d32m16cs-5t.pdf|NT5DS32M16CS-5T]]<br />
<br />
====Storage====<br />
<br />
512KB NOR - [[media:sst39vf040.pdf|SST SST39VF040]] (suspected for boot loader and default settings)<br />
<br />
512MB NAND - [[media:MT29F2G08AAC.pdf|Micron MT29F4G08AAC]] (for user data)<br />
<br />
====Display====<br />
<br />
1x Giantplus GPM824A0<br />
<br />
[http://www.texim-europe.com/promotion/402/ili9322%20driver%20datasheet_te.pdf IlI9322 TFT Driver]<br />
<br />
==== Audio ====<br />
<br />
1x Cirrus Logic [[media:CS43L22.pdf|CS43L22]] audio codec<br />
<br />
====Networking support====<br />
<br />
Via USB Gadget Ethernet<br />
<br />
====Interface types====<br />
<br />
USB host/device<br />
<br />
UART<br />
<br />
====Physical connectors====<br />
<br />
Cartridge socket (providing NAND, SDIO and UART)<br />
<br />
2x [[media:Scds034m.pdf|CL245a]] Low-voltage octal fet bus switch <br />
<br />
Mini USB port<br />
<br />
A proprietary form-factor accessory port for USB camera<br />
<br />
DC Power<br />
<br />
Headphone<br />
<br />
charger socket<br />
<br />
====Input devices====<br />
<br />
buttons, Touchscreen/stylus<br />
<br />
====Linux kernel====<br />
<br />
2.6.31<br />
<br />
====Misc====<br />
<br />
Flash support (via Flash Lite runtime)<br />
<br />
OpenGL support<br />
<br />
* [[Leapster_explorer_webcam_info|Webcam Information]]<br />
<br />
The explorer can use a didj power supply<br />
<br />
<br />
====DJHI Card Compatibility====<br />
[[DJHI_Card_Compatibility | DJHI Card Compatibility]]<br />
<br />
== Discussion ==<br />
<br />
* [irc://chat.freenode.net/didj #Didj on Freenode IRC] [http://www.poxlib.org/irclogs/ Channel Logs]<br />
* [http://www.hackerfoundry.com/forums/viewtopic.php?f=4&t=7&sid=4cc66fd2128b96e03603c812ba926301 Didj/Explorer Project Forum]</div>Nirvoushttps://elinux.org/index.php?title=Leapster_Explorer&diff=26263Leapster Explorer2010-11-04T01:20:03Z<p>Nirvous: /* Source Code */</p>
<hr />
<div>[[image:LeapsterExplorer.jpg|right|350px|thumb|The Leapster Explorer (Leapfrog Enterprises)]]<br />
<br />
== Project Summary ==<br />
The Leapster Explorer (like its predecessor the [[Didj|Didj]]) is a toy produced by Leapfrog marketed as an educational handheld gaming console for kids aged 4-9. Although it has a proprietary graphical front end, it runs a generic Linux distribution on the same ARM9-based processor as the Didj. Console access to the Explorer is achieved using the same method as found on the Didj. <br />
<br />
[[Didj|Lots more information on the Didj]]<br />
<br />
== Source Code ==<br />
<br />
Latest tarballs<br />
<br />
[http://files.poxlib.org/LF-Linux-8291-20101026-1425.tar.gz LF-Linux-8291-20101026-1425.tar.gz 99MB]<br />
<br />
[http://files.poxlib.org/LF-OE-346-20101026-0945.tar.gz LF-OE-346-20101026-0945.tar.gz 337MB]<br />
<br />
[http://files.poxlib.org/LF-ThirdParty-8291-20101025-1623.tar.gz LF-ThirdParty-8291-20101025-1623.tar.gzz 20MB]<br />
<br />
<br />
Previous tarballs<br />
<br />
[http://files.poxlib.org/LF-Linux-6905-20100610-0915.tar.gz LF-Linux-6905-20100610-0915.tar.gz 94MB]<br />
<br />
[http://files.poxlib.org/LF-OE-251-20100614-0852.tar.bz2 LF-OE-251-20100614-0852.tar.bz2 320MB]<br />
<br />
[http://files.poxlib.org/LF-ThirdParty-7299-20100609-1458.tar.gz LF-ThirdParty-7299-20100609-1458.tar.gz 20MB]<br />
<br />
== Emulators ==<br />
[http://github.com/nirvous/gpsp_lf1000 gpSP_lf1000 - GBA Emulator]<br />
<br />
== Tutorials/How To's ==<br />
<br />
''' Hacks '''<br />
* [[Didj_and_Leapster_Explorer_TV_Out | Connect your Leapster Explorer to your television!]]<br />
* [[Leapster_Explorer:_Over_Clock|How to Overclock your Explorer]]<br />
* [[Leapster_Explorer:_Changes_To_Make_Your_Life_Easy|Changes to your system that will make your life easier]]<br />
<br />
''' Booting From External Sources '''<br />
* [[Leapster_Explorer:_Testing_Kernels_via_USB_Boot|Testing Kernels via USB Boot]]<br />
* [[Leapster_Explorer:_USB_Boot|USB Boot without LFConnect]]<br />
* [[Leapster_Explorer:_USB Boot_settings|Developer mode settings for USB Boot]]<br />
* [[Leapster_Explorer:_UART_Boot | UART Boot Explorer (Under Investigation)]]<br />
* [[Didj and Explorer FTDI JTAG How To| FTDI JTAG How To]]<br />
* [[Leapster_Explorer:_GPIO_subsystem|Using the GPIO subsystem to change boot options]] <br />
<br />
'''Networking'''<br />
* [[Leapster_Explorer:_Static_IP| Setup a static IP at boot]]<br />
* [[Leapster_Explorer:_Mount_NFS|Mount NFS partitions on the explorer]]<br />
* [[Leapster_Explorer:_SFTP_Access | SFTP Access]]<br />
<br />
'''Adding Device Drivers and Packages'''<br />
* [[Leapster_Explorer_Framebuffer_Driver|Linux Framebuffer Driver]]<br />
* [[Didj_and_Explorer_MMC_Patch|How to Patch and Build the MMC Drivers]]<br />
* [[Leapster_Explorer:_Install_OE|How to Install OpenEmbedded and Bitbake]]<br />
* [[Leapster_Explorer:_How_To_Extract_Files|How to Extract Files From the Firmware LFP file]]<br />
<br />
'''Cross-compilers / Build Environments'''<br />
* [[Didj Kernel Build Environment|Creating a Kernel Build Scratchbox]]<br />
* [[Didj Build Environment|Setting up a Cross Compiler Build Environment and Basic Usage]]<br />
* [[Didj crosstool-NG Build Environment|An alternate cross compiler, built with crosstool-NG]]<br />
<br />
'''Development'''<br />
* [[Leapster_Explorer_Random_Notes|Random Explorer Notes]]<br />
* [[Leapster_Explorer_Root_File_System|Building The Explorer Root File System]]<br />
* [[Leapster_Explorer_Framebuffer_Driver|Linux Framebuffer Driver]]<br />
* [[Didj_and_Explorer_libSDL|Building libSDL]]<br />
* [[Didj_and_Explorer_SDL_ttf|Building SDL_ttf font library]]<br />
* [[Didj_and_Explorer_SDL_image|Building SDL_image library with jpg and png support]]<br />
* [[Didj_and_Explorer_SDL_mixer|Building SDL_mixer audio library]]<br />
* [[Leapster_Explorer:_tslib_Touchscreen_Library|Building tslib]]<br />
* [[Leapster_Explorer:_SDL_resources|SDL Resources]]<br />
<br />
'''Applications'''<br />
* [[Leapster_Explorer:_Play_Theora_Videos|Play Theora Video files from the LX UI]]<br />
* [[Leapster_Explorer:_Play_Your_Own_Flash_Games|Load your own Flash files from the LX UI]]<br />
* [[Leapster_Explorer:_stc|STC (Simple tetris clone using SDL)]]<br />
* [[Leapster_Explorer:_mplayer|Compile and install mplayer for the explorer]]<br />
<br />
'''Graphics'''<br />
* [[Didj_and_Explorer:_rgb|creating .rgb files on the didj]]<br />
* [[Didj_and_Explorer:_boot_pixel_format|Changing the fb driver to display the boot logo correctly]]<br />
<br />
'''Games'''<br />
* [[Didj_and_Explorer:_sdlDoom|Compiling sdlDoom for the didj/lx]]<br />
<br />
== Technical Information ==<br />
[[Image:Leapster_Explorer-Mainboard-front.jpg |350px|thumb|Scan of front side of Leapster Explorer mainboard.]]<br />
[[Image:LX-fully-desoldered-front.jpeg |350px|thumb|With components desoldered - scan of front side of Leapster Explorer mainboard.]]<br />
[[Image:Leapster_Explorer-Mainboard-back.jpg |350px|thumb|Scan of back side of Leapster Explorer mainboard.]]<br />
[[Image:LX-fully-desoldered-back.jpeg |350px|thumb|With components desoldered - scan of back side of Leapster Explorer mainboard.]]<br />
[[Image:Leapster_Explorer_Usb_Pinouts.jpg |350px|thumb|Leapster Explorer USB Host Pinout. http://wtfmoogle.com/?p=1190]]<br />
[[Image:Leapster_Explorer_Usb_Connector.jpg |350px|thumb|Leapster Explorer USB Host Connector.]]<br />
[[Image:LX-TVOut-TestPad.JPG |350px|thumb|TVout BGA pin(2A) and suspected test pad (TP30 right).]]<br />
<br />
[[Leapster_Explorer:_FileSystem_Listing | Contents of erootfs version 1.0.8.6905]]<br />
<br />
[[Leapster_Explorer:_FileSystem_Listing_1.1.46.8291 | Contents of erootfs version 1.1.46.8291]]<br />
<br />
[[Leapster Explorer Memory Map]]<br />
<br />
[http://wtfmoogle.com/?p=1175 More Internal Photos Of the Explorer]<br />
<br />
====CPU====<br />
* OEM branded version of the MagicEyes [[Pollux]] VF3520F [[media:pollux-datasheet.pdf|Datasheet]]<br />
* Marked "LF-1000" - [[LF-1000|LF-1000 Specifications]]<br />
* ARM926ejs core<br />
* Same CPU as found in the [[Didj]]<br />
* Clocked at 393MHz<br />
<br />
====RAM====<br />
<br />
64MB DDR SDRAM - Nanya [[media:nt5d32m16cs-5t.pdf|NT5DS32M16CS-5T]]<br />
<br />
====Storage====<br />
<br />
512KB NOR - [[media:sst39vf040.pdf|SST SST39VF040]] (suspected for boot loader and default settings)<br />
<br />
512MB NAND - [[media:MT29F2G08AAC.pdf|Micron MT29F4G08AAC]] (for user data)<br />
<br />
====Display====<br />
<br />
1x Giantplus GPM824A0<br />
<br />
[http://www.texim-europe.com/promotion/402/ili9322%20driver%20datasheet_te.pdf IlI9322 TFT Driver]<br />
<br />
==== Audio ====<br />
<br />
1x Cirrus Logic [[media:CS43L22.pdf|CS43L22]] audio codec<br />
<br />
====Networking support====<br />
<br />
Via USB Gadget Ethernet<br />
<br />
====Interface types====<br />
<br />
USB host/device<br />
<br />
UART<br />
<br />
====Physical connectors====<br />
<br />
Cartridge socket (providing NAND, SDIO and UART)<br />
<br />
2x [[media:Scds034m.pdf|CL245a]] Low-voltage octal fet bus switch <br />
<br />
Mini USB port<br />
<br />
A proprietary form-factor accessory port for USB camera<br />
<br />
DC Power<br />
<br />
Headphone<br />
<br />
charger socket<br />
<br />
====Input devices====<br />
<br />
buttons, Touchscreen/stylus<br />
<br />
====Linux kernel====<br />
<br />
2.6.31<br />
<br />
====Misc====<br />
<br />
Flash support (via Flash Lite runtime)<br />
<br />
OpenGL support<br />
<br />
* [[Leapster_explorer_webcam_info|Webcam Information]]<br />
<br />
The explorer can use a didj power supply<br />
<br />
<br />
====DJHI Card Compatibility====<br />
[[DJHI_Card_Compatibility | DJHI Card Compatibility]]<br />
<br />
== Discussion ==<br />
<br />
* [irc://chat.freenode.net/didj #Didj on Freenode IRC] [http://www.poxlib.org/irclogs/ Channel Logs]<br />
* [http://www.hackerfoundry.com/forums/viewtopic.php?f=4&t=7&sid=4cc66fd2128b96e03603c812ba926301 Didj/Explorer Project Forum]</div>Nirvous