Forum: Mikrocontroller und Digitale Elektronik AT91SAM7X256 - Inbetriebnahme


von Torsten S. (torsten)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bin dabei ein Board mit einem AT91SAM7X256 (siehe Anhang) in Betrieb 
zu nehmen. Leider bekomme ich weder über USB noch über den seriellen 
(RS232) Debug-Port keine Verbindung mit dem Board.

Laut Atmel soll das ja auch ganz einfach gehen. SAM-BA installieren, 
"Erase"-Jumper stecken, Board anschalten, Board abschalten, 
"Erase"-Jumper entfernen und per USB mit dem PC verbinden.

Anfangs wurde an meinem Arbeitsplatz-PC das Board erkannt (Name wurde 
wie im Treiber hinterlegt angezeigt), der Treiber konnte aber nicht 
installiert werden. Der Rechner ist doch tatsächlich abgestürzt! Und das 
bei Win-XP.

SAM-BA soll laut Atmel alle angeschlossenen Devices erkennen und in 
einer Liste anzeigen. Das funktioniert auch nicht. Nachdem ich eine 
ältere Version von SAM-BA installiert habe und noch ein paar mal 
versucht hatte eine Verbindung herzustellen, wird jetzt am 
Arbeitsplatz-PC nicht mal mehr ein Device am USB erkannt.

Daraufhin habe ich das ganze am Notebook probiert. Dort konnte ich den 
Treiber ebenfalls nicht installieren (auch abgestürzt), das Board wird 
aber jedenfalls noch als Device erkannt. Eine Verbindung ist ebenfalls 
nicht möglich.

Soweit der Stand. Es liegt nah zu vermuten, dass der ARM einfach defekt 
ist, also von mir zerstört wurde (Einbau, Test, usw.).

Meine Frage: Wie schwierig ist die Anbindung eines AT91SAM7X256 über USB 
mit SAM-BA? Sollte das ohne Probleme von PC-Seite funktionieren oder 
gibt es mit dem Treiber/SAM-BA Schwierigkeiten?

Vielen Dank für eure Antworten im Voraus.

Torsten

von gerhard (Gast)


Lesenswert?

hallo thorsten,
wenn dein board von windows erkannt wird dann kann der at91sam7x nicht 
defekt sein da die usb enumeration offensichtlich noch funkt. und dazu 
auf jeden fall ein laufender at91sam7x benötigt wird.

welche sam-ba version hast du verwendet?
ich würde die letzte (v2.0) empfehlen.

hast du einen jtag-ice?
wenn ja welchen?

hast du ein eval board (at91sam7x-ek o.ä.)?
wenn ja wird dieses von windows erkannt?

gruss
gerhard

von Torsten S. (torsten)


Lesenswert?

Hallo Gerhard,

1) USB-Enumeration ist ein guter Punkt.

2.) SAM-BA 2.0 (ebenfalls mit SAM-BA 1.11 und SAM-BA 1.8 getestet)

3.) JTAG-ICE ? -> auf dem Board ist der Anschluss vorgesehen - Adapter 
habe ich dafür aber (noch) nicht

4.) Das mit dem Eval-Board ist ja so mein Problem. Ich habe leider nur 
dieses von mir selbst entwickelte und hergestellte Board. Ich kann die 
Verbindung zum PC nicht anders testen.

Im Datenblatt wird auf das "exakte" einhalten des 18.432MHz Quarzes 
hingewiesen, sonst funktioniert die SAM-BA mit USB nicht. Könnte es da 
Probleme (C's usw.) geben?

Gruß,

Torsten

von gerhard (Gast)


Lesenswert?

hallo thorsten,
betreffend der Quarz-Genauigkeit:
wenn wie schon festgestellt die enumeration funkt dann kann der quarz 
kein problem verursachen.

hast du schon versucht die serielle debug-schnittstelle für sam-ba 
einzusetzen?

gruss
gerhard

von Torsten S. (torsten)


Lesenswert?

Hallo Gerhard,

Das habe ich auch schon probiert. Funktioniert leider auch nicht. Da 
will ich aber noch mal mit dem Oszi schauen, ob am AT91 überhaupt was 
ankommt.

Da fällt mir gerade noch was ein. SAM-BA funktioniert mit TCL-Scripts. 
Ich selbst habe auch TCL extra installiert. Könnte es vielleicht damit 
Probleme geben? (Denke ich aber ehr nicht)

Hast du schon Erfahrungen mit einem AT91SAM7X256? Wenn ja, hat bei dir 
die Verbindung über USB ohne Probleme funktioniert?

Ich bin jedenfalls erst mal mit meinem Latein am Ende. Mir fehlt eben 
die Möglichkeit, die PC-Seite der Kommunikation zu testen.

Gruß,

Torsten

von Pototschnig Thomas (Gast)


Lesenswert?

>Laut Atmel soll das ja auch ganz einfach gehen. SAM-BA installieren,
>"Erase"-Jumper stecken, Board anschalten, Board abschalten,
>"Erase"-Jumper entfernen und per USB mit dem PC verbinden.

Nicht ganz ... nach dem Jumper stecken und dem Board anschalten muss ~20 
Sekunden gewartet werden. Dann Board ausschalten, Jumper entfernen und 
Board wieder anschalten.

Durch den Jumper wird das interne ROM ausgeführt und das ROM ist quasi 
SAM-BA. Der kopiert sich dann selber ins Flash und erst bei einem neuen 
Reset ohne gesetzen Jumper wird dann der SAM-BA im Flash ausgeführt. Das 
dauert aber eine kleine Ewigkeit, da das Ding dann auf einem niedrigen 
(ich glaub 32kHz waren es) Systemtakt läuft.

Mfg
Thomas

von gerhard (Gast)


Lesenswert?

hallo thomas,
der von dir beschriebenen vorgang gilt nur für die at91sa,7s familie.

beim at91sam7x wird durch löschen des flash das gpnvm bit 2 gelöscht und 
damit das rom (mit sam-ba boot) auf adresse 0 gespiegelt.

gruss
gerhard

von Torsten S. (torsten)


Lesenswert?

Hallo Thomas und Gerhard,

nach Thomas seinem Hinweis habe ich das Board mal 2 Minuten mit 
gesetzten "Erase"-Jumper laufen lassen. Danach wurde mir als mögliche 
Connection "\usb\ARM0" angezeigt (ein Lichtblick). Daraufhin habe ich 
noch das Board ausgewählt (AT91SAM7X256-EK) und auf "Connect" geklickt 
-> "no valid ID" (oder so ähnlich) wurde angezeigt. Im Manual zu SAM-BA 
steht, dass man nach dem Wechseln des Prozessortyps das Target wieder 
neu starten soll. Gesagt, getan. Jetzt wird keine Verbindung in SAM-BA 
mehr angezeigt. Aber der USB-Treiber meldete sich wieder mit der 
Board-Bezeichnung "atm6124.Sys ATMEL AT91xxxxx Test Board". Das steht 
auch so im Treiber (atm6124.Inf). Die Aufforderung zur 
Treiberinstallation kam, ich habe diese bestätigt und wieder mal 5 
Minuten gewartet, bis Windows neu gestartet wurde. <Mist>

Im Moment bin ich der Meinung, dass an meinem PC/Notebook/Windows etwas 
nicht richtig funktioniert oder der Treiber einfach einen Bug hat.

Wenn ich den "Erase"-Jumper gesetzt habe, das Board eine gewisse Zeit 
laufen lassen, Board wieder abgeschalten und den "Erase"-Jumper entfernt 
habe: Wird SAM-BA dann bei jedem Power-ON des Prozessors gestartet, oder 
muss man diese Prozedur jedes mal wieder machen?

Vielen Dank für Eure Hilfe.

Gruß,

Torsten

von gerhard (Gast)


Lesenswert?

hallo thorsten,
hier ein auszug aus der at91.com seite zum thema sam-ba und at91sam7x:

There is no specific hardware setting to boot-up from the ROMed 
application. The only need is to clear the GPNVM2. The ERASE pin or a 
software erase can be used for this.

BOOT UP THE BOARD WITH SAM-BA Boot:
1) On AT91SAM7X-EK Board, put the jumper called "ERASE" (J8),
2) Power up the board,
3) Shutdown the board and remove the "ERASE" jumper (J8),
4) Power up again, now the board is booting up from the internal ROM and 
has launched SAM-BA Boot Recovery,

gruss
gerhard

von Torsten S. (torsten)


Lesenswert?

Hallo Gerhard,

diesen Teil zu SAM-BA habe ich mindestens schon 10mal gelesen. Trotzdem 
vielen Dank.

Jetzt liegt natürlich die Vermutung nahe, dass mein Board mal 
funktioniert und mal nicht und das oben beschriebene ein Zufallstreffer 
war.

Hast du eventuell ein paar Hinweise für mich, woran so ein Verhalten 
liegen könnte.

Gruß,

Torsten

von gerhard (Gast)


Lesenswert?

hallo thorsten,
ich würde dir empfehlen sam-ba über die serielle schnittstelle zu 
betreiben und PC-seitig auf der seriellen einen "sniffer" zu 
installieren um feststellen zu können, ob ein datenverkehr vorliegt oder 
nicht.

gruss
gerhard

von Dirk D. (dirkd)


Lesenswert?

Hallo,

vielleicht solltest Du Dir doch einen JTAG-Adapter bauen/besorgen.

Für die Inbetriebnahme eines selbst erstellten Boards ist das sicherlich 
die bessere Lösung als SAM-BA.


Viele Grüße

   Dirk

von gerhard (Gast)


Lesenswert?

hallo thorsten
der empfehlung von dirk kann ich mich nur anschleßen.
ohne debug-möglichkeit wirst du über kurz oder lang scheitern.
wenn es günstig sein soll dann empfehle ich dir den olimex arm-usb-ocd 
in verbindung mit gcc und openocd.
eine gutes tutorial und alle notwendigen tools findest du unter:
www.yagarto.de


gruss
gerhard

von Torsten S. (torsten)


Lesenswert?

Hallo,

erstmal vielen Dank für eure Antworten.

Nachdem ich die C's am USB-Port von 22pF auf 10pF geändert habe, bekomme 
ich ab und an eine Verbindung mit dem AT91 über USB. Es funktioniert 
also erstmal, nur eben nicht sicher.

Ich werde in den nächsten Tagen den Quarz usw. überprüfen, ob es dort 
eventuell Schwierigkeiten gibt.

Bericht folgt.

Gruß,

Torsten

von Dirk (Gast)


Lesenswert?

Hallo Torsten,

ich kann dir noch folgendes empfehlen.

Besorge dir einen ULINK JTAG Adapter von Keil,
den gibt es auch kostengüstiger von ST Micro.

Dann lade dir die Evaluation Version von Keil Arm Mdk 3.03a
herunter.

Mit dieser Kombination hast du direkten Zugriff auf den Prozessor
ohne Umwege über USB etc. In dem Paket sind auch fertige getestete
Applikationen im Quelltext die normalerweise sofort funktionieren
und Du hast Zugriff auf alle Prozessor-Register mit Darstellung
aller Betriebsarten.

Gruß
Dirk


von Torsten S. (torsten)


Lesenswert?

Hallo,

ich bekomme jetzt, zumindest so halbwegs, eine stabile Verbindung über 
USB zu meinem Board.

Der Stand der Dinge:

- am Desktop bekomme ich keine Verbindung über USB zu dem Board
- am Notebook bekomme ich an 2 der 3 USB-Ports eine Verbindung über 
SAM-BA v2.0 bzw. SAM-PROG v2.3 (Up- und Download funktioniert)
- der Bootloader wird durch setzen des "ERASE"-Pins auf VCC zum Starten 
"vorbereitet" (Jumper stecken, Board anschalten, Board abschalten, 
Jumper entfernen, Board anschalten, Bootloader startet und meldet sich 
als Device am PC an)

Das Problem an meinem Board lag/liegt an der zum Teil fehlerhaften 
Platzierung der C's für VDDIN und VDDOUT, also für 3.3V und 1.8V. Diese 
sind teilweise zu weit von den entsprechenden Pins entfernt. Diese !!! 
MÜSSEN !!! so dicht wie möglich an den entsprechenden Pins liegen. 
Ebenfalls sollte der Quarz (incl. C's) sowie das PLLRC-Netzwerk so dicht 
wie möglich an den µP gelegt werden. Das ist extrem wichtig!

Vielen Dank nochmal für eure Hilfe. Es hat sehr geholfen den/die Fehler 
einzugrenzen.

Gruß,

Torsten

von Feadi (Gast)


Lesenswert?

Hallo Torsten,

ich habe einen AT91SAM7 S64, und die Verbindung über USB ist stabil. An 
PLLRC habe ich 1k5+22n und 2n2 angeschlossen, an den Quarz habe ich 
keine Kondensatoren angeschlossen.

Welche Werte hast Du an dem PLLRC-Pin angeschlossen?

Gruß, Feadi

von Torsten S. (torsten)


Lesenswert?

Hallo Feadi,

an PLLRC habe ich ( 1k5 + 10nF ) || 1nF gegen Masse (vgl. Schaltplan 
oben).

Hast du das Board selbst entwickelt? Warum hast du an deinem Quarz keine 
C's? Hast du eventuell einen Qszillator?

Gruß,

Torsten

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.