Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Stacküberlauf, die 2. Kategorie: Programmierung (von André H. - 19.07.2006 14:43)
Als Antwort auf Stacküberlauf, die 2. von Erich - 19.07.2006 13:58
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0, OSOPT V3.1
So Erich,

langsam reichts mir !!
So etwas, wie Netiquette sagt Dir sicher nichts.
Denn dann würdest Du nicht unzählige neue Threads zum selben Thema aufmachen.
Deshalb habe ich dieses Posting auch in einen vorhandenen Thread verschoben.
Jetzt können sich ein paar Kunden bei Dir bedanken, da� ihre Bestellungen
heute nichtmehr rausgehen, da ich im Forum posten muÃ?!

Ich habe Dein gemailtes Programm gestern Abend auf eine Unit geladen.
Es lief über Nach auch am Morgen noch einwandfrei ohne irgendwelche �nderungen
der Geschwindigkeit, ohne irgendein Aufhängen oder anderer Dinge.
Hier nochmal Dein Programm:

//------------
  thread main
//------------
{
 int i, bool;
 string s;
 long z;
 lcdext.init();
 i = 0;
 bool = 0;

 plm.settimebase(0,0);
 plm.setmode(0,0);
 plm.setperiod(0,3000);

 plm.settimebase(1,0);
 plm.setmode(1,0);
 plm.setperiod(1,3000);

 plm.settimebase(2,0);
 plm.setmode(2,0);
 plm.setperiod(2,3000);

 loop
 {
  if i >= 3000
    bool = 1;
  if i <= 0
    bool = 0;

  if bool == 0
    i = i + 50;
  if bool == 1
    i = i - 50;

  plm.out(1, i);
  plm.out(0, i);
  plm.out(2, i);

  s="";
  str.putlong(s, ports.getcount(1));
  lcdext.goto(1,0);
  lcdext.print(s);
  lcdext.goto(2,0);
  lcdext.print("Trallala");
  sleep 500;
  lcdext.clear();

  s="";
  str.putlong(s, ports.getcount(2));
  lcdext.goto(1,0);
  lcdext.print(s);
  lcdext.goto(2,0);

  lcdext.print("  und  ");
  sleep 500;
  lcdext.clear();

  s="";
  str.putlong(s, ports.getcount(3));
  lcdext.goto(1,0);
  lcdext.print(s);
  lcdext.goto(2,0);
  lcdext.print("Hoppsasa");
  sleep 500;
  lcdext.clear();
 }
 quit 1;
}


Ich habe nur ein quit 1; nach der Schleife eingefügt, um erkennen zu können,
falls die Schleife verlassen wird, was erwartungsgemä� nicht geschehen ist.
Ã?brigens kann man das Programm noch um einiges kompakter und optimierter schreiben.

Ich glaube Dein Hauptproblem liegt immernoch im Ignorieren sämtlicher Dokumentation.
Prüfe daher bitte einmal, ob Du vielleicht mehrere Softwareversionen der Module, der IDE
und HEX-Dateien gemischt hast.
Denn das wäre der einzige Grund, warum es z.B. zu einem Stackunderflow oder
Stackoverflow kommen könnte, wenn die Einsprungadressen von älteren Modulen
zu neueren HEX-Dateien oder von neueren Modulen zu älteren HEX-Dateien genutzt.

D.h. in Deinem Fall, daÃ? Du folgende Schritte jetzt vornimmst:
- Deinstalliere die IDE
- Lade die aktuelle IDE mit SP herunter und installieren diese
- Lade nun alle Module herunter, die seit erscheinen des letzten SP erschienen sind
  und kopiere diese entsprechend in die Lib-und UserLib-Verzeichnisse
- Lade Dir OSOPT V3.1b1 herunter und lade es mit dem CC2Net.de-Download-Tool in die CC2.
- Lade nun sys0002.hex mit vorherigen Löschen von Segment 3 in die CC2.

Wenn Du das geschafft hast, reden wir weiter.

Was den Stack angeht, so kannst Du hier nichts konfigurieren.
Der komplette restliche RAM, der nicht für Globale Variablen verwendet wird, wird als Stack verwendet.

Und was Du jetzt mit den Long-Variablen hast, kann ich auch nicht verstehen.
Long-Variablen haben einen 32Bit Bereich. Und hier gibt es keine Probleme.
Du muÃ?t nur eine Kleinigkeit beachten, wenn Du Integer und Long-Berechnungen mischt.
Aber das steht auch in den FAQ.

Und, um es nochmal klipp und klar zu sagen:
Die einzigen Bugs, die die CC2 derzeit hat, liegen im Bereich von HWCOM
beim Empfang sehr gro�er Datenmengen an einem Stück.
Aber selbst das tritt nur sehr selten in Einzelfällen auf, so da� ich das nur sehr schwer reproduzieren kann.
Ansonsten sind keinerlei anderen Bugs bekannt.
Meinst Du nicht, da� solche Dinge, die Du beschreibst, nicht auch anderen auffallen müssten ??
Jedoch gab es in den letzten 6 Jahren keine einzige solche Meldung.
Dabei sei noch angemerkt, da� viele Programme grö�er 50kB VM-Code sind.
Ich habe auch einige eigene und auch Kundenprojekte, die sogar über 100kB VM-Code,
unzähle Threads haben und sehr viel RAM benötigen.

Aber solange Du so voreingenommen auftrittst, daÃ? "Du unfehlbar bist und es
nur am System/Controller liegen kann", kann Dir kein Mensch mehr helfen.


Und nochetwas, weiÃ?t Du warum ich in meiner Signatur stehen habe, daÃ? ich
auf keine Mails von Forenpostings antworte ?
Denn sonst hätte ich den gesamten Tag nichts anderes mehr zu tuen, au�er
auf Mails zu antworten..


Also, bevor noch weitere Postings von Dir kommen, die angebliche Bugs der CC2
zeigen sollen, die einfach nicht existieren, prüfe ersteinmal alles andere.
Denn ich arbeite tagtäglich mit der CC2, habe bei vielen Kundenprojekten mitgewirkt
und betreue auch einiges an Software.
Meinst Du nicht, daÃ? ein solcher nicht existierender Bug, wie Du ihn beschreibst,
mir irgendwie in den letzten Jahren aufgefallen wäre ??


André



> Also nachdem mir ein Mikrocontrollerfachmann den Tipp gegeben hatte, alle unnötigen Variablen
> (also die, die eigentlich der Lesbarkeit dienen und für den gleichen Wert an mehreren Stellen sorgen)
> rauszuschmeiÃ?en, weil alles auf einen Stack-Ã?berlauf hindeutet - vor allem, dass das Programm
> weiterkommt, seit ich das gemacht habe, bestätigt dies. Da es sich um ein multithreading-System
> handelt, ist jedem thread ja eine default-Grö�e zugeordnet. Ich habe sinnigerweise aber nur einen
> thread und von daher wäre es schön, wenn mir jemand sagen könnte, wie ich die "stack size"
> erhöhe.
>
> In meinem kleinen Testprogramm wird die loop-Routine ja immer langsamer und hängt sich zum
> Schluss auf:
> auch ein Zeichen.
> Da dort aber nicht so viele Variablen vorkommen, führe ich das auf einen Bug zurück.
> Die Pulsereien gehen einzeln. Allerdings geht das irgendwann schief, sobald das Display dazukommt.
> Im Moment bin ich am Testen: ich lasse eine long-Variable hochzählen und ausgeben.
> Interessant ist, dass long bei CC2 von -32768 bis 32767 geht :) So ein Quatsch ;)


Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

so, Auftrag ausgeführt, nun können wir weiterreden (von Erich - 20.07.2006 10:10)
    Fa. Conrad hat auch keine Probleme mit meinem Testprogramm (von Erich - 21.07.2006 15:34)
        Fazit (von Erich - 23.07.2006 13:49)
            Re: Fazit (von André H. - 23.07.2006 21:53)
                Re: Fazit (von Erich - 23.07.2006 23:20)
                Re: Fazit (von wema - 23.07.2006 22:38)
                    Re: Fazit (von Erich - 23.07.2006 23:21)
                       Vorsichtige Frage.... (von Erich - 27.07.2006 18:27)
                          mm - ganz vergessen (von Erich - 27.07.2006 18:31)
                             Erkenntnis :) (von Erich - 28.07.2006 11:50)
                             Re: mm - ganz vergessen (von Ingo - 28.07.2006 10:49)
                                Re: mm - ganz vergessen (von Erich - 28.07.2006 11:04)
                                   Re: mm - ganz vergessen (von Ingo - 28.07.2006 11:55)
                                     Re: mm - ganz vergessen (von Erich - 28.07.2006 12:41)
                                       Re: mm - ganz vergessen (von Ingo - 28.07.2006 13:07)
                                         Re: mm - ganz vergessen (von Erich - 28.07.2006 16:06)
                                           Re: mm - ganz vergessen (von Ingo - 28.07.2006 19:22)
                                             Re: mm - ganz vergessen (von Erich - 28.07.2006 20:24)
                                               ach ja, P12 :) (von Erich - 28.07.2006 20:57)
                                                 Re: ach ja, P12 :) (von Ingo - 29.07.2006 12:13)
Re: Stacküberlauf, die 2. (von Erich - 19.07.2006 15:33)
Re: Stacküberlauf, die 2. (von Erich - 19.07.2006 15:33)
    Ich sach ja - Konzentrationsschwäche :) (von Erich - 19.07.2006 20:03)
Re: Stacküberlauf, die 2. (von Martin - 19.07.2006 15:03)