mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USB ARM7 Endpoints und Performance


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ist es problemlos möglich bei einem ARM7 Prozessor alle 1ms 64Byte Daten 
über USB (Interrupt Modus) pro Endpoint zu versenden?

Ist der Prozessor in so einem Fall schon ziemlich ausgelastet (z.B. 3 
Endpoints und 3 Inpoints) oder ist es möglich SPI, LCD oder ähnliches 
noch anzusprechen?

Warum gibt es bei verschiedenen ARM7 Modellen von Atmel Einschränkungen 
in der Anzahl der USB Endpoints?

Dirk

Autor: Patrick Niemeyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab hier einen LPC2468 am Laufen - und dieser sendet alle 125ms 
USB-Daten. Nebenbei kann er immer noch einige andere Sachen durchführen.

Aber das 1ms Intervall ist sehr kurz gewählt, glaub nicht, dass das ein 
Cortex schaffen wird. Vor allem wenn innerhalb des 1ms noch ein Zugriff 
auf SPI erfolgen soll um mögliche Daten anzunehmen bzw. zu überprüfen ob 
welch da sind.

Gruß
Patrick

Autor: Alexander S. (schroeder_90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Zauberwort heißt wohl DMA ;)

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander S. schrieb:
> Das Zauberwort heißt wohl DMA ;)

für SPI - und dann sollte das ganze mit einem ARM7 funktionieren? Hast 
du schon Erfahrungen sammeln können mit dem USB-Interface bei ARM7s und 
dessen Systemauslastung?

Gruß
Dirk

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problemlos möglich. Hab ca 800 - 900 kb/s mit einem SAM7 per Bulk 
Endpoint geschafft. Du willst ja nur 64 kb/s

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl schrieb:
> Problemlos möglich. Hab ca 800 - 900 kb/s mit einem SAM7 per Bulk
> Endpoint geschafft. Du willst ja nur 64 kb/s

und der Overhead der entsteht, weil ich gern 3-4 verschiedene Endpoints 
haben möchte, die jeweils 64kB/s (also insgesamt 256KB/s) ist auch 
relativ gering?

Die von dir genannten 800-900 kB/s sind aber nur mit einem Endpoint zu 
schaffen und nicht mit mehreren, oder? Wie hast du diese 
Übertragungsrate gemessen? Einfach Daten vom Controller zu einem Rechner 
und zurückgeschickt oder der gleichen? Wie stark ist ein ARM7 bei einer 
solchen Datenrate gefordert - sind andere Sachen wie das Ansprechen 
einer SPI- oder I2C Schnittstelle möglich?

Wieviel Zeit / Abarbeitungszeit nimmt so ein USB-Stack ungefähr in 
Anspruch?

Gruß
Dirk

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Is schon ne Weile her...

Gibts für die Enpoints eigene Interrupts? Dann ist der Overhead relativ 
gering. Aber auch sonst sollte das nicht allzu lange dauern.

Gemessen hab ich, indem ich ständig 10 kB Blöcke vom Controller zum PC 
geschickt hab und dann auf dem PC über einige von diesen Blöcken 
gemittelt die nötige Zeit berechnet hab.

Genaue Laufzeiten zum Stack kann ich leider nicht bieten, der µC 
langweilt sich aber nicht vollständig ;)

SPI oder I²C sollte mittels DMA kein Thema sein, das läuft dann fast 
umsonst mit.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl schrieb:
> Gibts für die Enpoints eigene Interrupts?
davon hab ich bis jetzt noch nichts gehört: inwiefern wird dieser 
Interrupt ausgelöst? Dann wenn der Host nach Daten frägt?

Karl schrieb:
> Genaue Laufzeiten zum Stack kann ich leider nicht bieten, der µC
> langweilt sich aber nicht vollständig ;)
Welchen Controller hast du genau dafür eingesetzt? Gibt es da große 
Unterschiede (bis jetzt hab ich mich noch auf keinen festgelegt)?

Karl schrieb:
> SPI oder I²C sollte mittels DMA kein Thema sein, das läuft dann fast
> umsonst mit.

das klingt gut, weil wenn das ganze auf einem ARM7 laufen kann, brauch 
ich kein externes Memory oder SDRAM... Über SPI sollen die Daten geholt 
werden, die dann weiter über USB geleitet werden.

Gruß
Dirk

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dirk schrieb:
> Karl schrieb:
>> Gibts für die Enpoints eigene Interrupts?
> davon hab ich bis jetzt noch nichts gehört: inwiefern wird dieser
> Interrupt ausgelöst? Dann wenn der Host nach Daten frägt?
>
Datenblatt lesen ;) Hab beim SAM7 grad nochmal nachgesehen: Ein 
Interrupt für das USB Device, dann ein Register auslesen und darin sind 
4 Bits für die 4 Endpoints -> praktisch kein Overhead

> Karl schrieb:
>> Genaue Laufzeiten zum Stack kann ich leider nicht bieten, der µC
>> langweilt sich aber nicht vollständig ;)
> Welchen Controller hast du genau dafür eingesetzt? Gibt es da große
> Unterschiede (bis jetzt hab ich mich noch auf keinen festgelegt)?

AT91SAM7S256, NXP sind traditionell schneller aus dem Flash, hatten aber 
kein DMA. Kann sich mittlerweile geändert haben, ziemlich sicher sogar.


> Karl schrieb:
>> SPI oder I²C sollte mittels DMA kein Thema sein, das läuft dann fast
>> umsonst mit.
>
> das klingt gut, weil wenn das ganze auf einem ARM7 laufen kann, brauch
> ich kein externes Memory oder SDRAM... Über SPI sollen die Daten geholt
> werden, die dann weiter über USB geleitet werden.

Also das geht mit bei 256 kB/s mit jedem ARM7, wenn sonst nichts 
großartiges ist.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl schrieb:
> Also das geht mit bei 256 kB/s mit jedem ARM7, wenn sonst nichts
> großartiges ist.

es sind insgesamt zwei SPI Schnittstellen die mit Daten aufwarten für 
das USB Interface. Aber ansonsten ist nichts großartiges zu machen, ein 
paar Buttons auswerten und vielleicht ein Eeprom über I2C.

Danke für deine Einschätzung!

Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
einen deutlichen Performance-Gewinn erzielt man auch, wenn man nicht 
soviele Endpoints verwendet sondern diese lieber zusammenfasst zu einem.

Das wären dann 256kB/s mit einem Endpoint -> und dann sind die beiden 
SPIs locker zu schaffen vom Controller, sowie auch das I2C (hier 
vielleicht mit DMA, da I2C ja sehr langsam ist)

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für den Tipp, werd`s dann wohl auf nur einen Endpoint für Out und 
einen für In belassen; dann sollte es aber klappen mit der 
Performance... hoffentlich

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.