Ik heb afgelopen vrijdag eindelijk mijn olimex boardje ontvangen. Bij dit boardje zit een ARM-USB-OCD Jtag programmer -> http://olimex.com/dev/arm-usb-ocd.html
Nadat ik eclipse had geïnstalleerd vanaf de bijgeleverde cd, kreeg ik problemen met het installeren van de juiste drivers.
Deze staat namelijk niet op de bijgeleverde cd.
In de programmer zit een FTDI chip die volgens mij de vertaling tussen USB naar RS232 verzorgt.
Op de website van FTDI staan echter wel drivers, maar ook deze werken niet op Windows XP SP2.
Ik heb zo'n vermoeden dat de zogenaamnde PID en VID waardes niet juist zijn.
Op de olimex link van hierboven staan andere PID en VID waardes dan in de drivers staan vermeldt, namelijk:
PID: 0x0003
VID: 0x15BA
Heel even dacht ik zelf de waardes in de FTDI drivers te veranderen, maar al gauw zag ik dat ze voor PID meerdere waardes hebben.
Ik begrijp er eerlijk gezegt niets meer van en vraag me ook echt af waarom olimex niet gewoon de drivers op hun eigen website zetten. Tot op heden heb ik nog steeds niets van olimex gehoord.
Zijn er hier mensen die ook zo'n programmer hebben en die mij verder kunnen helpen?
Mensen die ervaring hebben met de FTDI chips zijn ook van harte welkom
De drivers worden mee geinstalleerd wanneer je de ARM GCC tools van de cd hebt geinstalleerd. Bij mij staan ze onder
"C:\gccfd\Olimex OpenOCD Driver".
k helemaal top, je moet het maar net weten waar de driver staat. Windows is nu eenmaal niet zo slim om zelf automatisch de drivers te vinden.
Ok, nu heb ik er weer een probleem bij.
Ik probeer dus simpel een ledblink programmaatje in Eclipse te maken.
- File > new project
- C/C++ project
- Ik kies dan voor executable > ANSI C
- vervolgens tik ik mijn code
- En druk dan op Run OpenOCD
Ik krijg dan telkens de volgende foutmelding in mijn debug venster:
Info: openocd.c:93 main(): Open On-Chip Debugger (2007-09-05 09:00 CEST)
Error: configuration.c:122 parse_config_file(): couldn't open config file
Weet iemand hoe ik dit kan verhelpen.
In andere voorbeeld projectmappen zie ik vaak wel een .cfg bestand.
Eigenlijk moet ik een soort van tutorial zien te vinden waarmee ik een keertje het hele proces kan doorlopen.
Dan weet ik iig hoe het in zijn werk gaat
Ik heb zo'n vermoeden dat de standaard installatie van de CD nit voldoende is. Deze installatie zou eclipse, WinARm en openOCD in 1 keer installeren.
Moet daar niet nog cygwin geïnstalleerd worden om het draaiende te krijgen?
kijk eens naar yogarto
http://www.yagarto.de/howto/yagarto2/index.html
dit is een samenhangsel van arm devellopment met open ocd en eclips en winarm.
Het duurde mij ook even voor ik de open ocd debugger aan de gang had. de config file vergt het één en ander aan uitzoek werk.
in deze forum thread, heb ik destijds wat gepost onder de naam mcd, waarin ik erachter kwam dat er 2 versies zijn, en dat in de config files soms nog oude syntax staat die bij een nieuwe versie aangepast dient te worden
http://forum.sparkfun.com/viewtopic.php?t=8961&sid=e924f4efb4b7bfc056b… (hopelijk geen bezwaar van link naar ander forum, modjes?)
Het zit allemaal zo gigantisch verwarrend in elkaar, niet te geloven gewoon 
Op de CD heb ik een Olimex-GCCFD-240907.exe file staan en die heb ik geïstalleerd.
Alles lijkt nu in de map c:/gccfd te staan.
Als ik Eclipse run, dan zie ik bij externe tools ook gewoon netjes de openOCD, openOCD tiny en openOCD SAM7 staan.
In de map c:/gccfd zie ik ook netjes een map yagarto staan.
Maar bij het aanmaken van een nieuw project in eclipse, zie ik alleen maar other toolchain, cygwin of minGW staan.
Zelf gebruik ik de WinARM omgeving, ARM-USB-OCD en Ecllipse ook (voor een LPC2148, maar voor de 2106 geld denk ik het zelfde).
Dat het verwarrent in elkaar zit heb ik ook gemerkt. Ben er zelf ook een tijd mee bezig geweest voordat ik alles draaiend had. Nu heb ik dit net vorige week weer moeten doen, want vorige maand is mijn PC naar de eeuwige jachtvelden vertrokken (MB kappot, gelukkig de HD en data niet) en ik was toch toe aan een nieuwe, dus maar een nieuw systeem gekocht.
Maar ik gebruikte altijd een parallele poort programmer (zelfgemaakte wriggler) en mijn nieuwe PC heeft geen PP meer. Dan maar de ARM-USB-OCD kopen en 'even' installeren.
Nauw, dat installeren duurde iets langer dan gedacht. Vooral de verschillende versies van OpenOCD waarbij de syntax veranderd is. Erg lastig.
Maar om een kort verhaal nog iets langer te maken, dit is wat ik (zo uit mijn hoofd) heb gedaan:
- OpenOCD intstalleren (via yagarto: http://www.yagarto.de/download/openocd/openocd-r717-20080619.exe)
- WinArm geinstallerd (http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/WinARM-200…) Deze kan je gewoon op c:\ uitpakken.
- Ecllipse geinstallerd (IDE for C/C++ via http://www.eclipse.org/). Voor installatie heb geloof ik de handleiding van yagarto gevolgd.
- Paden goed gezet (dus de %PATH%).
Nu kon ik eindelijk compileren. Proggen ging nog niet.
Na het uitproberen van verschillende soorten config files en 'reset' scripts ben ik achter 2 zaken gekomen die erg vervelend zijn:
1. een aantal commando's in de scripts zijn vervangen, o.a. de 'flash write' in 'flash write_binary'.
2. Ik had mijn LPC2148 in een staat gebracht, zodat i niet meer te proggen was via de jtag. Ik heb toen via de FlashMagic tool (http://www.flashmagictool.com/) het device volledig ge-erased. Daarna werkte de JTAG prima!
Ik prog niet vanuit Eclipse, maar heb een batch file + config + script die in de source dir staat van mijn eclipse project:
Batch file prog.cmd:
@echo programing flash...
@REM @openocd-pp -f prog-flash.cfg
openocd-ftd2xx -f prog-flash-usb.cfg
@echo Done.
config file prog-flash.cfg:
#
# Flash LPC2138 memory using openocd
# and a FTDI FT2232-based JTAG-interface
#
# created by Martin Thomas
# based on information from Dominic Rath
#
#daemon configuration
telnet_port 4444
gdb_port 3333
#interface
interface ft2232
ft2232_device_desc "Amontec JTAGkey A"
ft2232_layout jtagkey
ft2232_vid_pid 0x0403 0xcff8
jtag_speed 3
jtag_nsrst_delay 200
jtag_ntrst_delay 200
#use combined on interfaces or targets that can't set TRST/SRST separately
reset_config trst_and_srst srst_pulls_trst
#jtag scan chain
#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
jtag_device 4 0x1 0xf 0xe
#target configuration
daemon_startup reset
#target
#target arm7tdmi
target arm7tdmi little run_and_init 0 arm7tdmi-s_r4
run_and_halt_time 0 30
# flash-options LPC2138
working_area 0 0x40000000 0x4000 nobackup
target_script 0 reset openocd_lpc2138_flash.script
# LPC2138 @ 12MHz / 0x7D000 from 500*1024 (not 512!)
## up to version SVN188:
#flash bank lpc2000 0x0 0x7D000 0 0 lpc2000_v2 0 12000 calc_checksum
## from Version SVN189:
flash bank lpc2000 0x0 0x7D000 0 0 0 lpc2000_v2 12000 calc_checksum
# For more information about the configuration files, take a look at:
# http://openfacts.berlios.de/index-en.phtml?title=Open+On-Chip+Debugger
script file openocd_lpc2138_flash.script
#
# The following commands will be executed on
# reset (because of run_and_init in the config-file)
# - wait for target halt
# - erase memory
# - flash content of file main.bin into target-memory
# - shutdown openocd
#
# created by Martin Thomas
# http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects
# based on information from Dominic Rath
#
arm7_9 dcc_downloads enable
wait_halt
sleep 500
poll
flash probe 0
sleep 500
# erase first bank only:
flash erase_sector 0 0 26
sleep 500
# erase all banks:
# flash erase 0 0 26
# if flash erase is not longer available in your OpenOCD-version use
# flash erase_sector
flash write_bank 0 main.bin 0x0
sleep 500
# flash write is deprecated and my not be available in your OpenOCD-version, update to:
# flash write_binary 0 main.bin 0x0
# flash write_binary is deprecated and my not be available in your OpenOCD-version, update to:
# flash write_bank 0 main.bin 0x00
# also check flash write_image which can be uses together with flash auto_erase on
reset run
sleep 10
shutdown
Dit zou in principe ook met de complete yagarto omgeving moeten werken (ik gebruik WinARM omdat daar de newlib bij inzit).
@lexy, dit is een verhelderende samenvatting, toppie 
Goed, ik heb dus de duurste programmer van Olimex gekocht, die ook direct voeding naar je Olimex boardje stuurt.
Blijkbaar levert die te weinig stroom, want als ik hem zelf via een adapter voedt gaat het al een stuk beter.
Ik kan nu ook al in eclipse mijn knipperled projectje compilen. De hex die hij eruit gooit, moet ik echter nog wel via de seriële kabel met Flash Magic erin schieten.
De JTAG programmer kan hij niet benaderen blijkbaar.
Klopt het dat je in Windows bij systeembeheer 2 drivers hebt staan bij usb divices?
Uit mijn hoofd heb ik daar staan: Olimex openOCD driver en een Olimex ARM-OSD-USB driver.
Ik gebruik nu steeds het voorbeeld knipperled projectje dat op de Olimex site staat bij het lpc=p2378 boardje.
Bij dit project zit wel een config file, maar geen script fiel zoals jij hierboven hebt staan.
Moet ik zelf zo'n script file aanmaken in mijn project map?
En hoe weet ik wat er in zo'n script file hoort te staan?
Jep, 2 Olimex drivers:
- Olimex OpenOCD JTAG Interface
- Olimex OpenOCD Serial Driver (dit is de extra serieele poort)
Je moet i.p.v. hex file een binary file aanmaken (Makefile aanpassen).
Ik noem mijn bin files altijd main.bin en gebruik altijd het zelfde setje van 3 files om te proggen, n.l. die ik al gepost heb (een cmd, cfg en script file). Je kan deze gewoon in de root van je project zetten en prog.cmd aanroepen via een command promt ('DOS' window), mits je een goede .bin hebt aangemaakt.
Je kan geloof ik ook vanuit eclipse de OCD gebruiken of via de makefile, maar ik ben het zo gewend.
Je ziet het bijtje en 2 daarnaast external tools.
Je maakt nu een nieuwe configuratie.
configurations:
C:\yagarto\bin\openocd-ftd2xx.exe
working directory:
de map van je project.
arguments:
-f .\prj\jtagkey.cfg
bovenstaand waar je het config hebt.
onder common tab selecteer je Display in favorites menu.
Klaar.
Euhm Harrie, voor welk probleem is dit een oplossing?
Sorry dat ik het vraag hoor, maar is allemaal zo verwarrend geworden 
[Bericht gewijzigd door Henry S. op (64%)]
ik heb helaas nu de desbetreffende pc niet hier, maar ik herinner me dat de Olimex installatie er al voor gezorgd heeft dat openOCD, openOCD tiny en openOCD SAM7 al onder external tools staat. Ik begrijp dat ik daar nog extra dingen voor moet instellen.
Ik heb wel gezien dat hij in het debug venster liet zien dat hij C:\yagarto\bin\openocd-ftd2xx.exe probeerde op te starten.
Wat wel vreemd is dat hij zegt dat hij device Olimex openOCD JTAG B niet kan vinden. Terwijl mijn programmer in de config file Olimex openOCD JTAG A heet.
[Bericht gewijzigd door Henry S. op (11%)]
Wat wel vreemd is dat hij zegt dat hij device Olimex openOCD JTAG B niet kan vinden. Terwijl mijn programmer in de config file Olimex openOCD JTAG A heet.
even de drivers uitschakelen bij apparaatbeheer en vanaf de GCCFD de echte drivers installeren.
computer rechtermuis eigenschappen apparaatbeheer
De hele Olimex installatie staat in de map c:/gccfd map.
Daar heb ik tijdens de installatie van de drivers ook naar verwezen. Om precies te zijn de map "C:\gccfd\Olimex OpenOCD Driver". Dit zijn de drivers met de juiste PID en VID waardes. Moet ik er wel bij vertellen dat ik tijdens de installatie een waarschuwing kreeg met erin dat het kan gebeuren dat de driver niet compatibel met XP zou zijn.
Ik heb toen bij beide drivers gekozen voor de optie "Toch installeren".
Om te testen of de driver idd wel zou werken, heb ik een keer de hele programmer losgekoppeld en nog een keer openOCD laten runnen. Dan geeft hij duidelijk andere foutmeldingen.
Dus het lijkt erop dat de drivers wel ok zijn.
Op 21 oktober 2008 22:06:32 schreef Harrie2:
Heb je geen drivers van ftdi site geinstalleerd?
Je moet zeker weten dat die niet gebruikt worden.
Nee, eerst had ik ze wel van ftdi site, maar daar kloppen de PID en VID waardes niet.
Bij het board heb ik een CD gekregen, waar olimex een complete install op heeft gemaakt.
Na de installatie heb ik dus die c:/gccfd map en heb ik juiste drivers ook in gevonden die wel de correcte PID en VID waardes hebben
Wat me wel opvalt, is dat ik telkens bij een herstart van mijn pc de drivers opnieuw moet installeren.
Overigens krijg ik de volgende foutmelding te zien:
Info: openocd.c:93 main(): Open On-Chip Debugger (2007-09-05 09:00 CEST)
Warning: embeddedice.c:175 embeddedice_build_reg_cache(): EmbeddedICE version 7 detected, EmbeddedICE handling might be broken
Inmiddels heb ik vanmiddag ook nog een keer met crossworks geprobeerd, maar ook dit heeft niets opgeleverd helaas.
Nu weer gewoon verder in Eclipse, waar ik wel al kan compilen. Met Flash Magic moet ik dan zelf de hex file inladen.
Maargoed het blijft frustrerend dat ik JTAG niet aan de praat krijg op het Olimex lpc-p2378 board
Mijn cfg file ziet er nu als volgt uit:
#daemon configuration
telnet_port 4444
gdb_port 3333
#interface
interface ft2232
ft2232_device_desc "Olimex OpenOCD JTAG A"
ft2232_layout "olimex-jtag"
ft2232_vid_pid 0x15BA 0x0003
jtag_speed 30
jtag_nsrst_delay 200
jtag_ntrst_delay 200
#use combined on interfaces or targets that can't set TRST/SRST separately
reset_config trst_and_srst separate
#jtag scan chain
#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
jtag_device 4 0x1 0xf 0xe
#target configuration
daemon_startup reset
#target <type> <startup mode>
#target arm7tdmi <reset mode> <chainpos> <endianness> <variant>
target arm7tdmi little run_and_halt 0 arm7tdmi-s_r4
run_and_halt_time 0 30
target_script 0 reset openocd_flash_lpc2378.script
working_area 0 0x40000000 0x7fff nobackup
#flash configuration
#flash bank lpc2000 0x0 0x40000 0 0 0 lpc2000_v1 14746 calc_checksum
flash bank lpc2000 0x0 0x80000 0 0 0 lpc2000_v2 12000 calc_checksum
#flash bank cfi 0x80000000 0x800000 2 2 0
# For more information about the configuration files, take a look at:
# http://openfacts.berlios.de/index-en.phtml?title=Open+On-Chip+Debugger
Ver heb ik dus in mijn project tree ook nog een script file genaamd openocd_flash_lpc2378.script staan:
#
# The following command wills be executed on
# reset (because of run_and_init in the config-file)
# - wait for target halt
# - erase memory
# - flash content of file main.bin into target-memory
# - shutdown openocd
#
# PRELIMINARY - first test for LPC2378
#
#
# Martin Thomas
# http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects
# based on information from Dominic Rath
#
halt
sleep 20
wait_halt
# ignore my comments - setup works without the following.
# disable PLL and switch to IRC (4 MHz nom.)
# hmm - should not be needed since IRC is default source after Reset...
# any interaction with the ISP startup??
# doesn't work anyway - something missing
# TODO: read manual.
#mww 0xE01FC080 0x00000000 # PLLCON = 0
#mww 0xE01FC08C 0x000000AA # PLLFEED = 0xAA
#mww 0xE01FC08C 0x00000055 # PLLFEED = 0x55
#mww 0xE01FC040 0x00000001 # MEMMAP = 0x01
#sleep 10
arm7_9 dcc_downloads enable
flash probe 0
# erase complete flash:
#flash erase 0 0 26
# just erase the 3 first sectors of bank 0
flash erase_sector 0 0 5
flash write_image 0 main.bin 0x0
sleep 30
reset run
sleep 30
shutdown
Moet flash write_image 0 main.bin 0x0 niet flash write_image 0 main.hex 0x0 zijn trouwens?
Hij geeft nog steeds aan dat hij het device niet kan vinden:
Info: openocd.c:93 main(): Open On-Chip Debugger (2007-09-05 09:00 CEST)
Error: ft2232.c:1341 ft2232_init_ftd2xx(): unable to open ftdi device: 2
Error: ft2232.c:1356 ft2232_init_ftd2xx(): ListDevices: 2
Error: ft2232.c:1358 ft2232_init_ftd2xx(): 0: Olimex OpenOCD JTAG B
Error: ft2232.c:1358 ft2232_init_ftd2xx(): 1: X>
Wat opvallend is dat hij als error de JTAG B aangeeft, terwijl hij in mijn cfg file JTAG A heet.
Als ik dat in de config file verander, veranderd er niet heel erg veel
Ik denk dat je problemen hebt met je drivers. Probeer deze eens opnieuw te installeren door ze eerst te verwijderen via apparaten beheer en daarna opnieuw te installeren.
Zoals ik al eerder zij, moet je een main.bin aanmaken i.p.v. een main.hex file. Dit kun je in de Makefile instellen. Je moet de linker dus vertellen dat hij een binary file moet uitspuggen.
Om het verhaal maar helemaal compleet te maken, dit is mijn makefile:
NAME = demo2378_blink_flash
CC = arm-elf-gcc
LD = arm-elf-ld -v
AR = arm-elf-ar
AS = arm-elf-as
CP = arm-elf-objcopy
OD = arm-elf-objdump
CFLAGS = -I./ -c -fno-common -O0 -g
AFLAGS = -ahls -mapcs-32 -o crt.o
LFLAGS = -Map main.map -Tdemo2378_blink_flash.cmd
CPFLAGS = -O binary
HEXFLAGS = -O ihex
ODFLAGS = -x --syms
all: test
clean:
-rm crt.lst main.lst crt.o target.o main.o main.out main.hex main.map main.dmp main.bin
test: main.out
@ echo "...copying"
$(CP) $(CPFLAGS) main.out main.bin
$(OD) $(ODFLAGS) main.out > main.dmp
@echo "...building hex"
$(CP) $(HEXFLAGS) main.out main.hex
main.out: crt.o target.o fio.o irq.o main.o demo2378_blink_flash.cmd
@ echo "..linking"
$(LD) $(LFLAGS) -o main.out crt.o target.o fio.o irq.o main.o
target.o: target.c
$(CC) $(CFLAGS) target.c
fio.o: fio.c
$(CC) $(CFLAGS) fio.c
irq.o: irq.c
$(CC) $(CFLAGS) irq.c
crt.o: crt.s
@ echo ".assembling"
$(AS) $(AFLAGS) crt.s > crt.lst
Zo te zien spuugt hij zowel een bin als een hex file uit
Ik moet eerlijk zeggen dat ik geen makefile expert ben, maar jouw makefile lijkt mij OK. Hij spugt inderdaad beide formaten uit. In mijn makefile zit een switch ingebouwd (of de ene of de andere).