AT91sam7x: usb verwenden

Gast #469231
Lesenswert?

einen schönen freitag morgen,

ich möchte die usb schnittstelle des at91sam7x als verbindung zu meinem 
pc verwenden. fullspeed wäre mein ziel, ein virtueller com port tuts 
aber auch (muss aber usb sein). leider tue ich mich sehr schwer damit 
auch nur einen einstieg zu finden. die dokumentationen (usb in a 
nutshell, atmel doku, div. foren & pages) hab ich durch, weis aber immer 
noch nicht wie ich die usb/ udp register zu beschreiben habe.

auch habe ich versuch mich in das usb framework von atmel ein zulesen 
aber auch hiermit komme ich nicht klar.

gibt es einen beispiel code oder ein usb programm das die grundlegenden 
eigenschaften hat & funktioniert?

danke
Gast #469351
Lesenswert?

hallo constantin,
dann würde ich vorschlagen du siehst dir mal das beispeil-projekt von 
www.freertos.org an:

FreeRTOS\Demo\lwIP_Demo_Rowley_ARM7

Dieses examples setzt gcc voraus (wird meines wissens auch bei keil 
verwendet).
bei diesem example ist im gegensatz zum atmel code die usb-schnittstelle 
interrupt basierend.
desweiteren hast du gleich ein einfaches betriebssystem zur verfügung.

gruss
gerhard
Gast #469398
Lesenswert?

hi gerhard,

da fehlen mir drei header files:
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"

die find ich grad in dem zipfile (FreeRTOSV4.1.3.exe) nicht.
Gast #471606
Lesenswert?

also mit dem beispiel von iar mach ich nicht weiter; ist mir zu 
undurchsichtig. habe auf der atmel seite nach langem suchen nach dem 
passenden endlich etwas vielversprechendes gefunden...
http://www.atmel.com/dyn/products/product_card.asp?family_id=605&family_name=AT91SAM+Smart+ARM%2Dbased+Microcontrollers&part_id=3940
 ist der link zur usb programmierung des SAM7SE. Das beispiel muss 
natürlich noch auf meinen sam7X abgeändert werden aber das compaliert 
(nach der änderung) schon fehlerfrei im  KEIL. muss jetzt nur noch den 
richtigen treiber für meinen pc finden... hoffe ich =)
Gast #472067
Lesenswert?

hab das programm soweit auf keil fehlerfrei laufen, mein pc erkennt aber 
leider nicht das "neue" usb device. laut programm sollte es als 
virtueller com port am pc sofort nach start des programms erscheinen und 
auch so genutzt werden können. die usb-treiber dafür sollten ab win98 
schon aufgespielt sein. sicherheitshalber hatte ich aber noch die 
aktuellsten treiber (atmusb6124.inf und -.sys) zusätzlich ein kopiert. 
im gerätemanager wird es aber weiterhin als fehlerhaft installiertes usb 
device amarkiert (mit und ohne (mit dem programm laufendem) 
eval.-board).

ist noch ein wenig seltsam, habt ihr noch tipps für mich?


mein pc: win2000 mit SP4, P4 (3,2GHz)
Gast #472333
Lesenswert?

da zu diesem beispiel die dokumentation fehlt bin ich von 
basicUSB-programm ausgegangen und dabei ist die 6124.inf/-.sys nötig. 
wusste nicht das dies beispiel auf dem framework basiert bzw. basieren 
soll; so weit gut, ich hatte in meinem inf verzeichnis auch noch die 
6119.inf die du meinst aber auch mit dieser kann ich das device nicht 
installieren.
Gast #472385
Lesenswert?

hallo,
ich kann das framework nicht erzeugen da ich nicht über die entspr. 
tools verfüge.
dem beispiel liegen aber binary dateien für alle at91samx-ek 
bei(verzeichnis: USBFramework-Core1.0+CDC1.0.zip\AT91 USB Framework - 
Core 1.0 + CDC 1.0\bin\).
wenn ich das für mich passende (AT91SAM7SEK_CDC.bin) in mein board lade 
(mittels sam-ba) und danach starte erkennt windows das board und 
verlangt nach einer .inf datei und danach nach dem passenden treiber 
(usbser.sys, ist der windoof standard treiber). danach wird das board im 
geräte manager unter den anschlüssen gelistet.

ich würde dir daher empfehlen mal mit dem fertigen binary zu beginnen.

betreffend doku: in doc6269.pdf findest du alle notw. infos.


gruss
gerhard
Gast #473262
Lesenswert?

hi,

also es war ein größeres problem; was mir bisher nicht aufgefallen war, 
ist dass das board selbst (nicht der JTAG) nicht vom gerätemanager als 
usb device erkannt worden war. kann nur vermuten das es am "swinging 
led" programm lag welches man beim "getting started" über samba ins 
flash spielt. aber nur ne vermutung. nun auch egal das das board mittels 
des programms (geändertes sam7SE prog) im flash und mit den treibern 
atm6124 endlich erkannt wird... juhu

nun die nächste frage: gibt es ein passendes terminalprogramm dafür? 
soll heissen auf meinem pc schreib ich werte in eine maske, die sendet 
diese an den controller und zeigt mir an welche daten der controller für 
mich am PC bereitstellt.
Gast #473341
Lesenswert?

und welches usb "packet" hast du jetzt eingesetzt?
das frameweork oder basicusb?

zu deiner frage:
wenn dein board sich richtig anmeldet, dann simuliert es jetzt eine com 
schnittstelle, an welceh du mittels terminal programm daten senden bzw 
empfangen kannst.

gruss
gerhard
Gast #473662
Lesenswert?

ich nutze das basicUSB "paket"; mein board meldet sich einwandfrei als 
usb device (nicht als com port) an und ich kann auch ohne weiteres die 
AT91xxxBasicUSB.exe starten. bei der werden doch so weit wie ichs 
verstehe nur daten hinundher gesendet. wenn du diese exe meinst wie kann 
ich da daten gezielt senden? ist doch ne endlos funktion,oder? wo hol 
ich die daten am pc ab? wohin muss ich daten schreiben die ich an den 
controller senden will?
Gast #473775
Lesenswert?

hallo,
ich habe die beiden usb examples vertauscht.

1) AT91SAM7S64-BasicUSART_USB-IAR4_30A-1_21:
simuliert eine com schnittstelle und setzt den windows standard treiber 
usbser.sys ein


2) AT91SAM7S64-BasicUSB-IAR4_30A-1_21:
bei diesem projekt wird eine com schnittstelle simuliert wenn du 
atm6124ser.inf einsetzt.

wenn du die atm6124.inf einsetzt dann wird eine spezieller atmel treiber 
(atm6124.sys) installier tund du kannst aus deiner appliation über die 
usblibrary.dll auf die usb schnittstelle zugriefen.

die ganze info dazu findest du im dokument doc6213.pdf (lesen bildet!).

um die sache ein bischen zu erschweren würde ich dir aber von diesen 
beiden examples abraten und dir das neue framework ans herz legen.

grund:
1) atmel hat sich von den beiden examples schon verabschiedet (sind auf 
der atmel homepage nicht mehr zu finden)
2) die beispiele sind device-seitig (am at91sam7) nicht 
interrupt-basierend sondern die usb schnittstelle wird gepollt. wenn du 
eine ernsthafte datenrate auf der usb schnittstelle erreichen möchtest 
und der at91sam7 außer ubs auch noch was anderes zu tun hat dann ist 
eine interrupt basierende lösung (wie das framework ein ist) notwendig.
3) alle lösungen, die auf usbser.sys aufbauen kannst du vergessen sobald 
du höhere datenraten erreichen möchtest. such im google mal nach dem 
treiber und du wirst wissen warum.


gruss
gerhard

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren