-
        

Ergebnis 1 bis 4 von 4

Thema: STM32F407, CooCox und große Char-Arrays machen Probleme.

  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    405

    STM32F407, CooCox und große Char-Arrays machen Probleme.

    Anzeige

    Hallo,

    ich komme gut voran mich mit dem STM anzufreunden. Ich habe schon einiges zum Laufen bekommen und wollte "nur mal eben" einen Buffer für die Datenübergabe vergrößern und bin auf ein Fehlverhalten gestoßen. Die Daten werden falsch, oder garnicht übertragen, bzw. der Controller verhält sich komplett seltsam.
    Zur Vereinfachung habe ich das Programm auf USART abgespeckt und einen char-Array mit einem Text initialisiert. Diesen gebe ich dann per USART an den PC aus. Bis ca. 1950 Elemente klappt das ganze, danach nicht mehr´... mit Optimierung erhöht sich das ganze minimal.
    Der STM32F407 hat 192 kByte RAM und 1MB Flash - ich kann mir schwer vorstellen, dass ich dort an Grenzen stoße ?!

    char RxBuffer[1950] = "Hallo Welt! Die ....
    for( i = 0; i < 1950; i++ )
    usart_sendChar(RxBuffer[i]);


    Beim Complieren mit CooCox erhalte ich die folgenden Werte:

    text 4216
    data 16
    bss 2048
    6280 dec
    hex 1888

    Kann mir bitte mal jemand einen kleinen Denkanstoß geben wo der Fehler liegt oder worauf ich achten muss?
    In der jetztigen Anwendung benötige ich zwei char-Buffer bis zu 8192 Bytes (chars) - deshalb gibt es für mich keine Möglichkeit das zu umgehen.

    Gruß Erik


    [EDIT] Wenn ich den Array außerhalb der Funktion definiere funktioniert es! Thema kann gelöscht werden?!
    Geändert von erik_wolfram (14.12.2015 um 16:27 Uhr)
    Meine Projekte auf Youtube

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    599
    Zitat Zitat von erik_wolfram Beitrag anzeigen
    [EDIT] Wenn ich den Array außerhalb der Funktion definiere funktioniert es! Thema kann gelöscht werden?!
    Na, immerhin hast Du auf diese Weise, wenn auch ohne es zu ahnen, gelernt was ein stack overflow ist.


    ====
    Der RAM ist in verschiedene Bereiche eingeteilt, u.a. für globale Variablen, den Stack und den Heap. Wenn das Array außerhalb der Funktion liegt, ist es bei den globalen Variablen gespeichert. Parameter und lokale Variablen von Funktionen landen dagegen auf dem Stack. Der hat in den Compilereinstellungen eine feste Größe. Mit dem großen Array läuft er wahrscheinlich über, dann benimmt sich das Programm so eigenartig.

  3. #3
    Unregistriert
    Gast
    wo ist denn die Grenze innerhalb einer Funktion?
    Und wie könnte man das Problem umgehen?
    Wenn ich also das array global definiere würde es gehen? ODer muss der Aufruf auch außerhalb der Funktion sein!?

  4. #4
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    405
    Ich denke, dass ist abhängig von der verwendeten Programmier-Umgebung.

    Umgehen: Global definieren, auch wenn man die Variable/Array nur in einer Funktion nutzt - also der Aufruf innerhalb der Funktion ist kein Problem!

    Gruß Erik
    Meine Projekte auf Youtube

Ähnliche Themen

  1. LCD - Char übersenden ; Probleme mit _delay_ms();
    Von CsMTEch im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 23.06.2014, 21:23
  2. char sprintf Probleme
    Von I_-_I---c im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 10.11.2013, 14:36
  3. Probleme über Variabel-Addressierung auf Flash-Char
    Von Nicy im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 12.01.2009, 19:17
  4. RS232 P. Fleury Char und String Probleme mal wieder
    Von PCMan im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 31.10.2007, 16:52
  5. Laufschrift aktualisieren, Probleme mit char*
    Von PCMan im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 20.07.2007, 14:01

Stichworte

Berechtigungen

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