* attaches to the FT2232D for JTAG and serial console on downstream port 1

* attaches to the FT2232D for JTAG and serial console on downstream port 1

−

* attaches to a free USB-A connector using downstream port 2

+

* attaches to USB-A connectors using downstream ports 2 and 3

−

* attaches to the phone using downstream port 3

+

−

Using the hub, you can have access to the phone, JTAG and serial simultaneously, through a single USB cable.

+

For the USB hub we use the TUSB2046B chip.

−

You can actually even charge the phone (100mA slow charge) using that downstream port.

+

Using the hub, you can have access to the phone, JTAG and serial simultaneously, through a single USB cable. You can actually even charge the phone (100mA slow charge) using that downstream port.

−

For the USB hub we use the TUSB2046B chip.

+

If you have 2 free USB ports on your PC, it is better to plug the debug board and the Neo1973 into the PC independently (rather than using the hub). This will allow the Neo1973 to charge at the full 500mA rate, and will also allow the debug-board USB to be unplugged/reconnected without affecting the Neo1973.

=== JTAG using FT2232 ===

=== JTAG using FT2232 ===

−

Basically, we integrate a USB-JTAG adaptor similar to the [Amontec JTAGkey-tiny]. The actual reference design that we used (Thanks to Joern!) can be found at http://www.oocdlink.com

+

Basically, we integrate a USB-JTAG adaptor similar to the [[Amontec JTAGkey-tiny]]. The actual reference design that we used (Thanks to Joern!) can be found at http://www.oocdlink.com

This provides us full JTAG debugging, at about 150times the speed of the [[wiggler]]

This provides us full JTAG debugging, at about 150times the speed of the [[wiggler]]

Line 63:

Line 51:

Instead of replicating a true RS232 port, we wanted to use a USB serial converter chip,

Instead of replicating a true RS232 port, we wanted to use a USB serial converter chip,

−

such as the FT232 or the PL2303.

+

such as the FT232 or the PL2303.

As it turns out, we can even use the second port of the FT2232 simultaneously with the JTAG. So no extra FT232 or PL2303 is required.

As it turns out, we can even use the second port of the FT2232 simultaneously with the JTAG. So no extra FT232 or PL2303 is required.

Line 77:

Line 65:

==== FT2232D EEPROM ====

==== FT2232D EEPROM ====

−

Your Debug Board contains a small serial EEPROM which should be flashed correctly during production. However, some boards have received incorrect/incomplete programming during production and thus you should verify this.

+

Please see [[Neo1973 Debug Board v2/EEPROM]] if you have an "early adopter" board with USB ID 0403:0610. If your board shows up as USB ID 1457:5118 then you can ignore this step.

−

If the board shows up as USB ID 1457:5118, then everything is correct.

+

==== Drivers ====

−

Only if your board shows up as USB ID 0403:6010, then you will need to flash the board!

+

===== libftdi =====

−

===== Flashing with Linux =====

+

Please make sure you have libftdi-0.8 or later. Earlier versions are known to cause problems. This should not be an issue if you are using statically-linked binaries.

−

{{note|FIC has done that for you, in case you have officially been supplied with the board. However, if you are one of the early adopters, the configuration and USB vendorID / productID might have not yet been set correctly.}}

+

===== ftdi_sio module =====

−

In order to do so, you can use the ftdi_eeprom program from

+

This module must be loaded with parameters that identify the debug board:

−

http://www.intra2net.com/de/produkte/opensource/ftdi/. Unfortunately, the latest version (0.2) doesn't yet contain support for our FT2232D, so you need the patch from http://people.openmoko.org/laforge/misc/debug_board_v2/ftdi_eeprom/ftdi_eeprom-0.2-moko.patch

{{warning|Make sure you don't have any other FTDI FT232 / FT2232 based devices attached to the USB while running ftdi_eeprom. It might be wise to disconnect everything but the debug board}}

+

Please install the rules from http://people.openmoko.org/laforge/misc/debug_board_v2/udev_rules/

−

You should get something like the following printout if everything was successful:

+

====== Windows Driver ======

−

<pre>

+

−

FTDI eeprom generator v0.2

+

−

(c) Intra2net AG <opensource@intra2net.com>

+

−

FTDI init: 0

+

−

Unable to find FTDI devices under given vendor/product id: 0x1457/0x5118

+

−

Retrying with default FTDI id.

+

−

Used eeprom space: 102 bytes

+

−

FTDI write eeprom: 0

+

−

Writing to file: neo1973_debug_board_v2.eeprom

+

−

FTDI close: 0

+

−

</pre>

+

−

Once the flashing has finished, just disconnect and reconnect, and you should see

+

Please use the driver from http://people.openmoko.org/laforge/misc/debug_board_v2/windows_drivers/

−

<pre>

+

−

$ lsusb -v -d 0x1457:

+

−

Bus 005 Device 009: ID 1457:5118

+

−

Device Descriptor:

+

−

bLength 18

+

−

bDescriptorType 1

+

−

bcdUSB 2.00

+

−

bDeviceClass 0 (Defined at Interface level)

+

−

bDeviceSubClass 0

+

−

bDeviceProtocol 0

+

−

bMaxPacketSize0 8

+

−

idVendor 0x1457

+

−

idProduct 0x5118

+

−

bcdDevice 5.00

+

−

iManufacturer 1 OpenMoko

+

−

iProduct 2 Debug Board for Neo1973

+

−

iSerial 0

+

−

bNumConfigurations 1

+

−

[...]

+

−

</pre>

+

−

===== Flashing with Windows =====

+

==== Applications ====

−

{{note|FIC has done that for you, in case you have officially been supplied with the board. However, if you are one of the early adopters, the configuration and USB vendorID / productID might have not yet been set correctly.}}

+

−

In order to do so, you can use the FTDI Mprog program from http://www.ftdichip.com/Resources/Utilities/MProg3.0_Setup.exe

[[openocd]] is required. It is recommended to use a statically-linked binary produced by the Openmoko build system. Other versions may give "unrecognized command" errors while parsing the configuration file.

−

===== Linux =====

+

====== openocd.cfg ======

−

Please make sure you have libftdi-0.8 or later. Earlier versions are known to cause problems

+

Openocd requires a configuration file in the directory from which you run the application. A typical example is shown below:

−

Furthermore, you will need to do the following:

+

<pre>

+

telnet_port 4444

+

gdb_port 3333

+

interface ft2232

+

jtag_speed 0

+

ft2232_vid_pid 0x1457 0x5118

+

ft2232_layout "jtagkey"

+

reset_config trst_and_srst

+

jtag_device 4 0x1 0xf 0xe

+

daemon_startup attach

+

target arm920t little reset_run 0 arm920t

+

working_area 0 0x200000 0x4000 backup

+

run_and_halt_time 0 5000

+

ft2232_device_desc "Debug Board for Neo1973"

+

</pre>

−

====== ftdi_sio module option ======

+

===== dfu-util =====

−

rmmod ftdi_sio

+

[[dfu-util]] is used to write images to the NAND flash once you have a functional u-boot. It is recommended to use a statically-linked binary produced by the Openmoko build system.

Please install the rules from http://people.openmoko.org/laforge/misc/debug_board_v2/udev_rules/

+

* Unplug both USB cables

+

* Remove the Neo1973 battery

+

* Connect the FPC between the Neo1973 and the debug board

+

* Replace the Neo1973 battery

+

* Plug the Neo1973 USB cable into your PC

+

* If the Neo1973 does not turn on automatically at this point, hold the power button for 5 seconds

+

* Plug the debug-board USB cable into your PC

−

===== Windows =====

+

A Neo1973 with a working u-boot should power on when its USB cable is plugged in, but a "bricked" one will not. Note that there will be no visible feedback from the power-button press on a bricked device.

−

Please use the driver from http://people.openmoko.org/laforge/misc/debug_board_v2/windows_drivers/

+

==== Pinouts ====

−

=== Hardware connection ===

+

The Debug Board v2 may be used for other embedded projects. It provides the following connectors:

−

+

−

* [[Connecting Neo1973 with Debug Board v2]]

+

−

* Connect your favorite embedded project to the Debug Board v2:

+

−

+

−

==== Pinouts ====

+

* J1 - is a regular 20 pin ARM JTAG at 3.3V level with 5V tolerance

* J1 - is a regular 20 pin ARM JTAG at 3.3V level with 5V tolerance

Line 198:

Line 161:

===== Serial Port =====

===== Serial Port =====

−

The Linux kernel of your host system will create a virtual serial device called '''/dev/ttyUSBx''' where 'x' is a sequentially assigned number. If you don't have any other USB serial converters attached to your machine, the device name will be '''/dev/ttyUSB0'''.

+

The Linux kernel of your host system will create virtual serial devices called '''/dev/ttyUSBx''' where 'x' is a sequentially assigned number. If you don't have any other USB serial converters attached to your machine, the device name will be '''/dev/ttyUSB1''' for the serial port. A '''/dev/ttyUSB0''' will also be created initially, but will disappear once [[openocd]] connects to the JTAG port.

−

You can use your favourite terminal emualtor (minicom, cu, zc, ...) just like for any other/real serial port. You may use gdb as well (eg. target remote /dev/ttya).

+

You can use your favourite terminal emulator (screen, minicom, cu, zc, ...) just like for any other/real serial port. The baud rate should be set to 115200. You may use gdb as well (eg. target remote /dev/ttya).

−

bdb - My experience with the debug board shipped with GTA01B (v3??) was that the serial port eventually came out as /dev/ttyUSB1. I assume ttyUSB0 was the jtag. I also couldn't get the serial to work at all until after I had fired up openocd to take over the jtag. (Which disappears ttyUSB0) That could have been coincidence of course... I had also removed all flow control on the serial port settings - maybe that was the key. PS - 115200 baud.

+

The /dev/ttyUSB1 device node will be removed if the debug-board USB cable is unplugged. You should exit your terminal program before unplugging the cable, and then re-run it after the cable is plugged back in.

Once openocd is running, open another terminal window and connect to its telnet port:

+

+

linux$ telnet localhost 4444

+

Trying 127.0.0.1...

+

Connected to localhost.

+

Escape character is '^]'.

+

Open On-Chip Debugger

+

>

+

+

You may now reset the device, set breakpoints, upload images, etc.

+

+

===== Unbricking Procedure =====

+

+

Refer to [[Neo1973 Debug Board v2/Unbricking]] for a manual procedure to re-flash a "bricked" phone (one with a damaged u-boot or environment, where the normal [[Flashing the Neo 1973]] update procedure cannot be used).

+

+

===== Further Reading =====

+

+

The following Wiki pages contain useful information about what can be done with the debug board and the u-boot console. Note, however, that some of the information applies to earlier versions of the product and is not suitable for use with purchased GTA01Bv4 phones.

+

+

- [[OpenOCD#OpenOCD_and_Debug_Board]]

+

+

- [[U-Boot#Using_JTAG_to_boot_from_RAM]]

+

+

- [[Devirginator]]

−

Please see [[OpenOCD#OpenOCD_and_Debug_Board]] for some more information.

+

- [[NAND_bad_blocks]]

== History ==

== History ==

−

We previously had [[Neo1973 Debug Board v1]] (inherited from some weird engineers who must have seen Brazil too often).

+

We previously had [[Debug Board v1]]. Version 1 was never shipped to phase-0 or phase-1, and not sold to anyone.

−

Version 1 was never shipped to phase-0 or phase-1, and not sold to anyone.

attaches to the FT2232D for JTAG and serial console on downstream port 1

attaches to USB-A connectors using downstream ports 2 and 3

For the USB hub we use the TUSB2046B chip.

Using the hub, you can have access to the phone, JTAG and serial simultaneously, through a single USB cable. You can actually even charge the phone (100mA slow charge) using that downstream port.

If you have 2 free USB ports on your PC, it is better to plug the debug board and the Neo1973 into the PC independently (rather than using the hub). This will allow the Neo1973 to charge at the full 500mA rate, and will also allow the debug-board USB to be unplugged/reconnected without affecting the Neo1973.

openocd is required. It is recommended to use a statically-linked binary produced by the Openmoko build system. Other versions may give "unrecognized command" errors while parsing the configuration file.

If the Neo1973 does not turn on automatically at this point, hold the power button for 5 seconds

Plug the debug-board USB cable into your PC

A Neo1973 with a working u-boot should power on when its USB cable is plugged in, but a "bricked" one will not. Note that there will be no visible feedback from the power-button press on a bricked device.

The Linux kernel of your host system will create virtual serial devices called /dev/ttyUSBx where 'x' is a sequentially assigned number. If you don't have any other USB serial converters attached to your machine, the device name will be /dev/ttyUSB1 for the serial port. A /dev/ttyUSB0 will also be created initially, but will disappear once openocd connects to the JTAG port.

You can use your favourite terminal emulator (screen, minicom, cu, zc, ...) just like for any other/real serial port. The baud rate should be set to 115200. You may use gdb as well (eg. target remote /dev/ttya).

The /dev/ttyUSB1 device node will be removed if the debug-board USB cable is unplugged. You should exit your terminal program before unplugging the cable, and then re-run it after the cable is plugged back in.

The following Wiki pages contain useful information about what can be done with the debug board and the u-boot console. Note, however, that some of the information applies to earlier versions of the product and is not suitable for use with purchased GTA01Bv4 phones.

USB Hub

attaches to the FT2232D for JTAG and serial console on downstream port 1

attaches to a free USB-A connector using downstream port 2

attaches to the phone using downstream port 3

Using the hub, you can have access to the phone, JTAG and serial simultaneously, through a single USB cable.

You can actually even charge the phone (100mA slow charge) using that downstream port.

For the USB hub we use the TUSB2046B chip.

JTAG using FT2232

Basically, we integrate a USB-JTAG adaptor similar to the [Amontec JTAGkey-tiny]. The actual reference design that we used (Thanks to Joern!) can be found at http://www.oocdlink.com

This provides us full JTAG debugging, at about 150times the speed of the wiggler

The actual JTAG port is connected with

the phone (via debug flex cable)

A separate 20-pin header using standard ARM-JTAG pinout

this allows the user to use this device as JTAG adaptor even for other arm-based devices

Serial Port

Instead of replicating a true RS232 port, we wanted to use a USB serial converter chip,
such as the FT232 or the PL2303.

As it turns out, we can even use the second port of the FT2232 simultaneously with the JTAG. So no extra FT232 or PL2303 is required.

Tri-State Serial Port

The serial port needs a tri-state driver, since it is both connected to the GSM modem AND to the debug board. We drive the tri-state driver by an inverted GSM_EN signal (pin 7 on FPC connector).

Usage Instructions

Preconditions

FT2232D EEPROM

Your Debug Board contains a small serial EEPROM which should be flashed correctly during production. However, some boards have received incorrect/incomplete programming during production and thus you should verify this.

If the board shows up as USB ID 1457:5118, then everything is correct.

Only if your board shows up as USB ID 0403:6010, then you will need to flash the board!

Flashing with Linux

NOTE: FIC has done that for you, in case you have officially been supplied with the board. However, if you are one of the early adopters, the configuration and USB vendorID / productID might have not yet been set correctly.

Flashing with Windows

NOTE: FIC has done that for you, in case you have officially been supplied with the board. However, if you are one of the early adopters, the configuration and USB vendorID / productID might have not yet been set correctly.

Pinouts

Actually using it

On Linux

Serial Port

The Linux kernel of your host system will create a virtual serial device called /dev/ttyUSBx where 'x' is a sequentially assigned number. If you don't have any other USB serial converters attached to your machine, the device name will be /dev/ttyUSB0.

You can use your favourite terminal emualtor (minicom, cu, zc, ...) just like for any other/real serial port. You may use gdb as well (eg. target remote /dev/ttya).

bdb - My experience with the debug board shipped with GTA01B (v3??) was that the serial port eventually came out as /dev/ttyUSB1. I assume ttyUSB0 was the jtag. I also couldn't get the serial to work at all until after I had fired up openocd to take over the jtag. (Which disappears ttyUSB0) That could have been coincidence of course... I had also removed all flow control on the serial port settings - maybe that was the key. PS - 115200 baud.

JTAG

Once you have installed libftdi >= 0.8 and configured OpenOCD with the correct openocd.cfg from OpenOCD#openocd.cfg, it should work just fine.