LPC2378 + Crossworks + USB

Gast #634605
Hallo,

hat jemand vielleicht ein Beispiel für die Programmierung der USB 
Schnittstelle des LPC2378 Controllers. Habe das Beispiel von Keil 
benutzt und es umgeschrieben, dass es auch unter Crossworks 1.7 
übersetzt werden kann. Dieses geänderte Projekt wieder im Keil 
compiliert und in das MCB2300 geflasht und es läuft. Mit Crossworks 
läuft zwar das Programm, der Interrupt kommt auch, aber die Goddluck LED 
kommt nicht.

Initeinstellungen habe ich auch kontrolliert und müsste passen.

Danke schön für Eure hilfe.

Gruss
Harry
Gast
Keine Ahnung wie du deine IRQ Handler gemacht hast aber wenn du die GNU 
varriante nimmst ...interrupt("IRQ") dann darauf achten das du keine 
opitmierung eingeschaltet hast.

mfg mathias
Gast
Weiterhin sind RealView (und EWARM) scheinbar relativ tolerant gegenüber 
"vergessenen" volatiles, code dahingehend nochmal abklopfen. Bei vielen 
USB-Codes muss man auf das struct packing achten. Dies ist 
compilerspezifisch und üblicherweise wird nicht gepackt, um schnelleren 
Zugriff auf Elemente zu ermöglichen. Bei arm-elf/-eabi gibt es dazu ein 
attribut packed (ähnlich __packed aber nicht als "prefix" sondern 
"suffix"). Das pack pragma gibt es bei RealView, EWARM und GNU (vgl. 
Dokumentation pragma und variable attributes bei gcc.gun.org).

Martin Thomas
Gast
Hallo,

danke schön für Eure Antworten. Die Compiler Optimierung habe ich 
ausgeschaltet.

Eine Packed Structur in Keil C

typedef __packed struct _USB_SETUP_PACKET {
  REQUEST_TYPE bmRequestType;
  BYTE         bRequest;
  WORD_BYTE    wValue;
  WORD_BYTE    wIndex;
  WORD         wLength;
} USB_SETUP_PACKET;

habe ich wie folgt in GNU C umgeschrieben:

typedef struct _USB_SETUP_PACKET {
  REQUEST_TYPE bmRequestType;
  BYTE         bRequest;
  WORD_BYTE    wValue;
  WORD_BYTE    wIndex;
  WORD         wLength;
} __attribute__((_packed_)) USB_SETUP_PACKET;

Ich denke, dass es so gehen müsste!

Gruss
Harry

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.