erik_wolfram
14.12.2015, 15:35
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?!
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?!