Forum: Mikrocontroller und Digitale Elektronik AT91SAM7S256 USB Verbindung klappt nicht!


von Julian Straub (Gast)


Lesenswert?

Hi all!

Ich habe das Beispiel "usb-device-cdc-serial-project-1.1-at91sam7s-ek" 
von Atmel verwendet um eben einen virtuellen Comport am Pc zu bekommen 
über den ich dann Daten austauschen will. Ich habe das Programm kein 
bisschen verändert!
Ich benutze Yagarto in Verbindung mit Eclipse zum Entwickeln und 
downloaden der .bin Files über OpenOCD und einen JTAG Adapter.
Ich habe auch einen AT91SAM7S256. (die Header-Boardversion von Olimex)
So viel zur Umgebungsbeschreibung ;)

Nun zu meinem Problem:
Mein Problem ist, dass ich Alles wunderbar compilieren und dann auch auf 
den ARM7 flashen kann, aber der sich trotzdem nicht korrekt bei meinem 
Windows anmeldet!!
Ich bekomme immer nur "USB-Gerät wurde nicht erkannt" er frägt gar NICHT 
nach irgendwelchen Treibern.
Ich habe auch schon versucht einfach die von Atmel compilierte .bin 
Datei zu verwenden: mit dem selben Ergebnis.
Das deprimierende ist, dass er mir das auch sagt wenn ich nur ein 
einfaches LED-blink Programm draufspiele... Das bedeutet aber auch das 
das Flaschen an sich funktioniert.

Ich habe verschiedene Ansätze was das Problem sein könnte und würde mich 
freuen, wenn jemand was dazu sagen könnte:

- das Headerboard enthält keine Beschaltung für einen Externen Pull-Up 
wie die sonstigen Developmentboards (von atmel aber auch von Olimex)
es ist nur ein einfacher 1,5k Pullup Widerstand installiert. kann das zu 
Problemen führen?

- Die Treiber fehlen meinem Windows irgendwie und deshalb wird der 
Controller nicht erkannt. (kannn fast nicht sein, weil ich extra 
nachgesehn habe, das ich die usbser.sys habe)

- ich verwende zum flashen nicht Sam-Ba sondern den USB-Tiny-Jtag 
Adpater von Olimex. Kann dann der Bootloader Sam-Ba dazwischen 
funken(wenn der noch irgendwie im Flasch des Controllers sitzt)?

- Ich meine über Led AN/AUS herausgefunden zu haben, das der Controller 
sich irgendwie aufhängt wenn er in die "USBD_Init()" reingeht.

Wie gesagt ich habe an dem Quellcode nichts verändert!
Wenn jemand eine Idee zu meinem Problem hat wäre ich ihm Dankbar für 
Tipps!!!


Vielen Dank und viele Grüße
Julian Straub

von Holger M. (nezaya)


Lesenswert?

Hallo

Bist du dir sicher, dass das das Programm definitiv auf dem Controller 
läuft, also du es erfolgreich ins Flash geschrieben hast? Sieht nämlich 
so aus, als währe das nicht der Fall.

Funktioniert die USB-Verbindung zum SAM-BA Bootloader, wenn du diesen 
lädst? Wenn das geht sollte zumindest die Hardware i.O. sein.

Wie schreibtst du denn die Software in den Flash. Mit dem JTAG und 
Openocd? Evt. wird die nämlich garnicht geladen, weil SAM-BA den 
Speicher mittels Lockbits spert. Wenn du z.b. Openocd zum Programmieren 
benutzt, wie sieht denn dessen Ausgabe aus? Selbst wenn am Schluss eine 
Erfolgsmeldung kommt können die Lockbits ein Programmieren verhindert 
haben.

Am Board sollte es nicht liegen. Das mit der Pullupcontroll ist so zwar 
nicht ganz datenblattkonform aber es funktioniert problemlos.

Häng mal das Bin-file an. Dann kann ich das evt. mal auf meinem Board 
testen.

Gruß Holger

von Julian Straub (Gast)


Angehängte Dateien:

Lesenswert?

Hi!
Danke für die schnelle Antwort Holger!

Ich bin mir ziemlich sicher das das Programm drauf ist. Ich programmiere 
per OpenOCD und habeauch erst die warnung bekommen, dass die Lockbits 
gesetzt seien. Die habe ich dann gelöscht und ab da könnte ich wunderbar 
flashen. Wie gesagt hat es auch funktioniert ein einfaches blink 
Programm draufzuspielen.

Aber der Tipp mit dem Sam-Ba ist interessant. Ich bekomme nämlich keine 
Verbindung zu Sam-Ba über USB (Seriell kann ich nicht testen, da ich 
keinen RS232 Anschluss an meinem Laptop habe und das Header board 
sowieso keinen Treiber drauf hat für die Pegelwandlung)

Ich habe nach der folgenden Anleitung versucht Samba auf dem Controller 
zu installieren:

When the TST pin is set during power-up and PGMEN0, PGMEN1 and PGMEN2
are set, the device is entering is a specific test mode and performs a
SAM-BA™ Boot System Recovery which consists in copying the SAM Boot
Assistant (SAM-BA™) in the first two sectors of the on-chip Flash
memory. The system recovery procedure takes 10s.

Dann hab ich 10 Sekunden gewartet und saft weg und wieder hin aber kein 
Samba hat sich angemeldet und mit dem Sambatool am Pc konnt ich mich 
auch nicht verbinden. Der zeigt mir nur Com-Ports und die funktionieren 
alle nicht(sind von Bluetooth Geräten).

Was hat das zu bedeuten? Hardware kaput? Ich habe das Ding ganz neu aus 
dem Shop hier also wenn dann ist das defekt gekommen. Ich werd gleich 
mal an den Shopbetreiber schreiben.

Also stört es gar nciht wenn da nur ein Pullup dran ist und mehr nicht?

Ich habe dir mal eine bin Datei angehängt. Ist von einem At91SAM7S256. 
Ist einfach nur die .bin Datei aus dem Beispiel von Atmel. Sollte also 
einfach funktionieren. Das Board müsste sich einfach anmelden und nur 
zeigen dass es ein USB Gerät ist. (das simpelste was es gibt)

Vielen Dank schon mal für deine Antwort
Julian Straub

von Julian Straub (Gast)


Angehängte Dateien:

Lesenswert?

Okay alles zurück!!
Ich habe es gerade aus lauter Verzweiflung noch einige mahle versucht 
und dann hat es doch noch geklapt Sam-Ba zu installieren und mit ihm 
auch das vorher erwähnte Programm zu installieren (sogar das zum 
simulieren einer Seriellen Schnittstelle).

Also zusammengefasst:

- Die Hardware ist nicht kaput
- Sam-Ba funktioniert
- Ich konnte mit Hilfe von Sam-ba einen Seriellen Port simulieren.

Daraufhin habe ich dann gedacht okay dann versuchst dus nochmal über 
JTAG und OpenOCD. Allerdings hatte ich da dann wieder keinen Erfolg.
Wieder zusammgefasst:

- Ich kann über OpenOCD die Lockbits löschen und dann das Flash 
programmieren
- Dies habe ich durch ein kleines LED-Blinken Programm verifiziert
- Was ich weiterhin nicht kann ist das selbe Programm, dass ich vorher 
mit Samba einwandfrei installiert hatte mit Openocd über JTAg zum laufen 
bringen.

Meine Vermutungen gehen in die Richtung, dass ich die Flash datei 
irgendwo falsch im Flash abspeichere?
Ist es möglich das das Sam-Ba besser macht?

Könnte es sein, dass das Problem im Makefile liegt?

Ein irgnedwie signifikanter Unterschied zwischen dem (funktionierendenn) 
LED Blick-Programm und dem USB Seriell- Programm ist:
Im LED Projekt gibt es ein Linkerscript in dem irgendwie die 
Speicherbereiche festgelegt werden im USB Projekt nicht?! (kann das im 
Makefile auch gemacht werden?)

Mit Makefiles kenn ich mich leider zu wenig aus... Ich habe das Makefile 
einmal angehängt, vielleicht kann ja jemand was dazu sagen?

Viele Grüße
Julian Straub

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.