Probleme mit M16c Monitor und großem Programm!

#214451
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
Gast #214455
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
#214456
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
Angehängte Dateien:
#214458
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren