Number zero (N0) is my first attempt to build a robot. This toy tractor is built from LEGO® Technic parts. (back view) The toy is driven by Java ME™ MIDlet on a mobile phone via Bluetooth (JSR82). Small board on the tractor comprise of BlueSMiRF Bluetooth class 1 module and Atmel's ATmega88 controller. Two 71427 LEGO® 9V motors are controlled by TI's SN754410 configured as a dual H-bridge.
Thursday, October 30, 2008
Saturday, July 12, 2008
OpenOCD and FT2232's default VID/PID
I spent quite a bit of time today trying to get OpenOCD work with OpenOCD-USB Adapter on MacOSX (10.5). There are two hints which might save your time:
1) Since the adapter comes with no EEPROM, FT2232D uses default VID/PID (
0x0403/0x6010
). If FTDIUSBSerialDriver (aka VCP) is installed on your machine, you will need to comment out or remove FT2232C_A
section of driver's Info.plist
file located at/System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/
This would prevent the FTDI VCP driver from conflicts with OpenOCD on attempt to use the port A of FT2232D on the adapter board. You also might want to reload the FTDI VCP driver after modification with following commands:
$sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext
kextunload: unload kext /System/Library/Extensions/FTDIUSBSerialDriver.kext succeeded
$sudo kextload -c /System/Library/Extensions/FTDIUSBSerialDriver.kext
kextload: /System/Library/Extensions/FTDIUSBSerialDriver.kext loaded successfully
2) Since the adapter comes with no EEPROM, you will need to use default device descriptor in OpenOCD configuration file:
ft2232_device_desc "Dual RS232 A"
Missing EEPROM on OpenOCD-USB Adapter board
As it turned out OpenOCD-USB Adapter does not have EEPROM which is on the adapter schematic (see the bottom of this page). The EEPROM chip (93LC46BT SOT-23-6) was removed from the board after manufacturing. It is clearly can be seen on the picture (6 pads on the right of USB connector). I guess, the EEPROM chip was removed because of an error on the adapter PCB (EEPROM's CLK and Vcc pins are swapped). The same adapter is also available form www.ic-board.de. So be aware of this defect.
Friday, July 11, 2008
5V for a target from OpenOCD USB Adapter
I recently bought OpenOCD USB Adapter. The adapter arrived as a kit which comprises of the assembled adapter board, two IDC male connectors (ten and twenty pins) and one D-type 9 pin male connector.
One feature which is missing in this adapter from my point of view is an option to power up a target from USB. A USB port can provide up to 500 mA. The adapter should not consume more then 250 mA according to FT2232D datasheet. This would leave approximately 250 mA for a target board. For example, Olimex LPC2103 prototype header board would consume about a hundred mA.
Fortunately, there is a place on the adapter board for four pin header right behind D-type serial connector. Two pins in the center are serial's TTL TX and RX and pins on both sides are Ground and +5V straight from USB's Vbus. (Note, there is no ferrite bead on the adapter board.) I assembled a little board with MOSFET (FDN302P) to control power output. I used schematic of "Bus Powered Circuit with Power Control" (Figure 12) from FT2232D datasheet. The most challenging for me was to solder a wire to PWREN# pin (41) of FT2232D. The chip comes in the LQFP-48 package with leads on a 0.5mm pitch. Finally, since I do not need standard serial interface and only two pins in the second row of the serial connector are utilized, I decided to put a two pin polarized header in the first row to serve as a power connector for a target.
Well... As it turned out when OpenOCD (see update below about version 0.2.0) initializes interface FT2232 pulls PWREN# pin to high level for several hundred mS. This switches power off for the target. Meanwhile, OpenOCD attempts to communicate to the powered off target. I had to add a one second delay in
Well... As it turned out when OpenOCD (see update below about version 0.2.0) initializes interface FT2232 pulls PWREN# pin to high level for several hundred mS. This switches power off for the target. Meanwhile, OpenOCD attempts to communicate to the powered off target. I had to add a one second delay in
openocd.c
between jtag_interface_init
and jtag_init
calls to make the modification work.UPDATE: OpenOCD version 0.2.0 seems to fix the issue above. I was able to flash and debug code on Olimex STM32-H103 board powered from the JTAG adapter.
Subscribe to:
Posts (Atom)