Forum: Mikrocontroller und Digitale Elektronik ARM Gnu Toolchain (STM32)


von ArmGnuUser (Gast)


Lesenswert?

Guten Morgen,

in meiner jetzigen Application für den STM32 Mikrocontroller möchte ich 
nun Quellcode einbinden, der allerdings nicht im Root Pfad vom dieser 
Applikation liegt. Diese Dateien befinden sich 4 Verzeichnisse oberhalb 
dir Applikation. Wie kann ich diese Dateien in mein Projekt einbinden?

source.mk Datei:
1
################################################################################
2
# Automatically-generated file. Do not edit!
3
################################################################################
4
5
ELF_SRCS := 
6
O_SRCS := 
7
CPP_SRCS := 
8
C_UPPER_SRCS := 
9
C_SRCS := 
10
S_UPPER_SRCS := 
11
OBJ_SRCS := 
12
ASM_SRCS := 
13
CXX_SRCS := 
14
C++_SRCS := 
15
CC_SRCS := 
16
SECONDARY_SIZE := 
17
C++_DEPS := 
18
OBJS := 
19
C_DEPS := 
20
ASM_DEPS := 
21
CC_DEPS := 
22
SECONDARY_FLASH := 
23
CPP_DEPS := 
24
CXX_DEPS := 
25
C_UPPER_DEPS := 
26
S_UPPER_DEPS := 
27
28
# Every subdirectory with source files must be described here
29
SUBDIRS := \
30
system/src/stm32f2-stdperiph \
31
system/src/newlib \
32
system/src/diag \
33
system/src/cortexm \
34
system/src/cmsis \
35
src \

von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

ArmGnuUser schrieb:
> # Every subdirectory with source files must be described here
> SUBDIRS := \
> system/src/stm32f2-stdperiph \
> system/src/newlib \
> system/src/diag \
> system/src/cortexm \
> system/src/cmsis \
> src \
> ../../../../ \
?

.. ist das übergeordnete Verzeichnis
../.. ist das darüber usw.
Ich weiß aber nicht ob das im Makefile(?) funktioniert

von ArmGnuUser (Gast)


Lesenswert?

Wenn ich in der source.mk Datei Änderungen vornehme, dann wird während 
dem Build Vorgang dieser Eintrag entfernt.

von hp-freund (Gast)


Lesenswert?

ArmGnuUser schrieb:
> Automatically-generated file. Do not edit!

Steht ja auch da.

Dann musst Du deiner IDE die Pfade mitteilen.

von Micha (Gast)


Lesenswert?

Schreibschutz aktivieren oder Pfad in der IDE einstellen, die erstellt 
ja schließlich das makefile.

von ArmGnuUser (Gast)


Lesenswert?

Ja genau da hab ich auch das Problem. Zunächst die zusätzlichen 
Include-Pfade habe ich in Eclipse angegeben. Nun möchte ich das aus dem 
C-File ein O-File (object file) wird. Wo müsste ich mich da einklinken?

von hp-freund (Gast)


Lesenswert?

ArmGnuUser schrieb:
> Include-Pfade habe ich in Eclipse angegeben.

Gut. *.h findet er.

Dann solltest Du auch noch die source Pfade angeben.

von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

Möglichkeit 1:
Zumindest unter Eclipse Luna auf Linux ist es möglich, beim Filesystem 
Import die Dateien nicht zu kopieren sondern nur Links zu erstellen. -> 
File Importieren in Sourcefolder.

Möglichkeit 2:
Du kannst die Datei vorkompilieren und dann dem Linker als zusätzliches 
Objekt mitteilen. Das geht bei den Linkersetting in eclipse.

Gruß

von ArmGnuUser (Gast)


Lesenswert?

Ich möchte nicht alle C-Dateien von einem Verzeichnis nutzen.
Wie kann man sowas in eclipse realisieren, dass nur gewählte C-Dateien 
verwendet werden?

Es können immer nur alle Dateien von einem Verzeichnis angegeben werden.
Properties->C/C++ General>Paths and Symbols->Source Location

von ./. (Gast)


Lesenswert?

> Ich möchte nicht alle C-Dateien von einem Verzeichnis nutzen.

build options: exclude from build [x]

von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

Kannst du nicht die benötigten Sourcefiles in dein Projekt kopieren?

Wenn du dir sorgen um aktualität machst, kannst du ja einen pre-build 
command schreiben, der dir die Benötigten Dateien kopiert und somit 
aktualisiert?

LG

von ArmGnuUser (Gast)


Lesenswert?

Das habe ich mir auch überlegt, ob dies nicht der bessere Weg wäre.
Wie würde dieses pre-build command in eclipse mit der arm gnu toolchain 
funktionieren?

von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

Hallo,

auf Projekt Properties->C/C++ Build -> Settings -> Reiter "Build Steps"

und dann den Command bei pre-build steps eingeben.
Z.B. cp ../../meinequelle.c ../src/meinequelle.c

Dateinamen sind aber relativ zum Buildordner, also meistens Debug oder 
Release.

Wenn es mehr als eine Datei sein soll, würde ich ein Kopierscript 
schreiben, welches dann ausgeführt wird

von Steffen R. (steffen_rose)


Lesenswert?

Die Konfiguration des TO ist mir bisher nicht klar.

Ich nutze Managed Makefiles. Da werden genau die in der IDE angegebenen 
Sourcefiles übersetzt. 'Exclude from build' wie oben beschrieben, 
funktioniert wunderbar.

Für Pfade außerhalb des Projektes nutze ich Linked Resources.
Hierfür lege ich in den projekt Properties unter
Resource->Linked Resources
Path Variables
eine neue Variable an.
Bsp:
Name: FRAMEWORK_LOC
Location: ${PROJECT_LOC}\..\..


Ab jetzt kann man Linked Resoucen unterhalb von FRAMEWORK_LOC anlegen.

File->New->Other
General->Folder

'Advanced' öffnen
'Linked Folder' auswählen
'Variables'-Button
FRAMEWORK_LOC auswählen - und dann Extend -> dort, wo man hin will

Funktioniert für Files analog.
Aber nicht 'New->Source File' oder 'Source Folder' nutzen, sondern
'New->File bzw. Folder'.

Ging bei mir bisher bei den verschiedensten Eclipse Distributionen unter 
Windows. Eigenständig habe ich bisher keine Eclipseumgebung aufgebaut.

Hoffe mal, dass ich die Problematik nicht zu sehr missverstanden habe.

von Steffen R. (steffen_rose)


Lesenswert?

Christopher B. schrieb:
> und dann den Command bei pre-build steps eingeben.
> Z.B. cp ../../meinequelle.c ../src/meinequelle.c

Dumm, wenn man Eclipse auch als Editor benutzt. Da erwischt man 
garantiert ../src/meinequelle.c.

Außerdem ändert dies so simple gestrickt das Änderungdatum und muss 
jedesmal übersetzt werden.

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.