Debug Board v2

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(Recommend not using the USB hub on the debug board)
(Updated, and merged comment from 'bdb')
Line 131: Line 131:
 
===== 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 emualtor (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.
+
  
 
===== JTAG =====
 
===== JTAG =====

Revision as of 05:52, 15 December 2007

The Debug Board page provides information on the architecture of the second version of the Neo1973 debug board.

Architecture Diagram
Annotated PCB Photograph










Contents

Overview

The debug board provides these key components.

Schematics

The Schematics of this board can be found at http://people.openmoko.org/laforge/doc/hardware/neo1973_debug_board/neo1973_debugboard_v2_schematics.pdf

USB Hub

This bus-powered hub

  • attaches to the laptop using its upstream port
  • 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.

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

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.

Drivers

Linux

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

Furthermore, you will need to do the following:

ftdi_sio module option
rmmod ftdi_sio
modprobe ftdi_sio vendor=0x1457 product=0x5118

or the equivalent in your modules.conf

udev rule

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

Windows

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

Hardware connection

Pinouts

  • J1 - is a regular 20 pin ARM JTAG at 3.3V level with 5V tolerance
  • J10 - is a 3.3V serial connected to portB of the FTDI2232D
pin name
1   TXD
2   RXD
3   RTS
4   CTS
5   DSR
6   DTR
7   DCD
8   RI
9   GND
10  VCC (3.3V)

Actually using it

On Linux

Serial Port

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 (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).

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.

Please see OpenOCD#OpenOCD_and_Debug_Board for some more information.

History

We previously had Neo1973 Debug Board v1 (inherited from some weird engineers who must have seen Brazil too often). Version 1 was never shipped to phase-0 or phase-1, and not sold to anyone.

Changes from v1 to v2

  • get rid of ethernet
    • we don't need it, and
    • we especially don't want a 40pin parallel 66MHz bus going between two pcb's
  • get rid of 7-segment LED displays
    • not really needed. We have a serial port
    • could be replaced by one or two GPIO LEDs
  • get rid of built-in wiggler
    • nobody has a parallel port on the laptop these days
  • get rid of li-ion battery (including charger)
    • the device can be fully usb powered by the laptop

Personal tools

The Debug Board page provides information on the architecture of the second version of the Neo1973 debug board.

Architecture Diagram
Annotated PCB Photograph










Overview

The debug board provides these key components.

Schematics

The Schematics of this board can be found at http://people.openmoko.org/laforge/doc/hardware/neo1973_debug_board/neo1973_debugboard_v2_schematics.pdf

USB Hub

This bus-powered hub

  • attaches to the laptop using its upstream port
  • 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.

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

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.

Drivers

Linux

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

Furthermore, you will need to do the following:

ftdi_sio module option
rmmod ftdi_sio
modprobe ftdi_sio vendor=0x1457 product=0x5118

or the equivalent in your modules.conf

udev rule

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

Windows

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

Hardware connection

Pinouts

  • J1 - is a regular 20 pin ARM JTAG at 3.3V level with 5V tolerance
  • J10 - is a 3.3V serial connected to portB of the FTDI2232D
pin name
1   TXD
2   RXD
3   RTS
4   CTS
5   DSR
6   DTR
7   DCD
8   RI
9   GND
10  VCC (3.3V)

Actually using it

On Linux

Serial Port

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 (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).

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.

Please see OpenOCD#OpenOCD_and_Debug_Board for some more information.

History

We previously had Neo1973 Debug Board v1 (inherited from some weird engineers who must have seen Brazil too often). Version 1 was never shipped to phase-0 or phase-1, and not sold to anyone.

Changes from v1 to v2

  • get rid of ethernet
    • we don't need it, and
    • we especially don't want a 40pin parallel 66MHz bus going between two pcb's
  • get rid of 7-segment LED displays
    • not really needed. We have a serial port
    • could be replaced by one or two GPIO LEDs
  • get rid of built-in wiggler
    • nobody has a parallel port on the laptop these days
  • get rid of li-ion battery (including charger)
    • the device can be fully usb powered by the laptop