Archives For Flyswatter

Flyswatter JTAG and AVR32

August 9, 2010 — 1 Comment

>Today I soldered AVR32 adapter for Flyswatter JTAG. Actually it’s very simple task – just connect respective pins and make common ground wire. No capacitors, resistors or MOSFETs. Idea was to make it nice and neat but having bought wrong breadboard and soldered first headers in a wrong place I just let it flow and here it is:

 

From aesthetics point of view suck, but it also works and it’s everything I need:

Info : JTAG tap: avr32.cpu tap/device found: 0x21e8203f (mfg: 0x01f, part: 0x1e82, ver: 0×2)

Warn : JTAG tap: avr32.cpu UNEXPECTED: 0x21e8203f (mfg: 0x01f, part: 0x1e82, ver: 0×2)

>Since I lent my RS232/USB adapter to a friend it was nice opportunity to experiment with Flyswatter on-board RS232 port. OS X does not support FTDI devices out of the box, but it’s not a problem for OpenOCD, which uses generic interface to communicate JTAG board. Things get a little bit more complicated when you’re trying to get on-board RS232 port working.

I started with installing stock drivers from FTDI site. Current version supports Snow Leopard. With these drivers installed system started to detect two COM ports but JTAG part stopped to work as OpenOCD failed to claim USB device.

Long story short: you’ll need to edit kext content to prevent first usb device from being recognized as a virtual COM port. Nothing fancy, simple text editor would do the trick for all you need to edit is plain XML file. Find line <key>FT2232C_A</key> and delete it along with following <dict> element. Reload kext using kextunload/kextload and voila – JTAG works, “cu -s 115200 -l cu.usbserial-FS000000B” works.

JTAG, OpenOCD & FreeBSD

April 19, 2009 — 3 Comments

>As it was mentioned earlier now I have new cool toy to play with. Flyswatter JTAG with MIPS14 adapter. Though Tin Can Tools kindly warned me that OpenOCD did not support EJTAG/MIPS I decided to order it and it turned to be a good deal. Why? Because there is EJTAG/MIPS support for OpenOCD as of 0.1.0. Moreover it works really nice with FreeBSD port of libftdi. So all I had to do was to make devel/openocd port and tweak some configs. And that’s it. Stock gdb for MIPS is not ready yet, but one can attach, examine registers, single step using telnet interface to daemon:

[gonzo@figaro:][~/FreeBSD]
% telnet localhost 4444
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
Open On-Chip Debugger
> halt
target state: halted
target halted due to debug-request, pc: 0x8023b974

> reg
(0) zero (/32): 0×00000000 (dirty: 0, valid: 1)
(1) at (/32): 0x802c0000 (dirty: 0, valid: 1)
(2) v0 (/32): 0×00000001 (dirty: 0, valid: 1)
(3) v1 (/32): 0×00000000 (dirty: 0, valid: 1)
(4) a0 (/32): 0×00000000 (dirty: 0, valid: 1)
(5) a1 (/32): 0×00000000 (dirty: 0, valid: 1)
(6) a2 (/32): 0x80280b28 (dirty: 0, valid: 1)
(7) a3 (/32): 0×00000602 (dirty: 0, valid: 1)
(8) t0 (/32): 0x802c10b0 (dirty: 0, valid: 1)
(9) t1 (/32): 0×00000000 (dirty: 0, valid: 1)
(10) t2 (/32): 0×00000000 (dirty: 0, valid: 1)
(11) t3 (/32): 0×00000000 (dirty: 0, valid: 1)
(12) t4 (/32): 0×00000000 (dirty: 0, valid: 1)
(13) t5 (/32): 0×00000001 (dirty: 0, valid: 1)
(14) t6 (/32): 0×00000000 (dirty: 0, valid: 1)
(15) t7 (/32): 0×00000000 (dirty: 0, valid: 1)
(16) s0 (/32): 0xc082abe0 (dirty: 0, valid: 1)
(17) s1 (/32): 0x801312a8 (dirty: 0, valid: 1)
(18) s2 (/32): 0×00000000 (dirty: 0, valid: 1)
(19) s3 (/32): 0xc0828b20 (dirty: 0, valid: 1)
(20) s4 (/32): 0xc0793ea0 (dirty: 0, valid: 1)
(21) s5 (/32): 0×00000000 (dirty: 0, valid: 1)
(22) s6 (/32): 0×00000000 (dirty: 0, valid: 1)
(23) s7 (/32): 0×00000000 (dirty: 0, valid: 1)
(24) t8 (/32): 0x02887fa0 (dirty: 0, valid: 1)
(25) t9 (/32): 0×00000002 (dirty: 0, valid: 1)
(26) k0 (/32): 0x8024e3a0 (dirty: 0, valid: 1)
(27) k1 (/32): 0×00000000 (dirty: 0, valid: 1)
(28) gp (/32): 0×00000000 (dirty: 0, valid: 1)
(29) sp (/32): 0xc0793e30 (dirty: 0, valid: 1)
(30) fp (/32): 0×00000000 (dirty: 0, valid: 1)
(31) ra (/32): 0x8023b964 (dirty: 0, valid: 1)
(32) status (/32): 0x0000ff01 (dirty: 0, valid: 1)
(33) lo (/32): 0x0000001c (dirty: 0, valid: 1)
(34) hi (/32): 0×00000020 (dirty: 0, valid: 1)
(35) badvaddr (/32): 0xc0797dc8 (dirty: 0, valid: 1)
(36) cause (/32): 0×40008000 (dirty: 0, valid: 1)
(37) pc (/32): 0x8023b974 (dirty: 0, valid: 1)
>

>So it has been a month since last post about this device and I think it’s time to announce current state of affairs.

  • UART: just works
  • PCI controller: kind of works. Proper interrupt handling/routing required.
  • On-board ethernet controller: WAN port works fine. Mounts NFS root/loads init. Some minor work should be done in order to get both ports working.
  • Integrated OHCI controller: kernel detects and initializes it. Need USB cable to connect something to headers on the board and test if it actually works.
  • Integrated EHCI controller: in progress. Some refactoring of current MIPS bus_space implementation required.
  • GPIO: to be done
  • Flash memory: to be done

At the moment further progress was blocked with something that looks like memory corruption. It’s hard to trace with ktr(4) and printf(9) so I ordered Flyswatter JTAG adapter and MIPS14 adapter from Tin Can Tools. I was warned that Flyswatter/MIPS combination is not supported by OpenOCD but I’d better spend some time making it work then tracing obscure memory corruptions in the wild.