Forum: Mikrocontroller und Digitale Elektronik AT91sam7x: usb verwenden


von constantin (Gast)


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

von gerhard (Gast)


Lesenswert?

hallo constantin,
du findest unter folgendem link ein beispiel-programm für einen 
seriell-usb umsetzer:

http://www.at91.com/package_patch_driver/at91sam7s256_iar/at91sam7s256_iar.zip

und daraus das beispiel AT91SAM7S-USART_USB_SAM7S

gruss
gerhard

von constantin (Gast)


Lesenswert?

leider kann ich iar compalierte programme nicht lesen bzw in keil 
umsetzen; mir fehlt dazu die programmiererfahrung. trozdem danke für die 
antwort und den link.

von gerhard (Gast)


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

von constantin (Gast)


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.

von gerhard (Gast)


Lesenswert?

hallo,
in der .zip datei sind sie enthelnte und zwar im verzeichnis:
FreeRTOS\Source\include\

gruss
gerhard

von constantin (Gast)


Lesenswert?

jupp, hab ich gefunden. habs übersehen.
das programm läuft aber nicht wegen jeder menge fehlern( zB C25, C42 
usw) bzw warnungen.


von constantin (Gast)


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 =)

von constantin (Gast)


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)

von gerhard (Gast)


Lesenswert?

hallo constantin,
wenn du das framework verwendest solltest du vielleicht mal die 
richtige.inf datei verwenden (6119.inf).

gruss
gerhard

von constantin (Gast)


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.

von gerhard (Gast)


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

von Constantin (Gast)


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.

von gerhard (Gast)


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

von Constantin (Gast)


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?

von gerhard (Gast)


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

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.