logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[STM32F4][C/TrueSTUDIO] - Nowy projekt - error przy kompilacji

nitka91 30 Kwi 2014 00:47 2142 8
REKLAMA
  • #1 13555625
    nitka91
    Poziom 9  
    Posty: 8
    Witam.
    Zacznę może od faktu, że jestem bardzo początkująca w tej dziedzinie i pewnie pytanie okaże się banalne. Posiadam płytkę STM32F4 Discovery i środowisko Atollic TruSTUDIO. Za jego pomocą wgrałam do mikrokontrolera przykładowy program ze strony STM, standardowe miganie diod, wszystko ładnie działa.
    Problem pojawia się przy tworzeniu nowego projektu. Moje postępowanie:
    Embedded C Project-> wybór CortexM4 ->Debug Probe ST-Link (reszta ustawień domyślnie) -> stworzenie projektu.
    Przy próbie debuggowania pojawia się niestety problem:

    c:/program files (x86)/atollic/truestudio for arm lite 5.0.0/armtools/bin/../lib/gcc/arm-atollic-eabi/4.7.3/../../../../arm-atollic-eabi/bin/ld.exe:..\template_CortexM_flash.ld:34: syntax error
    collect2.exe: error: ld returned 1 exit status


    Gdzie powinnam szukać błędu, czego on dotyczy?
    Bardzo proszę o pomoc.
  • REKLAMA
  • #2 13555804
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Cześć:
    nitka91 napisał:
    template_CortexM_flash.ld:34: syntax error
    Pokaż ten skrypt linkera.
    Czy wybrałaś konkretny model mikrokontrolera w ustawieniach projektu?
    Możesz załączyć projekt do wglądu?
  • REKLAMA
  • #3 13556759
    nitka91
    Poziom 9  
    Posty: 8
    template_CortexM_flash.ld

    /*
    *****************************************************************************
    **
    **  File        : template_flash.ld
    **
    **  Abstract    : Template linker script for generic Cortex-M devices.
    **
    **                Set heap size, stack size and stack location according
    **                to application requirements.
    **
    **                Set memory bank area and size if external memory is used.
    **
    **  Target      : Generic Cortex-M devices
    **
    **  Environment : Atollic TrueSTUDIO(R)
    **
    **  Distribution: The file is distributed “as is,” without any warranty
    **                of any kind.
    **
    **  (c)Copyright Atollic AB.
    **  You may use this file as-is or modify it according to the needs of your
    **  project. This file may only be built (assembled or compiled and linked)
    **  using the Atollic TrueSTUDIO(R) product. The use of this file together
    **  with other tools than Atollic TrueSTUDIO(R) is not permitted.
    **
    *****************************************************************************
    */
    
    /* Entry Point */
    ENTRY(Reset_Handler)
    
    /* Highest address of the user mode stack */
    /* Please update “0x???” according to your system requirements */
    _estack = 0x???;    /* end of RAM */
    
    /* Generate a link error if heap and stack don't fit into RAM */
    /* Please update “0x???” according to your system requirements */
    _Min_Heap_Size = 0x???;    /* required amount of heap  */
    _Min_Stack_Size = 0x???;   /* required amount of stack */
    
    /* Specify the memory areas */
    /* Please update “0x???” according to your hardware and system requirements.
    ** Note! MEMORY_B1 is only needed if system requires some code/data to be 
    ** placed at special memory location. MEMORY_B1 specification can be removed if 
    ** not needed. In that case also remove MEMORY_B1 section at the end of this 
    ** file. Additional memory sections can also be added here.   
    */
    MEMORY
    {
      FLASH (rx)      : ORIGIN = 0x???, LENGTH = ???K
      RAM (xrw)       : ORIGIN = 0x???, LENGTH = ???K
      MEMORY_B1 (rx)  : ORIGIN = 0x???, LENGTH = ???K
    }
    
    /* Define output sections */
    SECTIONS
    {
      /* The startup code goes first into FLASH */
      .isr_vector :
      {
        . = ALIGN(4);
        KEEP(*(.isr_vector)) /* Startup code */
        . = ALIGN(4);
      } >FLASH
    
     /* The program code and other data goes into FLASH */
      .text :
      {
        . = ALIGN(4);
        *(.text)           /* .text sections (code) */
        *(.text*)          /* .text* sections (code) */
        *(.glue_7)         /* glue arm to thumb code */
        *(.glue_7t)        /* glue thumb to arm code */
        *(.eh_frame)
    
        KEEP (*(.init))
        KEEP (*(.fini))
    
        . = ALIGN(4);
        _etext = .;        /* define a global symbols at end of code */
      } >FLASH
    
      /* Constant data goes into FLASH */
      .rodata :
      {
        . = ALIGN(4);
        *(.rodata)         /* .rodata sections (constants, strings, etc.) */
        *(.rodata*)        /* .rodata* sections (constants, strings, etc.) */
        . = ALIGN(4);
      } >FLASH
    
      .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
      .ARM : {
      __exidx_start = .;
        *(.ARM.exidx*)
        __exidx_end = .;
      } >FLASH
    
      .preinit_array     :
      {
        PROVIDE_HIDDEN (__preinit_array_start = .);
        KEEP (*(.preinit_array*))
        PROVIDE_HIDDEN (__preinit_array_end = .);
      } >FLASH
      .init_array :
      {
        PROVIDE_HIDDEN (__init_array_start = .);
        KEEP (*(SORT(.init_array.*)))
        KEEP (*(.init_array*))
        PROVIDE_HIDDEN (__init_array_end = .);
      } >FLASH
      .fini_array :
      {
        PROVIDE_HIDDEN (__fini_array_start = .);
        KEEP (*(SORT(.fini_array.*)))
        KEEP (*(.fini_array*))
        PROVIDE_HIDDEN (__fini_array_end = .);
      } >FLASH
    
      /* used by the startup to initialize data */
      _sidata = LOADADDR(.data);
    
      /* Initialized data sections goes into RAM, load LMA copy after code */
      .data :
      {
        . = ALIGN(4);
        _sdata = .;        /* create a global symbol at data start */
        *(.data)           /* .data sections */
        *(.data*)          /* .data* sections */
    
        . = ALIGN(4);
        _edata = .;        /* define a global symbol at data end */
      } >RAM AT> FLASH
    
      /* Uninitialized data section */
      . = ALIGN(4);
      .bss :
      {
        /* This is used by the startup in order to initialize the .bss secion */
        _sbss = .;         /* define a global symbol at bss start */
        __bss_start__ = _sbss;
        *(.bss)
        *(.bss*)
        *(COMMON)
    
        . = ALIGN(4);
        _ebss = .;         /* define a global symbol at bss end */
        __bss_end__ = _ebss;
      } >RAM
    
      PROVIDE ( end = _ebss );
      PROVIDE ( _end = _ebss );
    
      /* User_heap_stack section, used to check that there is enough RAM left */
      ._user_heap_stack :
      {
        . = ALIGN(4);
        . = . + _Min_Heap_Size;
        . = . + _Min_Stack_Size;
        . = ALIGN(4);
      } >RAM
    
      /* MEMORY_bank1 section, code must be located here explicitly            */
      /* Example: extern int foo(void) __attribute__ ((section (".mb1text"))); */
      .memory_b1_text :
      {
        *(.mb1text)        /* .mb1text sections (code) */
        *(.mb1text*)       /* .mb1text* sections (code)  */
        *(.mb1rodata)      /* read-only data (constants) */
        *(.mb1rodata*)
      } >MEMORY_B1
    
      /* Remove information from the standard libraries */
      /DISCARD/ :
      {
        libc.a ( * )
        libm.a ( * )
        libgcc.a ( * )
      }
    
      .ARM.attributes 0 : { *(.ARM.attributes) }
    }
    

    1.jpg - screen z wyboru mikrokontrolera
    Załączniki:
    • [STM32F4][C/TrueSTUDIO] - Nowy projekt - error przy kompilacji 1.jpg (68.42 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Test1.rar (3.52 MB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #4 13556820
    mi14chal
    Poziom 28  
    Posty: 1021
    Pomógł: 112
    Ocena: 23
    Przeczytaj dokładnie co tutaj jest napisane szczególnie to co pogrubiłem:
    Cytat:

    /* Highest address of the user mode stack */
    /* Please update “0x???” according to your system requirements */
    _estack = 0x???; /* end of RAM */

    /* Generate a link error if heap and stack don't fit into RAM */
    /* Please update “0x???” according to your system requirements */
    _Min_Heap_Size = 0x???; /* required amount of heap */
    _Min_Stack_Size = 0x???; /* required amount of stack */

    /* Specify the memory areas */
    /* Please update “0x???” according to your hardware and system requirements.
    ** Note! MEMORY_B1 is only needed if system requires some code/data to be
    ** placed at special memory location. MEMORY_B1 specification can be removed if
    ** not needed. In that case also remove MEMORY_B1 section at the end of this
    ** file. Additional memory sections can also be added here.
    */

    MEMORY
    {
    FLASH (rx) : ORIGIN = 0x???, LENGTH = ???K
    RAM (xrw) : ORIGIN = 0x???, LENGTH = ???K
    MEMORY_B1 (rx) : ORIGIN = 0x???, LENGTH = ???K
    }
  • #5 13556825
    nitka91
    Poziom 9  
    Posty: 8
    Ok, postaram się coś z tym zrobić, dziękuję :) Dam znać czy mi wyszło.
  • REKLAMA
  • #6 13556848
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    nitka91 napisał:
    screen z wyboru mikrokontrolera
    Procesor nie może być GENERIC. Powinnaś wybrać konkretny :) Wtedy ręczna modyfikacja linker -skryptu nie będzie konieczna.
    Załóż projekt od nowa, wybierz właściwy MCU.
  • #7 13557168
    nitka91
    Poziom 9  
    Posty: 8
    Ale Generic jest Microcontroller family, tam chyba nie było innej opcji.
  • Pomocny post
    #8 13557483
    el2010tmp
    Poziom 25  
    Posty: 713
    Pomógł: 97
    Ocena: 43
    nitka91 napisał:
    Problem pojawia się przy tworzeniu nowego projektu. Moje postępowanie:
    Embedded C Project-> wybór CortexM4 ->Debug Probe ST-Link (reszta ustawień domyślnie) -> stworzenie projektu.


    Nowy projekt:
    Embedded C Project
    - Vendor: STMicroelecronics
    - Evaluation board:STM32F4_Discovery
    reszta domyślnie.
    Masz wówczas skonfigurowane wszystko co trzeba do zabawy z stm32f4-discovery.
    Na grzebanie w skryptach przyjdzie czas później :)
    [STM32F4][C/TrueSTUDIO] - Nowy projekt - error przy kompilacji
  • #9 13559635
    nitka91
    Poziom 9  
    Posty: 8
    Już buduje się bez błędów :) Dziękuję :)

Podsumowanie tematu

✨ Użytkownik, początkujący w programowaniu mikrokontrolerów, napotkał błąd kompilacji podczas tworzenia nowego projektu w Atollic TrueSTUDIO dla płytki STM32F4 Discovery. Problem dotyczył skryptu linkera, który generował błąd składniowy. Użytkownicy zasugerowali, aby upewnić się, że wybrano konkretny model mikrokontrolera zamiast opcji "GENERIC", co mogło być przyczyną problemu. Po dostosowaniu ustawień projektu do odpowiedniego modelu, użytkownik potwierdził, że projekt buduje się bez błędów.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA