LUFA für Dummies

OP #7172939
Lesenswert?

Hallo Allerseits,

ich will mal ein wenig mit LUFA rumspielen.

http://www.fourwalledcubicle.com/LUFA.php

Ich habe im Microchip-Studio 7 ein Projekt angelegt, das gesamte 
LUFA-Verzeichnis dort reinkopiert und versuch jetzt, mittels externem 
makefile was zu compilieren. Leider ohne Erfolg. Siehe Anhang.

Hat einer Ideen und Hinweise?

So weit ich es verstanden habe, muss man erst den LUFA-Kern compilieren, 
dann eines der Beispiele, welches dann zusammen gelinkt wird. So weit 
die Theorie.
Angehängte Dateien:
OP #7193718
Lesenswert?

Hmmm. Neuer Versuch

http://www.fourwalledcubicle.com/files/LUFA/Doc/210130/html/_page__compiling_apps.html

Ich hab das alles so gemacht, wie beschrieben, glaub ich zumindest. Dann 
die Msys Konsole geöffent, Verzeichnis gewechselt und make all. Und es 
passiert nix. Vermutlich ein DAU Fehler, wenn man keine Ahnung von make 
und Linux hat. Hat jemand Hinweise?
Angehängte Dateien:
(Firma: L-E-A) #7193887
Lesenswert?

Falk B. schrieb:

> Ich hab das alles so gemacht, wie beschrieben, glaub ich zumindest. Dann
> die Msys Konsole geöffent, Verzeichnis gewechselt und make all. Und es
> passiert nix. Vermutlich ein DAU Fehler, wenn man keine Ahnung von make
> und Linux hat. Hat jemand Hinweise?

Warum baust Du zum Start nicht einfach mal eines der vielen 
mitgelieferten Projekte, z.B. USBtoSerial

In einer Linux-Umgebung genügt es ins Verzeichnis

  LUFA-xyz/Projects/USBtoSerial

zu wechseln und dort einfach

  make

aufzurufen.

Wenn das klappt, weißt Du immerhin schon mal, dass Deine 
Entwicklungsumgebung passt.

Grüßle,
Volker
Moderator Persönliche Seite #7193924
Lesenswert?

Falk B. schrieb:
> Aber wenn ich das als Unkundiger interpretiere, ist das nur ein Dummy.

Es ist kein echter Dummy, es hat solche Optionen wie "make version" oder 
"make clean". Was es aber nicht hat (und was offenbar vorsätzlich leer 
gelassen worden ist), ist das (übliche) default target "make all".

D.h. du sollst schlicht gar nicht versuchen, da "alles" zu bauen, 
sondern du sollst offenbar die jeweiligen konkreten Projekte bauen. Ich 
habe mir LUFA lange nicht mehr angesehen, aber ich kann mir gut 
vorstellen, dass da auch einiges an customization erforderlich ist, 
Anpassung auf die tatsächlich zu verwendende Hardware, Software-Optionen 
etc.
#7193932
Lesenswert?

Falk B. schrieb:
[...]
> Das geht komischerweise! GUT, schon mal einen Schritt weiter!
> im Verzeichnis lufa geht das nicht, obwohl dort ein makefile liegt. Aber
> wenn ich das als Unkundiger interpretiere, ist das nur ein Dummy.

So ist es.
1
# Default target - no default action when attempting to build the core directly
2
all:
Deshalb schrub ich ja du sollst "make all" mal eine Etage höher 
ausführen.
Dort soll eigentlich folgendes passieren:
- make welchselt nach LUFA und macht dort **gewollt** nichts.
- make wechselt nach Demos und hangelt sich dort rekursiv durch alle 
Verzeichnisse und baut - zumindest bei mir - jede Menge Zeug.
- selbiges für die Verzeichnisse Projects und Bootloaders.

Warum bei dir im obersten Makefile bei "make all" das selbe wie in LUFA 
passiert kann ich aber aus der Ferne nicht beurteilen.

Gruß,
f
(Firma: L-E-A) #7193947
Lesenswert?

Falk B. schrieb:

> Das geht komischerweise! GUT, schon mal einen Schritt weiter!

Wunderbar, dann funktioniert Deine Entwicklungsumgebung.

> im Verzeichnis lufa geht das nicht, obwohl dort ein makefile liegt. Aber
> wenn ich das als Unkundiger interpretiere, ist das nur ein Dummy.

Ich gebe zu, dass ich mir mein Leben mit LUFA stark vereinfacht habe, 
indem ich einfach das USBtoSerial-Projekt kopiert habe.

Das dort mitgelieferte Makefile ruft Unmengen anderer Makefiles auf und 
ich habe gar nicht erst versucht, das (und die zugeh. Abhängigkeiten) zu 
verstehen oder nachzubauen.

Ich habe einfach meine speziellen Targets, z.B. für's Flashen, das 
Setzen der Fuses und das Archvieren des Codes in das bestehende Makefile 
hineinkopiert.

In diesem Makefile wird einiges konfiguriert, wie die MCU (MCU) und 
deren Architektur (ARCH), Takt (F_CPU, F_USB), sowie das verwendete 
(Eva-)Board.
Für eigene Hardware empfiehlt sich
  BOARD = NONE

Interessant auch die make-Variable

LUFA_PATH

Wenn Du dort den absoluten Pfad zu dem Lufa-Hauptverzeichnis eingibst, 
dann kannst Du Dein Projekt in jedem beliebigen Verzeichnis bauen, z.B.:

LUFA_PATH = /home/myhome/sources/Lufa/github/lufa/LUFA

Weitere Anpassungen finden in der der Datei  Config/LUFAConfig.h
unterhalb des (kopierten) Projektverzeichnisses statt.

UID und VID werden in der Datei Descriptors.c eingestellt, ebenso der 
ManufacturerString.

Die klassischen AVR lassen sich nach meiner Erfahrung problemlos 
verwenden.
Die xmegas funktionieren auch, wobei es sich hier empfiehlt, die 
Einstellung des MCU-Taktes selber vorzunehmen und die entsprechenden 
Code-Sequenzen in LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c 
auszukommentieren (oder einen eigenen Compiler-Switch zu definieren).

Grüßle,
Volker

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren