Forum: Mikrocontroller und Digitale Elektronik LPC2148 Flash schreiben / debuggen klappt nicht


von Jansus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Bin gerade leider völlig ratlos...

Ich habe ein Prototype-Board LPC-P2148 von Olimex. Dazu den 
ARM-USB-TINY. Arbeite mit Yagarto.

Debuggen im RAM funktioniert einwandfrei. Allerdings möchte ich aufgrund 
der Programmgröße jetzt für einen Test des Gesamtprogramms das Ganze mal 
in den Flash schreiben.

Habe es zuerst mit dem Philips Flash Utility versucht, allerdings hat es 
mir lediglich die ID ausgelesen, flashen ging nicht. Liegt wohl an einer 
Abneigung gegenüber USB-Seriell-Konvertern...

Daraufhin habe ich Flashmagic ausprobiert. Laut Flashmagic hat es auch 
funktioniert, allerdings schaut es letztlich so aus, dass mein Programm 
wohl startet, aber die Ausgabe auf mein LCD-Display nicht richtig 
funktioniert, es blinkt mal kurz was auf und dann geht nix mehr. Wenn 
ich dann das Board resete, erscheint was auf meinem Display, allerdings 
um fünf oder sechs Zeichen nach rechts verschoben.

Da ich einen Fehler meinerseits natürlich nicht vollkommen ausschließen 
kann, würde ich jetzt gerade über meinen JTAG-Adapter den µC flashen und 
idealerweise mal im Flash debuggen.
Ich habe auch schon diverse Seiten nach passenden Infos durchsucht. 
Allerdings nicht wirklich was gefunden, dass mich weitergebracht hat.

Habe mal ein Dokument mit meinem Config-File und dem Flashscript 
angehängt.

Würde mich sehr über Tipps und Ratschläge freuen! Vielleicht kennt sich 
von Euch ja einer gut damit aus, oder hatte schonmal das gleiche oder 
ein ähnliches Problem.


Viele Grüße
Jansus

von Andreas K. (a-k)


Lesenswert?

Wenn Flashmagic sagt, dass die Programmierung erfolgreich war, dann 
solltest du erst einmal davon ausgehen, dass dies stimmt. Und dass dein 
Programm das Problem ist.

von Jansus (Gast)


Lesenswert?

Da hast Du recht!
Habe es inzwischen auch hinbekommen, dass mein LCD das Richtige ausgibt.
Aber so ein paar Kleinigkeiten im späteren Verlauf meines Programms 
funktionieren noch nicht. Daher würde ich es eben gerne mal im Flash 
debuggen, denn wenn ich es im RAM debugge funktioniert alles.
Weißt Du wie ich das mit Yagarto realisieren kann? Oder hast Du einen 
Tipp für mich wo ich es herausfinden kann?

von Andreas K. (a-k)


Lesenswert?

Ich hatte es mit GNUARM/Eclipse/OpenOCD hinbekommen (war vor Yagarto). 
Ist etwas hakliger, weil im Flash nur 2 Breakpoints existieren und davon 
einer für den Trace draufgeht. Aber ist zu lange her.

Schau mal bei http://en.mikrocontroller.net/forum/17 vorbei.

von Jansus (Gast)


Lesenswert?

Vielen Dank für Deinen Tipp!

Habe dort leider nix gefunden, habe auch diverse andere Foren 
durchsucht, zwar Anstöße bekommen, aber nichts erfolgreiches.

Leider besteht mein Problem immer noch. Habe auch keine Ahnung was der 
Fehler ist.
Gibt es irgendeinen Grund weshalb was im RAM läuft und im Flash nicht 
mehr?

Mein Programmabschnitt, der Probleme macht, schaut in etwa so aus:

Ein Taster, via EXTINT, kann eine Funktion starten (beim ersten drücken) 
und wieder beenden (beim zweiten drücken). Im RAM funktioniert das 
einwandfrei. Im Flash allerdings funktioniert es nicht mehr.
Merkwürdigerweise kann ich den Taster aber an anderer Stelle nutzen. Nur 
beim Starten dieser einen Funktion klappt nix.

Daher gehe ich davon aus, dass es an der folgenden Funktion liegen muss. 
Hier werden Variablen (static) hochgezählt und entsprechend ihrem Wert 
Softwareinterrupts ausgelöst. Aber kann das mein Fehler/Problem sein?


Verzweifelte Grüße
Jansus

von Robert Teufel (Gast)


Lesenswert?

Auf der Yagoarto Webseite gibt es ein "how to" tutorial fuer open OCD 
und fuer J-Link. Da funktioniert debugging im Flash sehr gut. Solltest 
Du Stdent sein, dann gibt es J-Link fuer 99 Euro.
http://yagarto.de/howto/jlink/index.html

Robert

von Jansus (Gast)


Lesenswert?

Danke auch für Deinen Tipp!
Leider bin ich eben Student und kann mir daher nicht mal eben 100Euronen 
für nen neuen Adapter leisten.
Muss es irgendwie mit meinem ARM-USB-OCD-TINY hinbekommen.

Habe inzwischen rausgefunden, dass es mit meinen Softwareinterrupts 
zusammenhängt. Wenn ich sie mit MEMMAP=2 in den RAM verschieben lasse, 
gehts, wenn ich sie allerdings im Flash lasse, MEMMAP=1, funktionieren 
nur die EXTINTs aber meine SW-Interrupts nicht mehr.

Ist das was bekanntes?

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.