- LiFePO4 Speicher Test         
Ergebnis 1 bis 5 von 5

Thema: Fehler = "undefined reference to `memcpy' - Array zu gross (STM32F103RB)?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Hallo
    Die Initialisierung sollte aber generell funktionieren.

    Es gibt einen sogenannten Startup Code bei "C" der sorgt dafür, dass die initialisierten Variablen auch entsprechend gesetzt werden.
    Bei meinem Compiler heisst die z.B. Datei cr_startup_lpc17x_6x.c

    Wie die bei Dir heisst, weis ich nicht,

    Eventuell ist es in deinem Projekt bei den Optionen des Compiler oder Linker ausgeschaltet.
    "Generate Startup Code" Häkchen draussen oder so.

    Bei mir sieht das in der Datei so aus:

    Die Funktion data_init sorgt für das kopieren der Startupdaten aus dem Flash in den RAM Bereich
    die untere Funktion bss_init setzt alle Variablen auf 0

    !!!! Nicht erschrecken, darum must Du Dich normalerweise NIE kümmern. Dieser Code für deine Controller
    wird normalerweise mitgeliefert und wird nur ähnlich aussehen:
    Code:
    Beispiel aus meinem Projekt: 
    
    //*****************************************************************************
    // Functions to carry out the initialization of RW and BSS data sections. These
    // are written as separate functions rather than being inlined within the
    // ResetISR() function in order to cope with MCUs with multiple banks of
    // memory.
    //*****************************************************************************
    __attribute__ ((section(".after_vectors")))
    void data_init(unsigned int romstart, unsigned int start, unsigned int len) {
        unsigned int *pulDest = (unsigned int*) start;
        unsigned int *pulSrc = (unsigned int*) romstart;
        unsigned int loop;
        for (loop = 0; loop < len; loop = loop + 4)
            *pulDest++ = *pulSrc++;
    }
    
    __attribute__ ((section(".after_vectors")))
    void bss_init(unsigned int start, unsigned int len) {
        unsigned int *pulDest = (unsigned int*) start;
        unsigned int loop;
        for (loop = 0; loop < len; loop = loop + 4)
            *pulDest++ = 0;
    }
    Ich habe grade mal folgendes probiert, OHNE string.h
    Code:
    typedef struct
    {
      char          name[10];
      unsigned char alter;
    } tPerson;
    
    tPerson person[3] =
    {
      { "Anton", 20 },
      { "Berta", 30 },
      { "Cesar", 187}
    };
    
    int main(void)
    {
      person[0].name[1] = 'X';   // testweise ändere ich hier den 2. Buchstaben in ein X
    Die Struktur wird ordnungsgemäß initialisiert.

    Das sehe ich jetzt am Debuggerfenster:
    Ich habe nur die eine Zeile ausgeführt, aber es ist schon alles richtig initialisiert. Aus "Anton" wurde "AXton"
    Die anderen Teile sind auch alle richtig inititialisert, habe ich mir grade angesehen.

    Klicke auf die Grafik für eine größere Ansicht

Name:	Anton.jpg
Hits:	9
Größe:	79,7 KB
ID:	34183

    Siro

    [EDIT]
    gefunden auf dieser Seite:
    http://stefanfrings.de/stm32/stm32f1.html
    Startup-Code

    Im Gegensatz zu allen mir bekannten Compilern für 8bit Mikrocontroller befindet sich der Startup-Code und die Interrupt-Vektor Tabelle in editierbaren Dateien (sysmem.c und startup_stm32.s). Der Projekt-Assistent in der IDE legt diese Dateien automatisch an. Für erste Versuche kann man sie unverändert benutzen.

    Dein Startup Code scheint in Assembler geschrieben zu sein und befindet sich wohl in der Datei startup_stm32.s

    ich habe aber auch noch diese hier gefunden, hier ist der Startup Code in "C"
    https://jacobmossberg.se/posts/2018/...c-startup-code

    Du must mal schauen wie das in deinem System/Entwicklngsumgebung gemacht wird.
    Ich vermute, dass bei Dir lediglich Einstellungen für das Projekt angepasst werden müssen.
    Geändert von Siro (05.06.2019 um 23:56 Uhr)

Ähnliche Themen

  1. undefined reference to `main' ?
    Von robots4-ever im Forum Arduino -Plattform
    Antworten: 4
    Letzter Beitrag: 15.04.2013, 10:02
  2. [ERLEDIGT] undefined reference to...
    Von lineage im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 03.02.2011, 17:38
  3. Fehler beim linken "undefined reference to..."
    Von Befedo im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 21.05.2010, 22:20
  4. undefined reference to ...
    Von Bääääär im Forum C - Programmierung (GCC u.a.)
    Antworten: 15
    Letzter Beitrag: 05.08.2007, 07:01
  5. "undefined reference" bei AVRStudio
    Von BlueEagle im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 17.08.2006, 16:52

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test