CrossStudio / CrossWorks

(Firma: L.) #5315581
Lesenswert?

Hi,

Ich bin mit einem IOT Projekt von CoIDE (totes Pferd) zu CrossStudio 
gewechselt.

Nach anfänglichen Schweirigkeiten habe ich es geschafft, dass er den 
richtigen Prozessor STM32L151 (Cortex M3) erkennt und auch alle Files 
brav compiliert.

Wie kriege ich aber die Files gelinkt um ein bin File zu erzeugen.

Bei meinem Projekt ist ein Link-File (*.ld) dabei.

Wo binde ich dieses ein und wie kreige ich den Builder dazu alle Files 
zu linken?

Sorry, bin aber leider kein Experte für IDE Systeme.
Gast #5315603
Lesenswert?

Wenn du solche Fragen stellst, solltest du am Anfang nicht versuchen mit 
einem eigenen Linkerskript zu arbeiten.
Erstell erst mal ein normales Projekt mit den default Einstellungen. Das 
sollte dann zu einem elf-File übersetzt werden.
Wenn das geht kannst du in den Einstellungen unter Linker/Linker die 
Option AdditionalOutputFormat auf bin setzen. Dann wird neben dem 
elf-File auch ein bin-File erzeugt.
(Firma: L.) #5315785
Lesenswert?

Dank ihr beiden.

Zur Erklärung: Es ist ein fertiges projekt (Github). Es handelt sich um 
einen LoraWan Tracker mit STM32L151 Controller.
So gesehen muss ich wohl das vorhandene Linkerscript nehmen.
Wegen Toolchain: Es gibt auf Github eine KEIL und eine CoIDE Version.
Die Keil-Version konnte ich ohne Probleme importieren.
Beide Versionen benutzen die arm-gcc Toolchain (GNU Tools).

Ich dachte ich hätte das Linkerscript richtig eingebunden
Auszug aus dem hzp-File des Projektes in CrossStudio:

<configuration
    Name="ARM Release"
    inherited_configurations="ARM;Release"
    linker_additional_files="C:\\Eigene 
Dateien\\IOT\\RAK811_BreakBoard-master\\src\\boards\\RAK811BreakBoard\\c 
msis\\arm-gcc\\STM32L151XBA_FLASH.ld"  />
Gast #5315985
Lesenswert?

Sorry, aber hier gibts es einen gesonderten Thread warum das Forum 
angeblich so einsteigerfeindlich ist. Beiträge wie deiner sind der 
Grund. da kommt einer daher der von nichts eine Ahnung oder einen Plan 
hat, bedient sich bei anderen (Github) und erwartet jetzt, dass der Rest 
der Forumsuser die Glaskugel auspacken und erraten was du willst. 
Glaubst du wirklich dass die paar Infos die du hier hinrotzt reichen um 
ein Problem zu lösen?

Wozu brauchst du ne IDE wenn du sowieso per Hand in den 
Konfigurationsdateien rumfummelst? Dann kanst du auch gleich ein 
makefile nehmen.
(Firma: L.) #5316172
Lesenswert?

@temp(Gast)

Wie Dein Name schon sagt, bist Du ja ein ganz altes Mitglied hier im 
Forum.
Deshalb entschuldige ich mich, dass ich versuhe Dein "Wissen 
abzugreifen".

Zum Thema Github: Es gibt auf Github auch Software für fertige Boards.
Dies wird vom Hersteller bereitgestellt für Kunden die deren Boards 
gekauft haben.
In meinem Fall ist das genau so. Deshalb fühle ich mich auch nicht 
wirklich schlecht, wenn ich mich "bediene". Leider wird vom Hersteller 
nur Keil und CoIDE unterstützt. CrossStudio schien mir als vernünftige 
(= bezahlbare) Alternative zu Keil (nicht billig) und CoIDE (Website 
tot).

Noch eine persönliche Frage: Was machst Du eigentlich hier im Forum?
- Du weisst schon alles
- Falls Du doch Wissenslücken hast, würdest Du Dich ja niemals beim 
Wissen anderer bedienen
- Helfen tust Du auch nicht?!

Ausdrücklichen Dank an dieser Stelle an "Walter Tarpan (nicolas)" (= 
registrierter Forum-User), der mir mit einem einzigen Satz schon 
weitergeholfen hat.
Gast #5316311
Lesenswert?

M. L. schrieb:
> Zum Thema Github: Es gibt auf Github auch Software für fertige Boards.
> Dies wird vom Hersteller bereitgestellt für Kunden die deren Boards
> gekauft haben.

Ich kritisiere nicht dass du was von Github verwendest. Aber du machst 
dir nicht mal die Mühe dein Problem zu erläutern oder soviel Infos zu 
geben, dass überhaupt jemand dein Problem versteht. Mit anderen Worten, 
du gibst dir nicht selbst genügend Mühe erwartest aber Hilfe.
Bisher hats jedenfalls nicht mal dazu gereicht einen Link auf das 
github-Projekt hier rein zu stellen.
Gast #5316486
Lesenswert?

Ich habe das Projekt (pingp-pong) mal mit Crossworks 4.1.0 importiert 
(Keil) und übersetzt. Das ging ohne Probleme. Nachdem ich als 
"Additional output format) ".bin" eingestellt hatte, kam auch eine 
"ping-pong.bin" Datei heraus. Ganz ohne eigene (bereitgestellte) .ld 
Datei.

Von daher verstehe ich die Frage jetzt nicht so ganz.
(Firma: L.) #5316831
Lesenswert?

@Stefan: Habs probiert. Nach dem compilen startet der Linkprozess und 
bringt folgende Fehlermeldung. Hast Du eine Idee, was ich falsch mache?
Linking ‘classA.axf’
    "C:\Program Files (x86)\GNU Tools ARM Embedded\7 
2017-q4-major\bin/arm-none-eabi-g++" -g -Wl,--gc-sections 
-Wl,--start-group "classA THUMB Debug/thumb_crt0.o" "classA THUMB 
Debug/STM32_Startup.o" "classA THUMB Debug/main.o" "classA THUMB 
Debug/adc-board.o" "classA THUMB Debug/board.o" "classA THUMB 
Debug/gpio-board.o" "classA THUMB Debug/gps-board.o" "classA THUMB 
Debug/i2c-board.o" "classA THUMB Debug/rtc-board.o" "classA THUMB 
Debug/spi-board.o" "classA THUMB Debug/sx1276-board.o" "classA THUMB 
Debug/uart-board.o" "classA THUMB Debug/system_stm32l1xx.o" "classA 
THUMB Debug/stm32l1xx_hal.o" "classA THUMB Debug/stm32l1xx_hal_adc.o" 
"classA THUMB Debug/stm32l1xx_hal_adc_ex.o" "classA THUMB 
Debug/stm32l1xx_hal_dma.o" "classA THUMB Debug/stm32l1xx_hal_gpio.o" 
"classA THUMB Debug/stm32l1xx_hal_i2c.o" "classA THUMB 
Debug/stm32l1xx_hal_pwr.o" "classA THUMB Debug/stm32l1xx_hal_pwr_ex.o" 
"classA THUMB Debug/stm32l1xx_hal_rcc.o" "classA THUMB 
Debug/stm32l1xx_hal_rcc_ex.o" "classA THUMB Debug/stm32l1xx_hal_rtc.o" 
"classA THUMB Debug/stm32l1xx_hal_rtc_ex.o" "classA THUMB 
Debug/stm32l1xx_hal_spi.o" "classA THUMB Debug/stm32l1xx_hal_spi_ex.o" 
"classA THUMB Debug/stm32l1xx_hal_uart.o" "classA THUMB 
Debug/stm32l1xx_hal_usart.o" "classA THUMB Debug/stm32l1xx_hal_cortex.o" 
"classA THUMB Debug/sysIrqHandlers.o" "classA THUMB Debug/utilities.o" 
"classA THUMB Debug/LoRaMac.o" "classA THUMB Debug/LoRaMacCrypto.o" 
"classA THUMB Debug/Region.o" "classA THUMB Debug/RegionAS923.o" "classA 
THUMB Debug/RegionAU915.o" "classA THUMB Debug/RegionCommon.o" "classA 
THUMB Debug/RegionEU868.o" "classA THUMB Debug/RegionIN865.o" "classA 
THUMB Debug/RegionKR920.o" "classA THUMB Debug/RegionUS915.o" "classA 
THUMB Debug/RegionUS915-Hybrid.o" "classA THUMB Debug/lis3dh.o" "classA 
THUMB Debug/sx1276.o" "classA THUMB Debug/adc.o" "classA THUMB 
Debug/delay.o" "classA THUMB Debug/fifo.o" "classA THUMB Debug/gpio.o" 
"classA THUMB Debug/gps.o" "classA THUMB Debug/i2c.o" "classA THUMB 
Debug/timer.o" "classA THUMB Debug/uart.o" "classA THUMB Debug/aes.o" 
"classA THUMB Debug/cmac.o" -Wl,--end-group -o "classA THUMB 
Debug/classA.axf" -mcpu=cortex-m3 -mlittle-endian -mfloat-abi=soft 
-mthumb
    In function `_start':
    multiple definition of `_start'
    (.text+0x0): first defined here
    In function `memory_set':
    undefined reference to `__stack_end__'
    undefined reference to `__stack_start__'
    undefined reference to `__stack_process_end__'
    undefined reference to `__stack_process_start__'
    undefined reference to `__data_load_start__'
    undefined reference to `__data_start__'
    undefined reference to `__data_end__'
    undefined reference to `__text_load_start__'
    undefined reference to `__text_start__'
    undefined reference to `__text_end__'
    undefined reference to `__fast_load_start__'
    undefined reference to `__fast_start__'
    undefined reference to `__fast_end__'
    undefined reference to `__ctors_load_start__'
    undefined reference to `__ctors_start__'
    undefined reference to `__ctors_end__'
    undefined reference to `__dtors_load_start__'
    undefined reference to `__dtors_start__'
    undefined reference to `__dtors_end__'
    undefined reference to `__rodata_load_start__'
    undefined reference to `__rodata_start__'
    undefined reference to `__rodata_end__'
    undefined reference to `__tdata_load_start__'
    undefined reference to `__tdata_start__'
    undefined reference to `__tdata_end__'
    undefined reference to `__tbss_start__'
    undefined reference to `__tbss_end__'
    undefined reference to `__heap_start__'
    undefined reference to `__heap_end__'
    In function `_vectors':
    (.vectors+0x0): undefined reference to `__stack_end__'
    In function `reset_wait':
    undefined reference to `__RAM_segment_end__'
    In function `_sbrk_r':
    sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'
    In function `_write_r':
    writer.c:(.text._write_r+0x12): undefined reference to `_write'
    In function `_close_r':
    closer.c:(.text._close_r+0xc): undefined reference to `_close'
    In function `_fstat_r':
    fstatr.c:(.text._fstat_r+0x10): undefined reference to `_fstat'
    In function `_isatty_r':
    isattyr.c:(.text._isatty_r+0xc): undefined reference to `_isatty'
    In function `_lseek_r':
    lseekr.c:(.text._lseek_r+0x12): undefined reference to `_lseek'
    In function `_read_r':
    readr.c:(.text._read_r+0x12): undefined reference to `_read'
    ld returned 1 exit status
Build failed
Gast #5316921
Lesenswert?

Ich hab auch heute früh erst die 4.1 als Demo installiert da meine 
Linzenz für 3.x ist. STM32 CPU Support Package installiert und deine 
beiden Keil-Projekte importiert:

Building ‘ping-pong’ from solution ‘ping-pong’ in configuration ‘THUMB 
Debug’
1> Assembling ‘thumb_crt0.s’
2> Assembling ‘STM32_Startup.s’
3> Compiling ‘adc-board.c’
4> Compiling ‘main.c’
1> Compiling ‘board.c’
2> Compiling ‘gpio-board.c’
3> Compiling ‘gps-board.c’
1> Compiling ‘rtc-board.c’
4> Compiling ‘i2c-board.c’
2> Compiling ‘spi-board.c’
3> Compiling ‘sx1276-board.c’
1> Compiling ‘uart-board.c’
4> Compiling ‘system_stm32l1xx.c’
2> Compiling ‘stm32l1xx_hal_adc.c’
3> Compiling ‘stm32l1xx_hal.c’
4> Compiling ‘stm32l1xx_hal_adc_ex.c’
1> Compiling ‘stm32l1xx_hal_dma.c’
2> Compiling ‘stm32l1xx_hal_gpio.c’
3> Compiling ‘stm32l1xx_hal_i2c.c’
4> Compiling ‘stm32l1xx_hal_pwr.c’
1> Compiling ‘stm32l1xx_hal_pwr_ex.c’
2> Compiling ‘stm32l1xx_hal_rcc.c’
3> Compiling ‘stm32l1xx_hal_rcc_ex.c’
1> Compiling ‘stm32l1xx_hal_rtc_ex.c’
4> Compiling ‘stm32l1xx_hal_rtc.c’
2> Compiling ‘stm32l1xx_hal_spi.c’
1> Compiling ‘stm32l1xx_hal_uart.c’
3> Compiling ‘stm32l1xx_hal_spi_ex.c’
2> Compiling ‘stm32l1xx_hal_cortex.c’
4> Compiling ‘stm32l1xx_hal_usart.c’
1> Compiling ‘utilities.c’
3> Compiling ‘sysIrqHandlers.c’
2> Compiling ‘LoRaMac.c’
4> Compiling ‘LoRaMacCrypto.c’
1> Compiling ‘Region.c’
3> Compiling ‘RegionAS923.c’
2> Compiling ‘RegionAU915.c’
4> Compiling ‘RegionCommon.c’
1> Compiling ‘RegionEU868.c’
3> Compiling ‘RegionIN865.c’
2> Compiling ‘RegionKR920.c’
4> Compiling ‘RegionUS915.c’
1> Compiling ‘RegionUS915-Hybrid.c’
3> Compiling ‘lis3dh.c’
2> Compiling ‘sx1276.c’
4> Compiling ‘adc.c’
1> Compiling ‘delay.c’
3> Compiling ‘fifo.c’
2> Compiling ‘gpio.c’
4> Compiling ‘gps.c’
1> Compiling ‘i2c.c’
3> Compiling ‘timer.c’
2> Compiling ‘uart.c’
4> Compiling ‘aes.c’
1> Compiling ‘cmac.c’
1> Generating linker script ‘ping-pong.ld’
1> Linking ping-pong.elf
Build complete

Es wurden dabei keinerlei Einstellungen verändert. Ich war erstaunt wie 
gut die das mittlerweile hin kriegen.
Gast #5316925
Lesenswert?

M. L. schrieb:
> "C:\Program Files (x86)\GNU Tools ARM Embedded\7
> 2017-q4-major\bin/arm-none-eabi-g++"

kannst du nicht lesen? Warum willst du Crossworks dazu zwingen mit einer 
fremden Toolchain zu arbeiten. Meine Kritik an dir bestätigt sich. Das 
was du uns sagst ist nicht das was du machst. Schade um die Zeit.
Gast #5317115
Lesenswert?

Til S. schrieb:
> Bei Embedded Studio kannst du aber ein Keil Projekt
> importieren.

Komm, das habt ihr auch bloß von Crossworks übernommen... Ist in den 3.x 
Versionen auch schon drin. Das Importieren dieses Keil-Projektes haben 
jetzt schon 2 User hier probiert mit positiven Ergebnis. Nur M. Lauer 
macht irgendwas was er uns nicht verrät, das aber alles durcheinander 
bringt.

Ich nehme mal an er hat das Toolchain Root, das normalerweise auf 
'$(StudioDir)/gcc/$(GCCTarget)/bin' steht, auf seine C:\Program Files 
(x86)\GNU Tools ARM Embedded umgebogen. Damit kann es nicht gehen und 
wenn er das im Embedded Studio macht (wo diese Option sicher genauso 
drin ist), wird er auch damit keinen Erfolg haben.
(Firma: SEGGER) #5317338
Lesenswert?

temp schrieb:
> Komm, das habt ihr auch bloß von Crossworks übernommen... Ist in den 3.x
> Versionen auch schon drin. Das Importieren dieses Keil-Projektes haben
> jetzt schon 2 User hier probiert mit positiven Ergebnis. Nur M. Lauer
> macht irgendwas was er uns nicht verrät, das aber alles durcheinander
> bringt.

Ha ha...da bin ich unserem eigenem Marketing erlegen ;-). War mir nicht 
bewusst, dass es da auch schon drin war.

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