Forum: PC-Programmierung Probleme beim kompilieren vonTeensy RawHID code für Windows


von Philipp M. (spannungsabfall)


Lesenswert?

Hallo,

ich versuche die Teesy AVR-USB-Bibliothekt zu implementieren.

http://www.pjrc.com/teensy/rawhid.html

Die µC Software läuft auch einwandfrei und ich kann sie verändern und 
neu kompilieren. Allerdings habe ich ein Problem mit der 
Windows-Software. Zwar funktioniert das fertig kompilierte Programm, 
dass man von der Seite herunter laden kann jedoch schaffe ich es nicht 
den mitgelieferten Quellcode zu kompilieren.
Zuerst heiß es, dass ich eine "hidsdi.h" nicht habe. Also habe ich mir 
das Windows driver deveopment kit (DDK) herunter geladen. Nun kriege ich 
jedoch zahlreiche andere Fehlermenldungen. Zum Beispiel mehfach die 
Meldung "__checkRun does notname a type" in der Datei "hidpi.h".

Hat schon mal jemand das Programm kompiliert und wenn ja, welche Tools 
und Bibliotheken hat er benutzt?

Ist das hier das richtige Topic oder sollte ich die Frage besser unter 
"µC & Elektronik" stellen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Philipp Meißner schrieb:
> Ist das hier das richtige Topic oder sollte ich die Frage besser unter
> "µC & Elektronik" stellen?

Da es sich um PC-Programmierung handelt, bist Du hier richtig 
aufgehoben.

Mit was für einem Compiler versuchst Du die Testanwendung zu übersetzen?
Im Makefile steht was von i586-mingw32msvc-gcc, benutzt Du den?

von Philipp M. (spannungsabfall)


Lesenswert?

Da bin ich ein wenig überfragt. Ich hatte es mit Dev++ und mit dem 
Visual Studio versucht. Ich wusste aber nicht was für Compiler die 
nutzen.
Ich habe jetzt mal bei Dev++ unter den Compilereinstellungen 
die"mingw32-gcc.exe" ausgewählt. Aber es funktioniert leider immernoch 
nicht. Ich kriege immer haufenweise für mich recht kryprische Meldungen.

von Peter (Gast)


Lesenswert?

Hi Philipp,

ich kenne jetzt diese Teesy Bibliothek nicht, aber falls die lediglich 
USB HID-Geräte vom PC aus ansteuert, dann versuchs mal mit der 
USB-Library von www.rahand.eu. Da gibts auch ne kostenlose Version - hat 
zwar kleine Einschränkungen, aber egal. Das Ganze läuft dann unter 
Microsoft Visual Studio Express. Ausserdem ist noch eine fertige 
Beispielanwendung mit dabei.

Grüsse

von Philipp M. (spannungsabfall)


Lesenswert?

Ich weiß halt nicht ob die perfekt mit dem Teensy µC-Code 
zusammenabreitet. Außerdem hat das Teensy Programm nach eigenen Angaben 
keinerlei Einschränkungen und schafft auch USB-Full-Speed (12 Mbit/s).

von Peter (Gast)


Lesenswert?

Die Einschränkungen sind ja nur bei der kostenlosen Version vorhanden. 
Und wenn es funktioniert, dann kannst Du ja immer noch upgraden.

von Philipp M. (spannungsabfall)


Lesenswert?

Ich habe dem Autor der Teensy Software geschrieben. Und dieser meinte, 
dass er mit MinGW unter Linux Cross-Platfom compiliert hat. Das werde 
ich diese Tage mal versuchen. Ebenso werde ich es nochmal mit MinGW 
unter Windows versuchen (erste Versuche brachten leider Linker-Errors). 
Wenn ich Erfolg habe, werde ich hier davon berichten.

von Philipp M. (spannungsabfall)


Lesenswert?

Die beschriebenen Versuche waren erfolgreich. Ich habe das Programm mit 
MinGW unter Ubuntu, welches in einer Vitual Machine auf Win XP lief 
compiliert.

von Tobias P. (wuka-rudi)


Angehängte Dateien:

Lesenswert?

Hey Philipp,

steh momentan vor dem selben Problem wie du.
Ich versuche den Teensy RAWHID Quellcode mit Visual Studio 2010 zu 
compilieren. Hab mir auch das WDK installiert. Das hatte zur Folge das 
alle Compilerfehler verschwunden sind. Jetzt bekomme ich aber eine lange 
Liste an Linkerfehlern siehe Bild. Über den Umweg mit Ubuntu würde ich 
nur ungern gehen. Hast du es mittlerweile unter Windows hin bekommen 
oder hat jemand anderes eine Idee wie ich das schaffen könnte?

von Philipp M. (spannungsabfall)


Lesenswert?

Ein ähnliches Bild hatte ich damals auch. Und ich hatte auch das WDK 
installiert. Und da ich vor kryptischen Linkerfehlern immer etwas Bammel 
habe, habe ich mich damals für den Umweg über Ubuntu entschieden. Ich 
hatte mich innerlich Anfangs auch sehr dagegen gesträubt weil ich vorher 
noch nie wirklich was mit Windows gemacht habe.

Aber es ging echt überraschend einfach. Ubuntu in VitualBox installiert, 
MinGW dazu installiert und mehr oder weniger im Handumdrehen lief alles. 
Und da ich eine virtualle Maschine benutzt habe musste ich meinen guten 
alten Windows-Desktop gar nicht wirklich verlassen.

http://www.virtualbox.org/

Ich habe es danach auch nicht mehr weiter versucht unter Windows zu 
kompilieren. Was ich aber tun werde, wenn ich mal wieder dazu komme mit 
Teensy zu arbeiten (was ich hoffe den ich finds klasse), ist mir unter 
Ubuntu eine dll zu kompilieren die dann alle Funktionen kann die ich 
brauche. Und diese dll, die dann ja allen benötigten Code in einem Paket 
beinhaltet müsste man dann einfach in ein anderes Projekt einbinden 
können, dass man dann auch unter Windows kompilieren kann.

Wenn mir jemand zuvorkemmen möchte und eine coole dll auf Teensy-Basis, 
die unter Windows direkt zu benutzen ist, erstellt, und sie hier 
veröffentlicht, wäre das natürlich auch klasse.

von Tobias P. (wuka-rudi)


Lesenswert?

Hey danke für deine Antwort!
Hab es jetzt auch unter Windows hin bekommen.
Ist eigentlich auch nur MinGW installieren, Eclipse für C/C++ runter 
laden und dann kann es auch fast los gehen. Die 2 Probleme die dann noch 
zu lösen sind ist das man MinGW in den "PATH" eintragen muss und bei 
Eclipse muss man bei den Projekt Settings bei "C/C++ 
Build-->Settings-->MinGW C Linker --> Miscellaneous" unter Other objects 
die Pfade für "C:\MinGW\lib\libhid.a" und "C:\MinGW\lib\libsetupapi.a" 
angeben muss (für das RawHid Beispiel, ansonsten entsprechend andere) 
dann sollte die ganze Sache laufen.

von Tobias P. (wuka-rudi)


Lesenswert?

Da du ja schon damit gearbeitet hast hab ich noch ne Frage ist es 
möglich Pakete von 128Bytes zu schicken? Kleinere hat ohne Probleme 
funktioniert, aber größere haut grad irgendwie nicht hin. Vorgesehen 
sind je eigentlich max. 64Byte wenn ich mir die usb_rawhid_send so 
ansehe.
Hab sie einfach mal wie folgt erweitert
1
// write bytes from the FIFO
2
  #if (RAWHID_TX_SIZE >= 128)
3
  UEDATX = *buffer++;
4
  #endif
5
  #if (RAWHID_TX_SIZE >= 127)
6
  UEDATX = *buffer++;
7
  #endif
8
  #if (RAWHID_TX_SIZE >= 126)
9
  UEDATX = *buffer++;
10
  #endif
11
  #if (RAWHID_TX_SIZE >= 125)
12
  UEDATX = *buffer++;
13
  #endif 
14
......
bin aus dem Datenblatt auch nicht ganz schlau geworden ob da irgendwas 
dagegen spricht.

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.