Forum: Digitale Signalverarbeitung / DSP / Machine Learning Dummy Handle bei for-Schleife mit size 8000


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Daniel X. (ddmw)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich versuche gerade einen Algorithmus zu programmieren.

Nachfolgend ein Teil der Berechnung:

  int sample_size=8000;
  int dateisize=8000;
  int a[sample_size];
  int y[sample_size];
  /* Initialize the SAM system. */

  memset(a,0,sample_size);
  memset(y,0,sample_size);

  int c = 0;

  int N[dateisize-1]; //double N[dateisize - 1] = {0};
  // N=SUMME_K=1(w(k))  w(k)=(i(k)-i(k-1)+j(k)-j(k-1))
  int N_SUMME = 0;

  for (int i = 1; i < dateisize; i++) { //dateisize

    N[i] =(a[i] - a[i - 1] + y[i] - y[i-1]);
    N_SUMME = N_SUMME + N[i];

  }

Ich benutze einen ATSAM4S16C Xplained Board Cortex M4. Ich bekomme einen 
Dummy Handler an der stelle mit der for-Schleife und ich weis einfach 
nicht wieso.

Ich habe einen size von 8000, wenn ich diesen auf 100 stelle, 
funktioniert es ohne den Dummy Handler.

Bei Visual Studio funktioniert es...

Vielleicht habt Ihr mir einen Tipp.


Viele dank


Grüße

DDMW

von A. S. (achs)


Bewertung
0 lesenswert
nicht lesenswert
Welche Sprache?
Wieviel RAM?
Sind die Arrays auf dem Stack? Wenn ja, wie groß ist der?

von g457 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> Vielleicht habt Ihr mir einen Tipp.

Zu verschwenderisch mit Speicher.

von Daniel X. (ddmw)


Bewertung
0 lesenswert
nicht lesenswert
Mit Atmel Studio also C

Bin mir gerade nicht sicher wo die Arrays legen, habe gedacht die werden 
immer sofort in den RAM gelegt.

Der SAM4S16C hat 128kbyte RAM

von g457 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> Der SAM4S16C hat 128kbyte RAM

Und wieviel davon hast Du schon verschwendet?

von Daniel X. (ddmw)


Bewertung
0 lesenswert
nicht lesenswert
Nach dem erstellen habe ich:

Program Memory Usage   :  100524 bytes   9,6 % Full
Data Memory Usage     :78752 bytes   60,1 % Full

Theoretisch habe ich bei einem Array von (8000*(int 32bit))/8=32000Bytes

Für das Array a = 32000 und y = 32000 als auch N = 32000

-> 96000 Bytes ohne den restlichen Ram

Oder ?

von Dergute W. (derguteweka)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

Daniel W. schrieb:
> int dateisize=8000;

Daniel W. schrieb:
> int N[dateisize-1]; //double N[dateisize - 1] = {0};

Hmm - und diese 2 Zeilen hintereinander in einem C Programm frisst dein 
Compiler so ganz kommentarlos und ohne Mecker? Da hab' ich doch leichte 
Zweifel...

Gruss
WK

von Stefan E. (sternst)


Bewertung
0 lesenswert
nicht lesenswert
Dergute W. schrieb:
> Hmm - und diese 2 Zeilen hintereinander in einem C Programm frisst dein
> Compiler so ganz kommentarlos und ohne Mecker? Da hab' ich doch leichte
> Zweifel...

Nennt sich "variable-length arrays" und ist seit C99 im Standard.

von MUC (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo

  int dateisize=8000;
  ...
  int N[dateisize-1]; //double N[dateisize - 1] = {0};
  ...
  for (int i = 1; i < dateisize; i++) { //dateisize

    ...
    N_SUMME = N_SUMME + N[i];
  }

Größe von N ist 7999. Der letzte gültige Index ist somit 7998.
In der Schleife erfolgt der letzte Zugriff aber auf 7999!

Beitrag #4964375 wurde von einem Moderator gelöscht.
Beitrag #4964378 wurde von einem Moderator gelöscht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.