Forum: Mikrocontroller und Digitale Elektronik Openocd(Wiggler) mit AT91RM9200 Board


von Zero_One_Lady (Gast)


Lesenswert?

Hallo Leute,

ich habe folgendes problem. Ich arbeite mit AT91RM9200 Board unter 
Linux. Ich möchte nur mein Board testen ohne Bootloader und ohne Linux 
Kernel. Ich habe schon eine arm-gcc Umgebung installiert und beim Suchen 
nach JTAG Wiggler(von Olimex)Software habe ich Openocd gefunden. Mit der 
unten angegebenen Konfiguration
./ configure --enable-parport --enable-parport_ppdev habe ich Openocd 
installiert.

config-file für AT91RM9200 Board:
#daemon configuration
 telnet_port 4444
 gdb_port 3333

#interface
 interface parport
 parport_port 0x378
 parport_cable wiggler
 jtag_speed 0

# reset_config <signals> [combination] [trst_type] [srst_type]
#reset_config trst_and_srst


#jtag scan chain
 jtag_device 4 0x1 0xf 0xe
 jtag_nsrst_delay 333
 jtag_ntrst_delay 333


 #target configuration, what to do on a target reset
 target arm920t little run_and_halt 0 arm920t_r4
 run_and_halt_time 0 30
 daemon_startup reset

# target_script 0 reset openocd.script
# working_area 0 0x40000000 0x4000 nobackup

#flash bank cfi 0x10000000 0x01000000 2 2 0

Mit dem Befehl openocd -d AT91.cfg starte ich Openocd. Danach bekomme 
ich folgende Fehlermeldung angezeigt:

Info:    openocd.c:82 main(): Open On-Chip Debugger (2006-08-01 12:00 
CEST)
Error:   parport.c:333 parport_init(): cannot open device. check it 
exists and that user read and write rights are set

Ich bin aber als root angemeldet. Die Schreib- und Leserechte sind auch 
eingestellt. Aber ich habe festgestellt, dass ich statt "parport" "lp0" 
habe. kann jemand mir bitte bitte  helfen???????????

Wenn ich statt "interface parport" "interface parport0"eingebe, wird 
folgende Fehlermeldung angezeigt:

Info:    openocd.c:82 main(): Open On-Chip Debugger (2006-08-01 12:00 
CEST)
Info:    configuration.c:50 configuration_output_handler(): Command 
parport_port not found
Info:    configuration.c:50 configuration_output_handler(): Command 
parport_cable not found
Error:   jtag.c:1223 jtag_init(): No valid jtag interface found 
(parport0)
Error:   jtag.c:1224 jtag_init(): compiled-in jtag interfaces:
Error:   jtag.c:1227 jtag_init(): 0: parport
Error:   jtag.c:1227 jtag_init(): 1: amt_jtagaccel

Bin eine Frau brauche eure Hilfe ;-)


von Dominic R. (dominic)


Lesenswert?

Hi,

wenn du den OpenOCD via ppdev verwenden willst, solltest du auch das 
ppdev Modul laden, dann sollte es auch /dev/parport0 geben. Generell 
sollte man das lp Modul (das ist nur für Parport-Drucker zuständig) 
rauswerfen, da es sonst zu Problemen kommen kann.

Im .cfg File ist dann auch "parport_port N" die Richtige Auswahl, also 
der N-te Parport (/dev/parportN).

> Info:    openocd.c:82 main(): Open On-Chip Debugger (2006-08-01 12:00
> CEST)

Ich bin zwar notorisch nachlässig, wenn es um's Updaten der 
Versions-Strings geht, allerdings bin ich mir sicher, dass aktuelle 
Sourcen einen 2007-er String tragen. Bitte immer die aktuelle Version 
aus dem SVN Repository verwenden. Wie man einen Checkout macht steht auf 
der OpenOCD Webseite.

Gruss,

Dominic

von Guest (Gast)


Lesenswert?

> Bin eine Frau brauche eure Hilfe ;-)

Das sagen auch Typen, weil sie sonst nur wieder dumm angelabert werden 
hier ;-)

von Bahar .. (zero_one_lady)


Lesenswert?

Hallo Dominic,

danke dir! Mal gucken ob dass so funktioniert!

von Bahar .. (zero_one_lady)


Lesenswert?

Hallo Gast,
> Das sagen auch Typen, weil sie sonst nur wieder dumm angelabert werden
> hier ;-)

Warst du auch schonmal eine Frau :-). Hast anscheinend Erfahrungen.

Aber ich weis am besten, was ich bin - eine Frau - und das bleibt auch 
so!

von Bahar .. (zero_one_lady)


Lesenswert?

Hallo Dominic,

ich muss dich leider weiter nerven. Ich muss in letzter Zeit nur Fehler 
suchen.
akt. Konfigurationsfile:
---------------------------------------------------------------------
#daemon configuration
telnet_port 4444
gdb_port 3333

#interface
interface parport
parport_port /dev/parport0
parport_cable wiggler
jtag_speed 12
#use combined on interfaces or targets that can't set TRST/SRST 
separately
#reset_config none
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
#jtag_device 8 0x1 0x1 0xfe
#jtag_device 4 0x1 0xf 0xe
#jtag_device 5 0x1 0x1 0x1e

#target configuration
daemon_startup reset
#target <type> <endianess> <reset mode>
target arm9tdmi little reset_halt 0 arm920t
working_area 0 0x200000 0x4000 backup
run_and_halt_time 0 5000

#flash configuration
#flash bank <driver> <base> <size> <chip_width> <bus_width> 
[driver_options ...]
#flash bank cfi 0x10000000 0x800000 2 2 0
------------------------------------------------------------------------ 
--


Die aktuellste Fehlermeldung lautet:

------------------------------------------------------------------------ 
-

/usr/openocd/src # openocd -f arm9.cfg -d
Info:    openocd.c:86 main(): Open On-Chip Debugger (2007-03-30 12:00 
CEST)
Debug:   jtag.c:1335 jtag_init(): -
Debug:   parport.c:329 parport_init(): opening /dev/parport0...
Debug:   parport.c:341 parport_init(): ...open
Debug:   parport.c:213 parport_reset(): trst: 0, srst: 0
Debug:   jtag.c:278 jtag_call_event_callbacks(): jtag event: TRST 
asserted
Debug:   jtag.c:1126 jtag_reset_callback(): -
Debug:   bitbang.c:223 bitbang_execute_queue(): statemove end in 0
Debug:   jtag.c:278 jtag_call_event_callbacks(): jtag event: TRST 
asserted
Debug:   jtag.c:1126 jtag_reset_callback(): -
Debug:   bitbang.c:237 bitbang_execute_queue(): scan end in 0
Debug:   jtag.c:996 jtag_build_buffer(): fields[0].out_value: 
0x00000001000000ff
Debug:   jtag.c:1027 jtag_read_buffer(): fields[0].in_value: 
0x00000000000001fc
Debug:   jtag.c:1220 jtag_examine_chain(): JTAG device found: 0x0000007f 
(Manufacturer: 0x03f, Part: 0x0000, Version: 0x0
Debug:   jtag.c:1220 jtag_examine_chain(): JTAG device found: 0xd9f98841 
(Manufacturer: 0x420, Part: 0x9f98, Version: 0xd
Debug:   jtag.c:1220 jtag_examine_chain(): JTAG device found: 0x0000000f 
(Manufacturer: 0x007, Part: 0x0000, Version: 0x0
Debug:   jtag.c:1220 jtag_examine_chain(): JTAG device found: 0x0bf030df 
(Manufacturer: 0x06f, Part: 0xbf03, Version: 0x0
Debug:   jtag.c:1220 jtag_examine_chain(): JTAG device found: 0x0000172d 
(Manufacturer: 0x396, Part: 0x0001, Version: 0x0
Debug:   jtag.c:1220 jtag_examine_chain(): JTAG device found: 0x4000050b 
(Manufacturer: 0x285, Part: 0x0000, Version: 0x4
Debug:   jtag.c:1220 jtag_examine_chain(): JTAG device found: 0x01bf307f 
(Manufacturer: 0x03f, Part: 0x1bf3, Version: 0x0
Debug:   jtag.c:1220 jtag_examine_chain(): JTAG device found: 0x20df9901 
(Manufacturer: 0x480, Part: 0x0df9, Version: 0x2
Debug:   jtag.c:1220 jtag_examine_chain(): JTAG device found: 0x200001b1 
(Manufacturer: 0x0d8, Part: 0x0000, Version: 0x2
Debug:   jtag.c:1220 jtag_examine_chain(): JTAG device found: 0xc00fc041 
(Manufacturer: 0x020, Part: 0x00fc, Version: 0xc
Debug:   jtag.c:1220 jtag_examine_chain(): JTAG device found: 0x100df2cf 
(Manufacturer: 0x167, Part: 0x00df, Version: 0x1
Debug:   jtag.c:1220 jtag_examine_chain(): JTAG device found: 0xb120df99 
(Manufacturer: 0x7cc, Part: 0x120d, Version: 0xb
Debug:   jtag.c:1220 jtag_examine_chain(): JTAG device found: 0xb1200001 
(Manufacturer: 0x000, Part: 0x1200, Version: 0xb
Debug:   jtag.c:1220 jtag_examine_chain(): JTAG device found: 0x00001001 
(Manufacturer: 0x000, Part: 0x0001, Version: 0x0
Error:   jtag.c:1230 jtag_examine_chain(): number of discovered devices 
in JTAG chain (175) doesn't match configuration (1)

---------------------------------------------------------------------

Mein JTAG ist von Olimex(http://www.olimex.com/dev/pdf/arm-jtag.pdf). 
Ich weis nicht ob es daran liegt. Hast du vielleicht ne Ahnung, woran es 
liegen könnte?

mfg


von Dominic R. (dominic)


Lesenswert?

Hallo,

zumindest der Parallel Port wurde jetzt ordnungsgemäß geöffnet, 
allerdings gibt es ein Problem bei der JTAG Kommunikation.

Der Olimex ARM-JTAG Adapter sollte eigentlich ausreichen, zumindest 
funktioniert er hier einwandfrei. Problematischer sind die Parallelports 
der PCs, bei Laptops ist es noch deutlich schlimmer. Eventuell schafft 
ein kürzeres Parallelport Kabel abhilfe.

Um welches Target Board handelt es sich denn?

Gruss,

Dominic

von Bahar .. (zero_one_lady)


Lesenswert?

Hallo  Dominic,

ich hab das Kabel kürzer gemacht. Jetzt läuft das Programm 
ununterbrochen. Ist das normal?
------------------------------------------------------------------------
Debug:   embeddedice.c:209 embeddedice_read_reg_w_check(): 1
Debug:   bitbang.c:198 bitbang_execute_queue(): end_state: 8
Debug:   bitbang.c:237 bitbang_execute_queue(): scan end in -1
Debug:   jtag.c:996 jtag_build_buffer(): fields[0].out_value: 0x00000000
Debug:   jtag.c:996 jtag_build_buffer(): fields[1].out_value: 0x01
Debug:   jtag.c:996 jtag_build_buffer(): fields[2].out_value: 0x00
Debug:   bitbang.c:237 bitbang_execute_queue(): scan end in -1
Debug:   jtag.c:996 jtag_build_buffer(): fields[0].out_value: 0x00000000
Debug:   jtag.c:996 jtag_build_buffer(): fields[1].out_value: 0x04
Debug:   jtag.c:996 jtag_build_buffer(): fields[2].out_value: 0x00
Debug:   jtag.c:1027 jtag_read_buffer(): fields[0].in_value: 0x00000000
Debug:   embeddedice.c:209 embeddedice_read_reg_w_check(): 1
------------------------------------------------------------------------ 
-

Das Target Board ist von mir.

bist echt schnell. Dankeschön.

mfg!

von Dominic R. (dominic)


Lesenswert?

Hey,

der OpenOCD ist generell als Daemon konzipiert, d.h. er läuft (im 
Hintergrund), bis ein Client eine Verbindung aufbaut.

Aktuell unterstützt der OpenOCD Verbindungen via Telnet (default port 
4444) und GDB (default port 3333).

Versuch doch einfach mal eine Verbindung via Telnet zu Port 4444, sobald 
der OpenOCD wie von dir beschrieben läuft.

Gruss,

Dominic

von Gast (Gast)


Lesenswert?

<offtopic>

> Hallo Gast,
>> Das sagen auch Typen, weil sie sonst nur wieder dumm angelabert werden
>> hier ;-)

> Warst du auch schonmal eine Frau :-). Hast anscheinend Erfahrungen.

Zwar lange Haare, aber keine Frau :-)

> Aber ich weis am besten, was ich bin - eine Frau - und das bleibt auch
> so!

Okay - das überzeugt mich halbwegs. Aber noch eine Frage - sind deine 
Socken Rosa oder Blau? :-)

Btw: Bahar ist ein netter Name - vor Popstar'07 kannte ich den noch 
nicht - aber die kleine süße Bahar schwärm

</offtopic>

<ontopic>
Sorry - da kann ich dir nicht weiterhelfen :-)
</ontopic>

von Bahar .. (zero_one_lady)


Lesenswert?

Hallo Dominic,

hab gestern auch festgestellt und es klappt jetzt mit (gdb)target remote 
localhost:3333
Ich kann jetzt mit gdb arbeiten. Jetzt muss ich mich mit Openocd Befehle 
beschäftigen und versuch sie zu verstehen. Wenn ich monitor flash probe 
0 eingeben, wird folgende Fehlermeldung ausgegeben:

"probing failed for flash bank '#0' at 0x10000000"

ich hab SPI Flash(AT45CS1282) an Pin NC0.

in configfile habe ich stehen:

#flash bank <driver> <base> <size> <chip_width> <bus_width> 
[driver_options ...]
flash bank cfi 0x10000000 0x800000 2 2 0

Ich habe mir alles anders vorgestellt. Durch Fehlermeldungen werde ich 
noch schneller alt.

Weist du woran es liegen könnte?

Bin dir echt dankbar!

mfg

von Bahar .. (zero_one_lady)


Lesenswert?

> Okay - das überzeugt mich halbwegs. Aber noch eine Frage - sind deine
> Socken Rosa oder Blau? :-)

Diese Frage kannst und darfst hier gar nicht stellen. Das hat nix mit 
µControllern zutun. Aber du hast mich auf eine Idee gebracht. Kennt 
jemand ein µici, wo man die Sockenfarbe ständig ändern kann wie eine 
Lichtquelle?
Menschen, die ein Leben lang gleiche Socken tragen!!! ne ne das war 
keine gute Idee...

> Btw: Bahar ist ein netter Name - vor Popstar'07 kannte ich den noch
> nicht - aber die kleine süße Bahar *schwärm*

ich muss mich sofort aber sofort umbennen Bruder Gast. Das ist mir gar 
nicht aufgefallen, dass sie auch so heisst.

> Sorry - da kann ich dir nicht weiterhelfen :-)

Genau das wollte ich hören bzw. sehen und lesen.

mfg

von Dominic R. (dominic)


Lesenswert?

Hey,

der OpenOCD unterstütz aktuell noch keine seriellen Flashes (Atmel 
Dataflash etc.). Die aktuelle SVN Revision unterstützt:

- LPC2000 internes Flash
- AT91SAM7 internes Flash
- STR7x internes Flash
- STR9x internes Flash
- externe CFI kompatible Flashes nach Intel Standard
- extern CFI kompatible Flashes nach Spansion/AMD Standard (brandneu, 
und noch nicht auf allzu vielen Devices getestet)
- externe NAND Flashes an einem LPC3180 NAND Controller (lässt sich 
einfach auf andere NAND Controller erweitern)

Gruss,

Dominic

von Bahar .. (zero_one_lady)


Lesenswert?

Hallo Dominic,

dann kann mir Openocd auch nicht weiter helfen. Kennst du vielleicht was 
ähnlichens wie Openocd aber mit spi flash unterstützung?

Vielleicht mach ich doch mit Uboot, wenn ich keine andere Lösung finde. 
Das leben ist unter linux nicht teuer aber schwer.

Ich danke dir Dominic!

von Dominic R. (dominic)


Lesenswert?

Hi,

was du suchst ist ja nicht nur SPI Flash Unterstützung, sondern auch 
noch Unterstützung für den SPI Controller des AT91RM9200 - ein Debugger 
müsste dazu Treiber für viele unterschiedliche Controller mitbringen. 
Ich denke nicht, dass es soetwas gibt. Ich denke man würde in dem Fall 
per Debugger einen Loader (z.B. gleich u-boot) in's RAM laden, und 
diesen das SPI Flash schreiben lassen. Ich wüsste übrigens im Moment 
auch keinen Windows Debugger, der mit SPI Flashes an einem AT91RM9200 
umgehen kann.

Gruss,

Dominic

von gerhard (Gast)


Lesenswert?

hallo,
der einzige debugger der das programmieren von seriellen flashes 
unterstützt ist der/das  peedi (http://www.ronetix.at/peedi.html).
allerdings konnte ich dein AT45CS1282 auf der liste der unterstützten 
flashes nicht finden.
desweiteren ist der/das peedi nicht ganz billig.

gruss
gerhard

von Bahar .. (zero_one_lady)


Lesenswert?

Hallo,

danke dir Dominic für deine Hilfe. Gerhard ich arbeite unter Linux. Der 
Debugger soll möglichst billig sein, besser Open Source. Hat jemand 
schon mit u-boot und AT91RM9200 gearbeitet? Und einen Uploader braucht 
man auch??

mfg

von Dominic R. (dominic)


Lesenswert?

Hallo,

ich hatte U-Boot für ein CSB337 (ein AT91RM9200 basiertes Board von 
Cogent Computers) angepasst, allerdings habe ich das Board nicht mehr, 
und da der AT91RM9200 Support in U-Boot zu der Zeit gerade in einer 
Umbruchphase war hatte ich den Patch auch nie Upstream gebracht.

Unterstützung für den AT91RM9200 selbst ist in U-Boot bereits enthalten, 
die Anpassungen beschränken sich also im Grunde auf den 
board-spezifischen Code, etwa Clock Setup, SDRAM und Flash 
Konfiguration.

Wenn dein Board via SPI Flash booten soll wirst du aber auf Probleme mit 
der aktuellen U-Boot Version stossen, da der U-Boot Maintainer und die 
Atmel Entwickler andere Ansichten darüber haben, wie mit solchen "Flash" 
Varianten umgegangen werden soll. In U-Boot werden diese Speicherchips 
als "Storage" bezeichnet, und nicht als "Memory", da Memory nach Ansicht 
der U-Boot Entwickler etwas ist, das am Prozessorbus hängt, und von 
diesem wie ganz normaler Speicher zumindest gelesen werden kann (also 
z.B. SRAM, SDRAM oder paralleles NOR Flash).

Wenn du es "richtig" machen willst solltest du die relaventen Threads 
der letzten Wochen und Monate auf der U-Boot Mailingliste durchgehen, 
und evtl. dort nachfragen, was der aktuelle Stand der Dinge ist. Für 
Systeme, die via NAND Flash Booten gibt es nand_spl, für SPI sollte wohl 
etwas ähnliches entwickelt werden.

Wenn du nur willst, dass es funktioniert, solltest du auf AT91.com 
nachsehen. Wenn ich mich recht erinnere gibt es dort AT91 spezifische 
Anpassungen, die in dieser Form wohl nicht Upstream gehen werden.

Gruss,

Dominic

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.