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.
Wenn Du mit der Toolchain noch nicht festliegst: EmBitz hat einen gut funktionierenden Import für CoIDE-Projekte.
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.
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" />
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.
@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.
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.
Klaro kann ich das Github-Projekt nennen: https://github.com/RAKWireless/RAK811_BreakBoard Ich habe die KEIL Version in CrossStudio importiert. Das ist die dazugehörige Hardware https://www.aliexpress.com/item/RAK811-LoRa-Tracker-Board-MAX-7Q-GPS-Module-and-MEMS-Sensor-Wireless-Remote-Positioning-Solution-LoRaWAN/32844470946.html
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.
Ok, cool. Versuche ich gleich morgen?? Sorry, aber ich dachte, dass ich wie beim Keil auch das Linkfile brauche.
Stefan schrieb: > Nachdem ich als > "Additional output format) ".bin" eingestellt hatte Also genau das was ich ganz oben auch schon vorgeschlagen habe...
@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
Hier stimmt der Startup nicht mit dem LD File überein. Weiterhin werden die Syscalls der Newlib verwendet, und es fehlt hier die entsprechende Datei im Projekt.
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.
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.
Du könntest auch Embedded Studio anstatt CrossWorks nehmen: https://www.segger.com/products/development-tools/embedded-studio/ Ist im Prinzip das gleiche Produkt, weil Embedded Studio auf CrossWorks basiert. Bei Embedded Studio kannst du aber ein Keil Projekt importieren. Vielleicht macht es das für dich einfacher.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.