Forum: Mikrocontroller und Digitale Elektronik USB CDC Demo von Keil (LPC2368) in gcc konvertieren


von Christoph (Gast)


Lesenswert?

Hallo zusammen,

hat zufällig jemand von euch schonmal die oben angegebene Demo für den 
gcc - Compiler konvertiert, so dass ich es unter CrossStudio zum Laufen 
bringen könnte? Habe da an einigen Stellen Probleme.

Beziehungsweise weiss einer wie man z.B. folgende Zeile konvertiert:

DWORD __swi(8) USB_WriteEP (DWORD EPNum, BYTE *pData, DWORD cnt);

Danke für eure Hilfe!

MfG

Christoph

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Christoph schrieb:
> hat zufällig jemand von euch schonmal die oben angegebene Demo für den
> gcc - Compiler konvertiert, so dass ich es unter CrossStudio zum Laufen
> bringen könnte?

Vor einer Weile habe ich mal etwas mit der HID-Demo von Keil 
herumgespielt. Code aber grade nicht zur Hande.

> Habe da an einigen Stellen Probleme.
>
> Beziehungsweise weiss einer wie man z.B. folgende Zeile konvertiert:
>
> DWORD __swi(8) USB_WriteEP (DWORD EPNum, BYTE *pData, DWORD cnt);

Ist eine Forward-Definition für eine Funktion, die per 
Software-Interrupt aufgerufen wird. Die Anweisungen der Funktion werden 
dann in einem "priviledged" mode ausgeführt. In der Anwendung geht ewas 
wahrscheinlich um den Schutz vor Unterbrechnungen ohne das man im 
Status-Register herumbasteln muss um IRQ bzw. FIQ zu sperren.

Ja, die Sache mit den Software-Interrupts ist im RealView Compiler 
mittels herstellerspezifischen Erweiterungen etwas besser vorgekaut als 
beim GNU gcc. Das Prinzip für SWI-Handling in gcc für ARM kann man mglw. 
hier ein wenig abschauen:
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/index_at91.html#at91_gamma 
. Beispiel ist zwar für anderen Controller, Vorgehensweise aber für alle 
ARM7TDMI gleich.

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.