JTAG Serial Cable run 1 for Milkymist One

From Qi-Hardware
Jump to: navigation, search

Contents

[edit] Schedule

Item Description Planned Start date Status
KiCad design file, Notice: Any derivative work from here, you should completely read all test results and take works yourself. If you found error, please let us know about them. This Run1 PCB errata you must read Bugs, Steps of Rework and Improvements Done
KiCad to BOM KiCad generates lst file Done
KiCad to Digi-Key/Mouser/Sharism boom generates shopping list / Order status All parts get ordered. Done
KiCad to gerber/drill file The process of settings on KiCad Gerber and Drill Files Done
Determine PCB panelized http://en.qi-hardware.com/wiki/File:M1_jtag_panel_run1_illustration_revised.pdf, source. Done
Single gerber-Out to PCB maker check list, pcb maker sent a panel gerber file back Done
KiCad to AI file How to generate KiCad Automatic Insertion File? coordinate files(front /back ) of parts. Done
PCB Back Check Confirm PCB quality, panel top, panel bottom Done
Engineering files to SMT manufacturer BoM/AI/panel gerber/placement top/placement bottom/parts polarity top/released parts' qty information/page 58 of Soldering reflow profile in FT2232HQ-REEL This date prior to SMT date Done
Some photos SMT/Through hole process PCBA is estimated arrival on January 3th, 2011 Within end week of 2010 Done
Tests & Results Done

[edit] Some photos

[edit] Tests and Results

  • Step1: Make sure the pod connected on a stable +5V[2] supplied by mini-USB cable and its current is good without huge consumptions. See Fig. 3. Finally got one board with D2 failure.
  • Step2: Update Milymist One JTAG/Serial pod firmware

Follow instructions of Update JTAG firmware on Windows[3], use FTDI_Prog tool to update following data:

Vendor ID : 20B7
Product ID : 0713
Manufacturer : Qi Hardware
Product Description : Milkymist One JTAG/Serial
Port A Hardware : 245 FIFO
Port B Hardware : RS232 UART

You can also do checks that by running on command line once you've plugged:

adam@adam-laptop:/$ sudo lsusb -d 20b7:0713 -v

Bus 002 Device 031: ID 20b7:0713  
Device Descriptor:
 bLength                18
 bDescriptorType         1
 bcdUSB               2.00
 bDeviceClass            0 (Defined at Interface level)
 bDeviceSubClass         0 
 bDeviceProtocol         0 
 bMaxPacketSize0        64
 idVendor           0x20b7 
 idProduct          0x0713 
 bcdDevice            7.00
 iManufacturer           1 Qi Hardware
 iProduct                2 Milkymist One JTAG/Serial
 iSerial                 3 FTU1MZXA
 bNumConfigurations      1
 Configuration Descriptor:
   bLength                 9
   bDescriptorType         2
   wTotalLength           55
   bNumInterfaces          2
   bConfigurationValue     1
   iConfiguration          0 
   bmAttributes         0x80
     (Bus Powered)
   MaxPower               90mA
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       0
     bNumEndpoints           2
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass    255 Vendor Specific Subclass
     bInterfaceProtocol    255 Vendor Specific Protocol
     iInterface              2 Milkymist One JTAG/Serial
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x02  EP 2 OUT
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        1
     bAlternateSetting       0
     bNumEndpoints           2
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass    255 Vendor Specific Subclass
     bInterfaceProtocol    255 Vendor Specific Protocol
     iInterface              2 Milkymist One JTAG/Serial
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x83  EP 3 IN
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x04  EP 4 OUT
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
Device Qualifier (for other device speed):
 bLength                10
 bDescriptorType         6
 bcdUSB               2.00
 bDeviceClass            0 (Defined at Interface level)
 bDeviceSubClass         0 
 bDeviceProtocol         0 
 bMaxPacketSize0        64
 bNumConfigurations      1
Device Status:     0x0000
 (Bus Powered)

The result of Step 2, got one board can not be detected in FTDI_Prog. See pictures below:

  • Step3: Test on Milkymist One board

1, Make sure Milkymist One board power is off.

2, Plug JTAG/Serial pod into Milkymist One board.

3, Plug USB mini-B cable into pod's usb connector.

4, Open a terminal session, type dmesg. There must be one high speed USB device shown below:

[ 9366.357089] usb 2-3: new high speed USB device using ehci_hcd and address 6
[ 9366.493871] usb 2-3: configuration #1 chosen from 1 choice
[ 9366.496693] usb 2-3: Ignoring serial port reserved for JTAG
[ 9366.499438] ftdi_sio 2-3:1.1: FTDI USB Serial Device converter detected
[ 9366.499500] usb 2-3: Detected FT2232H
[ 9366.499506] usb 2-3: Number of endpoints 2
[ 9366.499512] usb 2-3: Endpoint 1 MaxPacketSize 512
[ 9366.499518] usb 2-3: Endpoint 2 MaxPacketSize 512
[ 9366.499524] usb 2-3: Setting MaxPacketSize 512
[ 9366.499842] usb 2-3: FTDI USB Serial Device converter now attached to ttyUSB0

5, Turn power on the Milkymist One board.

6, Git clone UrJTAG[4] tool, then type jtag. Under this tool, type cable milkymist and detect commands to read Spartan-6 FPGA id back as below. Then this means the connection of JTAG between Milkymist One board and JTAG/Serial pod is well-connected and passed.

root@adam-laptop:/home/adam# jtag
UrJTAG 0.10 #
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors
UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.
jtag.c:518 main() Warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.
jtag> cable milkymist
Connected to libftdi driver.
jtag> detect
IR length: 6
Chain length: 1
Device Id: 00100100000000001000000010010011 (0x24008093)
 Manufacturer: Xilinx (0x093)
 Part(0):      xc6slx45 (0x4008)
 Stepping:     2
 Filename:     /usr/local/share/urjtag/xilinx/xc6slx45/xc6slx45
jtag> quit

7, Use automated test program binary file boot.bin[5] and open another new session of terminal, type following command to wait:

adam@adam-laptop:~/m1_adam/rc2_test$ flterm --port /dev/ttyUSB0 --kernel boot.bin
[FLTERM] Starting...

8, Press SW2 on Milkymist One board, you should see some log messages came from Milkymist One board in automated test program session as below. This means the way RX function from Milkymist One to pod is good and passed. Meanwhile the D3 and D4 LEDs on pods must be flash. Immediately go into automated test program session and press 'Escape' key, if you see boot status stop and BIOS> show up. Means the way TX function from pod to Milkymist One board is also work well and passed. Of course you can still type 'serialboot' enter automated test program.

libHPDMC SDRAM initialization runtime
(c) Copyright 2010 Sebastien Bourdeauducq, released under GNU LGPL version 3.
Version 1.0RC1

Initialization sequence completed.
Autocalibration OK, testing memory...
All SDRAM initialization completed, boot continuing.

VGA: framebuffers at 0x441a33e0 0x443233e0 0x444a33e0
VGA: DDC I2C bus initialized
VGA: mode set to 640x480

MILKYMIST(tm) v1.0RC1 BIOS   http://www.milkymist.org
(c) Copyright 2007, 2008, 2009, 2010 Sebastien Bourdeauducq

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, version 3 of the License.

I: BIOS CRC passed (7f7b4c54)
BRD: SoC 1.0RC1 on Milkymist One (PCB revision 1)
BRD: Mem. card : Yes
BRD: AC'97     : Yes
BRD: PFPU      : Yes
BRD: TMU       : Yes
BRD: Ethernet  : Yes
BRD: FML meter : Yes
BRD: Video in  : Yes
BRD: MIDI      : Yes
BRD: DMX       : Yes
BRD: IR        : Yes
BRD: USB       : Yes
BRD: Memtester : No
TMU: texture mapping unit initialized
USB: loading Navre firmware
USB: starting host controller
USB: HC: softusb-input v1.0RC1
UKB: USB keyboard connected to console
I: Displaying splash screen...USB: HC: Low speed device on port A
OK
I: MAC address: 10:e2:d5:00:00:24
I: Press Q or ESC to abort boot
I: Aborted boot on user request
BIOS> USB: HC: VID: 046D, PID: C062
USB: HC: Found mouse
serialboot

9, Turn power off on Milkymist One board and plug out USB mini-B cable.

10, Marking a p character on J1 of pod to stand for passed pod.

After Step3 test, there's one pod got jtag mis-function.

Notice: My linux laptop didn't tell if pod is inserted, so entered two commands at my site. Then type 'dmesg', should show USB device messages shown as Step 3's item 4. See how community helped me this, see Qi Hardware IRC log[6] and Milkymist IRC log[7].

root@adam-laptop:/home/adam# rmmod ftdi_sio
root@adam-laptop:/home/adam# modprobe ftdi_sio vendor=0x20b7 product=0x0713
root@adam-laptop:/home/adam# dmesg

Meanwhile recorded my environment here:

root@adam-laptop:/home/adam# uname -a
Linux adam-laptop 2.6.32-27-generic #49-Ubuntu SMP Wed Dec 1 23:52:12 UTC 2010 i686 GNU/Linux

[edit] Bugs, Steps of Rework and Improvements

1, Without high speed connection successfully[8].

1-1, An example of detecting a new full speed USB device not high speed.

a new full speed USB device, Measurement on D- line when power up on jtag serial pod(made by Sharism) in zoom-in
[ 9097.820073] usb 5-1: new full speed USB device using uhci_hcd and address 2
[ 9097.963104] usb 5-1: not running at top speed; connect to a high speed hub
[ 9097.994227] usb 5-1: configuration #1 chosen from 1 choice
[ 9098.002301] usb 5-1: Ignoring serial port reserved for JTAG
[ 9098.006252] ftdi_sio 5-1:1.1: FTDI USB Serial Device converter detected
[ 9098.006315] usb 5-1: Detected FT2232H
[ 9098.006321] usb 5-1: Number of endpoints 2
[ 9098.006327] usb 5-1: Endpoint 1 MaxPacketSize 64
[ 9098.006333] usb 5-1: Endpoint 2 MaxPacketSize 64
[ 9098.006338] usb 5-1: Setting MaxPacketSize 64
[ 9098.007555] usb 5-1: FTDI USB Serial Device converter now attached to ttyUSB0


1-2, An example of detecting normally a new high speed USB device.

a Good new high speed USB device found, Measurement on D- line when power up on jtag serial pod(made by Yanjun) in zoom-in. Is it a Packet Sync condition described in Negotiating High Speed? See High Speed Basics.
[ 9152.329069] usb 2-1: new high speed USB device using ehci_hcd and address 6
[ 9152.465653] usb 2-1: configuration #1 chosen from 1 choice
[ 9152.468353] usb 2-1: Ignoring serial port reserved for JTAG
[ 9152.472379] ftdi_sio 2-1:1.1: FTDI USB Serial Device converter detected
[ 9152.472417] usb 2-1: Detected FT2232H
[ 9152.472419] usb 2-1: Number of endpoints 2
[ 9152.472422] usb 2-1: Endpoint 1 MaxPacketSize 512
[ 9152.472425] usb 2-1: Endpoint 2 MaxPacketSize 512
[ 9152.472427] usb 2-1: Setting MaxPacketSize 512
[ 9152.473533] usb 2-1: FTDI USB Serial Device converter now attached to ttyUSB0


1-3, Root Cause

The ground pad of C3, R14, C27 and C28 doesn't connect to system ground.

Yanjun Luo found this bug[9]: The ground pads of C3, R14, C27 and C28, which their grounds are all connected together to a locally same net and which doesn't connect globally to system ground. So that functionalities of these four parts become invalid:

a) C3, which is for the 12MHz Xtal purpose(Oscillator output), although I have never met any one time fail on 
   12MHz pulse during 97pcs tests. It'll still have a potential failure that will be happened on end user one day.
b) R14, for FDTI chip current reference.
c) C27, C28; for USB VPHY power supply noise reduction.

This bug happened was the serious mistake took: Before I made pcb, I only checked gerber routes, verified parts, footprints and didn't discover this 'unconnected pads' on ground. After performed 'design rules check' in KiCad PCBnew, it had been indeed already existed there:

** Drc report for /home/adam/m1/jtag-serial/usb_jtag.brd **
** Created on 2011-02-12 10:53:00 **

** Found 0 DRC errors **

** Found 2 unconnected pads **
ErrType(2): Unconnected pads
    @ (108.311 mm,110.820 mm): Pad "1" (Back) of P2
    @ (108.049 mm,109.860 mm): Pad "2" (Front) of R14
ErrType(2): Unconnected pads
    @ (110.711 mm,109.901 mm): Pad "2" (Front) of C3
    @ (108.049 mm,109.860 mm): Pad "2" (Front) of R14

** End of Report **

1-4, Fixed patch contributed by Yanjun Luo here.

The ground pad of C3, R14, C27 and C28 connect to system ground.

1-5, Preventive action

a), Contributor who commits the *.brd file, must perform 'DRC' and confirm design before commitment.

b), Before making pcb, must confirm latest design without DRC error from git server. Compare gerber files with brd design file as possible.

1-6, Rework: Steps of rework to fix high speed bug

A quick way of rework about engineering change is to wire a connection from connect C27's pin 2 ground pad to the nearest copper of system ground. See steps as below.

2, Determine and find suitable height of J5 header on Milkymist One board.

3, SMT/Through holes process: feedbacks to smt vendor about above three failures.

[edit] Available Stocks

52 / 100 pcs

[edit] Next Schedule

JTAG Serial Cable run2 for Milkymist One

[edit] Links

[edit] References

  1. FUJI XP-243E
  2. ABM-8303D 30V 3A
  3. Update JTAG firmware on_Windows
  4. http://urjtag.git.sourceforge.net/git/gitweb.cgi?p=urjtag/urjtag;a=summary
  5. Milkymist One test tool
  6. http://en.qi-hardware.com/irclogs/qi-hardware_2011-01-03.log.html
  7. Kernel doesn't tell USB device of Milkymist One JTAG/Serial pod
  8. High Speed Basics
  9. Email about Root Cause on devel-milkymist.org
Personal tools
Namespaces
Variants
Actions
Navigation
interactive
Toolbox
Print/export