Forum: Mikrocontroller und Digitale Elektronik Probleme mit M16c Monitor und großem Programm!


von Alex (Gast)


Lesenswert?

Hallo

Ich habe folgendes Problem mit M16c62 (M30626FHPFP)
Der Monitor läuft bei kleinen Programmen problemlos!
Aber wenn ich ein großes Programm rauflade bleibt der Monitor leer!
Was kann das sein?

Danke

von Jens M. (jensbert)


Lesenswert?

Hallo Alex,

vielleicht liegt es daran, dass sich Monitor und Anwendungsprogramm im
Speicher (wahrscheinlich im RAM) überlappen. Der M16C-Monitor belegt
gar nicht so wenig RAM, da er für die serielle Schnittstelle einen
recht üppigen Buffer bereichthält.

Die genauen Adressen sind vom Proz und von der Monitor-Version
abhängig, aber mit ca. 700Byte, die Dir verlorengehen, solltest Du
schon rechnen. Wenn der verwendete Monitor genau zum Proz passt, belegt
er die höchsten 3 256-Byte-Pages des RAMs.

Du schreibst, Du nutzt den 626er, hast also wohl bis zu 31kByte RAM,
wenn ich mich recht erinnere, jedenfalls im erweiterten Modus (PM13
gesetzt). Weiss das auch Dein Monitor - oder ist es der für den
Standard-Mode mit 15k?

Für NC30-User:
Das Problem ist, dass der Linker, der Deine Anwendung zusammenbaut, ja
von diesen Bereichen, die der Monitor benutzt, nichts weiss - den den
scheinbar vorhandenen und freien Speicher munter der Anwendung gibt.
Das Problem hat mich auch eine Weile verfolgt. Ich habe mir da so
geholfen, dass ich im sect30.inc der Applikation einen Block definiert
habe, der das Monitor-RAM belegt:

;---------------------------------------------------------------
; RAM-section of Monitor, to detect overlapping
;---------------------------------------------------------------
  .section  MONITORRAM,DATA
  .org  03d00h
  .blkb  00300h

Jetzt jammert der Linker, wenn die Applikation zuviel RAM benötigt und
in den Monitor-Bereich hineinwandert. Etwas ähnliches habe ich für den
ROM-Bereich des Monitors eingefügt. Außerdem verwende ich das Programm
Map Viewer, um bei 'seltsamen Erscheinungen' - denn so äußern sich
RAM-Überlappungen gern - einen Überblick über die Speicheraufteilung zu
gewinnen.

Gruß

Jens

von frank (Gast)


Lesenswert?

Hallo Jens,

wo finde ich das Programm Map Viewerr ?

Gruß Frank

von Alex (Gast)


Lesenswert?

Probiere es gleich mal!

von Alex (Gast)


Lesenswert?

Hat leider nicht gebracht! :-( :-(

von Alex (Gast)


Lesenswert?

"Du schreibst, Du nutzt den 626er, hast also wohl bis zu 31kByte RAM,
wenn ich mich recht erinnere, jedenfalls im erweiterten Modus (PM13
gesetzt). Weiss das auch Dein Monitor - oder ist es der für den
Standard-Mode mit 15k?"

Wie kann ich das dem Monitor sagen??
Danke

von Jens M. (jensbert)


Angehängte Dateien:

Lesenswert?

Hallo Frank,

der MapViewer wurde mit dem NC30 installiert - glaube ich. Ich habe die
Dateien, die vom Namen dazu passen, mal in ein ZIP-File getan und
angehängt. Hoffe, es klappt so. Die Hilfe funktioniert bei mir nicht,
ist aber auch nicht notwendig, mit ein wenig Spielen findet man heraus,
wie es geht. Tipp: Rechte Maustaste...

Hallo Alex,

der Monitor muss entsprechend assembliert sein, 'sagen' kann man es
ihm nicht. In diesem Thread
http://www.mikrocontroller.net/forum/read-1-172458.html#172458 liegt
der Monitor als Source vor. Da gibt es einen Parameter, der die
Speichergroesse festlegt. Wenn Du gar nicht zurechtkommst, versuche ich
Dir einen zu bauen. Aber dazu muss ich natürlich die diversen Parameter
kennen, mit denen Du Dein System betreibst.

Gruß

Jens

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

Memory MapView

von Jens M. (jensbert)


Lesenswert?

Hallo Alex,

sieht (leider) gut aus, jedenfalls, wenn Du PM13 gesetzt hast und über
den erweiterten Speicher verfügen kannst. Aber das kannst Du ja im KD30
ausprobieren.

Und egal, ob Dein Monitor für 15k oder für 31k parametriert ist, beide
Bereiche sind freigehalten.

Das einzige, das auffällt, ist der relativ kleine Stack - 768 Byte sind
nicht die Welt. Den könntest Du sicherlich noch etwas vergrößern - Platz
ist ja reichlich da.

Es scheint ja ein Webserver zu sein, den Du bauen möchtest. Ist das
Programm kontinuierlich gewachsen und hat dann irgendwann nicht mehr
funktioniert (was auf Speicherprobleme hindeuten könnte) oder hast Du
es als Block kompiliert und es tut einfach nicht, was es soll? Das kann
natürlich an 10000 Dingen liegen - ist Dir sicherlich auch klar.

Nebenbei: Ist das TCP/IP-Modul öffentlich? Wenn ja, wäre ich an den
Quellen interessiert. Ich habe uIP für den M16C portiert, läuft auch
prima (http://dl4aas.dyndns.org:8080), kann aber nicht mit mehr als
einem unbestätigten TCP-Paket pro Verbindung arbeiten. Und das begrenzt
die Datenrate doch sehr.

Gruß

Jens

von Alex (Gast)


Lesenswert?

Hallo Jens

Ich habe Fremdcode bekommen! Sieht aber sehr gut aus!

Wir können ja beide mal den gesamten Code tauschen!

Wie wäre das?

MFG
Alex

von Jens Mundhenke (Jensbert) (Gast)


Lesenswert?

Alex,

das können wir machen. Wenn ich zu Hause bin, packe ich mal alles
zusammen und sende es Dir. Du bist doch DER Alex mit der
alex10...-Adresse, oder?

Gruß

Jens

von Alex (Gast)


Lesenswert?

JA!

von Alex (Gast)


Lesenswert?

Hallo Jens

Code tauschen??

Ich komme einfach nicht weiter!!! Kannst du dir das mal ansehen??
Danke
MFG
Alex

von Alex (Gast)


Lesenswert?

Es will einfach nicht gehen!!! obwohl die memorymap super aussieht!

Wer kann helfen??

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.