Forum: Compiler & IDEs Atollic TrueStudio - undefined _ebss


von C. H. (hedie)


Lesenswert?

Hallo zusammen

Ich versuche ein Beispielprojekt aus der 
STM32_USB-Host-Device_Lib_V2.1.0 zu compilieren.

in der 2.1.0 gab es im gegensatz zur 2.2.0 noch ein Aollic Projekt.
Ich habe also das Projekt importiert und versuche zu builden.

Leider bekomme ich die Fehler:
1
undefined reference to `_ebss'  startup_stm32f10x_cl.s  line 100  C/C++ Problem
2
undefined reference to `_estack'  startup_stm32f10x_cl.s  line 73  C/C++ Problem
3
undefined reference to `_sbss'  startup_stm32f10x_cl.s  line 91  C/C++ Problem
4
undefined reference to `_sdata'  startup_stm32f10x_cl.s  line 86  C/C++ Problem
5
undefined reference to `_sidata'  startup_stm32f10x_cl.s  line 80  C/C++ Problem

_ebss ist jedoch im Startup definiert. Wie alle anderen auch:
1
/* start address for the initialization values of the .data section.
2
defined in linker script */
3
.word  _sidata
4
/* start address for the .data section. defined in linker script */
5
.word  _sdata
6
/* end address for the .data section. defined in linker script */
7
.word  _edata
8
/* start address for the .bss section. defined in linker script */
9
.word  _sbss
10
/* end address for the .bss section. defined in linker script */
11
.word  _ebss


Ich nutze Atollic 8.0.0


Hoffe jemand kann helfen.
Danke!

: Bearbeitet durch User
von Dr. Sommer (Gast)


Lesenswert?

Claudio H. schrieb:
> _ebss ist jedoch im Startup definiert. Wie alle anderen auch:

Das sind keine Definitionen, sondern Imports. Diese Symbole sind im 
Linker-Script (.ld Endung) definiert. Hast du das korrekt importiert und 
in TrueStudio eingestellt?

von C. H. (hedie)


Lesenswert?

Dr. Sommer schrieb:
> Claudio H. schrieb:
>> _ebss ist jedoch im Startup definiert. Wie alle anderen auch:
>
> Das sind keine Definitionen, sondern Imports. Diese Symbole sind im
> Linker-Script (.ld Endung) definiert. Hast du das korrekt importiert und
> in TrueStudio eingestellt?

Vermutlich habe ich dies wohl nicht richtig gemacht.

Wie importiert man denn ein Linkerscript in atollic?

von Dr. Sommer (Gast)


Lesenswert?

Claudio H. schrieb:
> Wie importiert man denn ein Linkerscript in atollic?
Keine Ahnung, man bezahlt doch extra Geld dafür dass das da alles so 
einfach ist (SCNR)! Bei "normalem" eclipse stellt man das in den 
Projekteigenschaften bei den Linker Settings ein.

von C. H. (hedie)


Angehängte Dateien:

Lesenswert?

Danke. Hat funktioniert.

Anbei ein Screenshot wo dies einzustellen ist.
Habe einfach das stm32_flash.ld von einem anderen Projekt genommen.

von Dr. Sommer (Gast)


Lesenswert?

Claudio H. schrieb:
> Habe einfach das stm32_flash.ld von einem anderen Projekt genommen.

Hoffentlich eines für den richtigen Controller, denn da sind die 
Controller-Spezifischen Speicherbereiche deklariert.

von C. H. (hedie)


Lesenswert?

Dr. Sommer schrieb:
> Claudio H. schrieb:
>> Habe einfach das stm32_flash.ld von einem anderen Projekt genommen.
>
> Hoffentlich eines für den richtigen Controller, denn da sind die
> Controller-Spezifischen Speicherbereiche deklariert.

Ja. Es ist für den selben Controller.

von Dr. Sommer (Gast)


Lesenswert?

Claudio H. schrieb:
> Ja. Es ist für den selben Controller.
Dann ist's ja gut. Btw, falls du an der Implementierung von USB und VCP 
auf STM32 interessiert bist, schau vielleicht mal hier: 
USB-Tutorial mit STM32

Hast du denn auch die anderen Einstellungen übernommen, also 
Compiler-Optionen für den Controller (-mcpu=..., -mfpu=... usw.)? Das 
wäre die nächste Fehlerquelle...

von C. H. (hedie)


Angehängte Dateien:

Lesenswert?

Dr. Sommer schrieb:
> falls du an der Implementierung von USB und VCP
> auf STM32 interessiert bist, schau vielleicht mal hier:
> USB-Tutorial mit STM32

Ja bin ich.
Hab mir das tutorial bereits angeschaut.
Leider ist es in C++. Ich habe grundsätzlich keine Mühe mit C++, möchte 
das aktuelle Projekt jedoch nicht portieren.

Dr. Sommer schrieb:
> Hast du denn auch die anderen Einstellungen übernommen, also
> Compiler-Optionen für den Controller (-mcpu=..., -mfpu=... usw.)? Das
> wäre die nächste Fehlerquelle...

Nein habe ich nicht.


Leider scheint ein VCP relativ komplext zu implementiere zu sein.
Was ich an den Examples von ST nicht mag sind die ständigen 
Abhängigkeiten von ihren Eval Boards im Code. Immer diese vielen 
verstreuten Includes.
Bis man da durchblickt....

Habe nun versucht den code von hier in ein neues Projekt zu integrieren:
https://codeofphi.com/?p=23

Leider scheitere ich an: Symbol 'RCC_USBCLKSource_PLLCLK_1Div5' could 
not be resolved

Obwohl ich das entsprechende File includiert habe und Eclipse auch 
hinspringt bei CTRL+Click.

Anbei mal das Zip mit den Files.


Kennt jemand eventuell eine möglichst schlanke, C implementation eines 
VCPs auf einem STM32F105/103?

von Dr. Sommer (Gast)


Lesenswert?

Claudio H. schrieb:
> Leider ist es in C++. Ich habe grundsätzlich keine Mühe mit C++, möchte
> das aktuelle Projekt jedoch nicht portieren.
Ist doch nur minimaler Aufwand, wenn du nicht gerade exzessiv 
C++-Bezeichner wie "this" oder "class" verwendet hast... Aber das 
Tutorial funktioniert eh nicht mit dem STM32F105, weil der die deutlich 
kompliziertere "OTG"-USB-Peripherie hat.

Claudio H. schrieb:
> Leider scheint ein VCP relativ komplext zu implementiere zu sein.
Der VCP nicht so, aber die USB-Ansteuerung, ja.

Claudio H. schrieb:
> Was ich an den Examples von ST nicht mag sind die ständigen
> Abhängigkeiten von ihren Eval Boards im Code. Immer diese vielen
> verstreuten Includes.
Seh ich genauso...

Claudio H. schrieb:
> Leider scheitere ich an: Symbol 'RCC_USBCLKSource_PLLCLK_1Div5' could
> not be resolved
Der Code klappt mit dem STM32F105 eh nicht, weil der wie gesagt die 
"OTG"-Peripherie nutzt.

Claudio H. schrieb:
> Kennt jemand eventuell eine möglichst schlanke, C implementation eines
> VCPs auf einem STM32F105/103?
Für den F103 gäbs noch den von W.S.: 
Beitrag "Re: STM32F4 USB CDC"
Für den F105 wirds kaum eine "schlanke" geben, denn der "OTG"-Core ist 
sehr komplex.

von C. H. (hedie)


Lesenswert?

Dr. Sommer schrieb:
> Claudio H. schrieb:
>> Kennt jemand eventuell eine möglichst schlanke, C implementation eines
>> VCPs auf einem STM32F105/103?
> Für den F103 gäbs noch den von W.S.:
> Beitrag "Re: STM32F4 USB CDC"
> Für den F105 wirds kaum eine "schlanke" geben, denn der "OTG"-Core ist
> sehr komplex.

Für die Nachwelt:

Hier habe ich eine "schlanke" Implementation des VCPs durchgeführt.
Es ist alles im ZIP enthalten.

Beitrag "Re: STM32 - BusFault finden"

von Dr. Sommer (Gast)


Lesenswert?

Claudio H. schrieb:
> Hier habe ich eine "schlanke" Implementation des VCPs durchgeführt.
Naja, es verwendet die riesige USB-Bibliothek von ST, "schlank" ist die 
nicht ;-)

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.