Forum: Mikrocontroller und Digitale Elektronik Debug-Start im internen SRAM


von Tom (Gast)


Lesenswert?

Hallo an Alle,

kurz zu mir und meine Plattform. Ich bin Einsteiger im 
Micropozessor-Programmierung stehe schon vor dem ersten Fels. Ich habe 
mir kürzlich
von der Firma Mouser Electronis ein EVB Board von Luminary Micro 
LM3S8962
zugelegt. Dazu habe ich mir die Evaluation-Entwicklunsumgebung von Keil 
mit 16KByte Limitierung liefern lassen. Da ich das Board nich nur zur 
Evaluierung nutzen möchte sondern auch einige Kleine Tools und evtl. 
Treiber entwickle wär es für mich wichtig Programme auch im SRAM 
debuggen zu können. Aus dem Bekanntenkreis erfuhr ich bereits dass der 
interne Flash des Prozesseors nach unzähligen Beschreiben irgendwann mal 
den Geist aufgibt. Bei den MC Preisen ja eigentlich kein Problem aber da 
es sich um ein EVB Board handelt ist der Prozessor auf keinem Sockel 
oder Adapter montiert. Um das vorzubeugen möchte ich die Programme eben 
direkt aus dem internen SRAM vom Prozessor anstarten wenn das möglich 
ist !? So nun seit ihr lieben Forenuser gefragt. Für weitere Anregungen, 
Tipps & Tricks bin ich gerne offen, alles rund um Tools, Debugging usw.

von Andreas K. (a-k)


Lesenswert?

Tom wrote:

> Aus dem Bekanntenkreis erfuhr ich bereits dass der
> interne Flash des Prozesseors nach unzähligen Beschreiben irgendwann mal
> den Geist aufgibt.

Nehmen wird mal an, dass du alle 5min eine neue Version flashst, und 
dies 8 Stunden lang 5 Tage die Woche. Wenn du das 4 Jahre lang ohne 
Urlaub so durchhältst, dann hast du das Flash-ROM vermutlich 
ausgelutscht.

Sowas wird eigentlich erst zum Problem, wenn du mit einem Debugger 
arbeitest, der seine Breakpoints und Single-Steps per 
Flash-Progammierung abwickelt. Dann kannst du leicht auf mehrere 
Programmiervorgänge pro Sekunde kommen.

von Tom (Gast)


Lesenswert?

Erstmal danke für die schnelle Antwort. Woran merk ich das ob der 
Debugger im Single Step Mod ins Flash schreibt ? Ist es also nicht 
möglich die Startup.s so zu modifizieren dass er das Program in SRAM 
lädt und von dort aus startet ? Prinzipiell würde mich auch interssieren 
ob das Debuggen überhaupt ohne jeglichen ULink JTAG Adapter oder so 
möglich ist !?

von Peter D. (peda)


Lesenswert?

Tom wrote:
> Ich bin Einsteiger im
> Micropozessor-Programmierung


Dann ist es natürlich "superklug" einen absolut brandneuen IC zu nehmen, 
mit dem kaum jemand Erfahrung haben dürfte.

Schnuckelig ist er ja (internes Ethernet).

Aber ich bin davon weg, grüne Bananen zu nehmen. Ich lasse ICs erstmal 
mindestens 2 Jahre reifen und andere die Bugs finden. Ich hab einfach 
nicht mehr die Zeit dazu.
Ich hab auch schon ICs gesehen, die sind nach 2 Jahren wieder 
verschwunden, glücklicher Weise hatte ich an denen keine nennenswerte 
Zeit verschwendet.


Wie man Programme in den SRAM legt, sollte aus den Compiler-, 
Linker-Manuals Deines C-Compilers hervorgehen.


Peter

von Andreas K. (a-k)


Lesenswert?

Tom wrote:

> Woran merk ich das ob der Debugger im Single Step Mod ins Flash
> schreibt ?

Wenn du Glück hast, steht im Kontext vom Debugger irgendwo ausdrücklich 
drin, dass er nur oder bis zu irgendeiner begrenzten Anzahl 
Hardware-Breakpoints verwendet. Wenn nicht: Durch eingehende (mehrfache) 
Lektüre sämtlicher zugänglicher Handbücher wächst die Chance, das selber 
rauszufinden. Womit nicht nur die Dokus des Compilers gemeinst sind, 
sondern auch diejenigen des verwendeten ARM-Cores bzw. dessen 
Debug-Moduls (diese PDFs sind eher bei ARM zu finden als bei LM).

> Ist es also nicht möglich die Startup.s so zu
> modifizieren dass er das Program in SRAM lädt

Doch. Aber die Chancen auf eine detaillierte Auskunft wächst mit dem 
Alter des eingesetzten Controllers. Lies: brandneue Typen kennt keiner.

> und von dort aus startet ? Prinzipiell würde mich auch interssieren
> ob das Debuggen überhaupt ohne jeglichen ULink JTAG Adapter oder so
> möglich ist !?

Ja. Mit anderen JTAG-Adaptern.

Oder indem du mit dem JTAG einmalig einen Bootloader in den Controller 
verfrachtest. Gibt es zumindest für andere LM3s bei LM selbst. Und das 
Debugging nicht mit Debugger, sondern mit Trace-Ausgabe machst (ich 
benutze selten Debugger, sobald LED-Ausgabe oder UART funktionieren).

PS: Begriffe: Software-Breakpoints = Flash-Programmierung, 
Hardware-Breakpoints kommen hingegen ohne Flash-Programmierung aus.

von Peter D. (peda)


Lesenswert?

Ich glaubs ja nicht, das Ding hat Bitbefehle und Division!

Ist quasi ein 32Bit 8051-er.

Könnte mir schon gefallen.

Blöd ist nur, daß wir uns schon auf den LPC eingeschossen haben.


Peter

von Andreas K. (a-k)


Lesenswert?

> Ist quasi ein 32Bit 8051-er.

Hehe... Welch ein Lob ;-).

Ja, der Cortex M3 ist ein deutlicher Schritt vorwärts. Schau dir mal die 
Interrupt-Handhabung an. Ist die einzige mir bekannte Kiste, bei der ein 
Interrupt-Handler weder einen speziellen Stack-Frame noch einen 
speziellen Return-Befehl benötigt, also eine ganz normale C Funktion 
ist.

von Dieter (Gast)


Lesenswert?

Der Cortex M3 ist sozusagen nach den Alpha-Arm7/9-Versionen die 
Release-Version...

Fehlen nur noch ein wenig höhere Taktfrequenzen und mehr Speicher, dann 
ist die Arm7-Familie obsolet.

von Andreas K. (a-k)


Lesenswert?

Dieter wrote:

> Der Cortex M3 ist sozusagen nach den Alpha-Arm7/9-Versionen die
> Release-Version...

Du meinst, nach gut 2 Jahrzehnten Jahren Beta kommt nun die Release? ;-)

> Fehlen nur noch ein wenig höhere Taktfrequenzen und mehr Speicher, dann
> ist die Arm7-Familie obsolet.

Freu dich nicht zu früh, x86 ist seit knapp 30 Jahren obsolet.

von Peter D. (peda)


Lesenswert?

Also die Krücke mit den Set- und Reset-Registern des LPC hat mir noch 
nie gefallen.

Wenn dann noch diese blöden spurious Interrupts weg sind, ist das 
wirklich ein goiles Teil, mit dem man auch arbeiten kann.

Und 64kB RAM ist auch schön, die LPC (>48Pin) haben ja leider nur max 
16kB.

Der LM3S8970 könnte bei mir ein komplettes Board ersetzen.


Peter

von Andreas K. (a-k)


Lesenswert?

Peter Dannegger wrote:

> Also die Krücke mit den Set- und Reset-Registern des LPC hat mir noch
> nie gefallen.

Wenn du die Bitadressierung des RAM- und I/O-Bereichs meinst: Es ist 
damit etwas schwierig, ein I/O-Modul mit Adresse oder Nummer eine 
I/O-Kanals oder einer Portnummer zu versehen, da sich die Bitadresse nur 
vergleichsweise aufwendig aus der Adresse berechnen lässt, wenn die als 
Parameter übergeben wird und nicht als Konstante.

An den Set/Reset-Registern von den LPCs hat mich bisher nur gestört, 
dass sie bei der Richtungssteuerung fehlten (z.B. 1-Wire), Atmel ist da 
bei den SAM7 konsequenter.

Von den LM3 kenne ich bislang nur die Doku der kleinsten Exemplare. Da 
finde ich die Möglichkeit, Portpins als O.C. definieren zu können, zwar 
ganz nett, aber was nützt das, wenn man nicht in der Lage ist bei 
solchen Pins den aktuellen Zustand des Pins auslesen zu können ohne 
zunächst die Richtung umschalten zu müssen? Ein über die verwendete ARM 
PrimeCell geerbtes Problem, das mir schon beim STR9 auffiel.

von Peter D. (peda)


Lesenswert?

Tom wrote:

> Ich habe
> mir kürzlich
> von der Firma Mouser Electronis ein EVB Board von Luminary Micro
> LM3S8962
> zugelegt.

Wo bestellt man denn bei Mouser?
Direkt in USA ist ja immer blöde.

Ich werds wohl bei Atlantik bestellen, stolze 89,-€.


Auch endlich mal ein ordentliches SPI ist drin (16Bit*8 FIFO, 25MHz).


Peter

von Andreas K. (a-k)


Lesenswert?

Peter Dannegger wrote:

> Auch endlich mal ein ordentliches SPI ist drin (16Bit*8 FIFO, 25MHz).

Die ARM PrimeCell PL022.  Philips hat bei den LPC2000 ziemlich viel 
selber gebaut, die Stellaris Dinger hingegen sind eher ein Baukasten aus 
ARM PrimeCells.

von Tom (Gast)


Lesenswert?

Danke für die vielen Anregungen und Spezifikationen. g

Als Ersteller diesen Threads würde mich doch noch mehr
Informationen über das Thema des Beitrags interessieren.

Wenn sich hier also kompetente Embedded Entwickler aufhalten
würde es mich doch sehr freuen wenn sich hier weitere Details im Bezug
auf das "Debuggen im internen SRAM" befinden.

Hat das vielleicht mal Jemand mit einem anderen Board und
einer anderen Entwicklungsumgebung gemacht ?

von Olaf (Gast)


Lesenswert?

Ich denke du machst du zuviel Sorgen wegen nichts. Natuerlich leidet 
Flash irgendwann, aber zuerst wird wohl die Vergesslichkeit zunehmen. Es 
kann dir doch bei einem Entwicklungsboard egal sein ob das sein Programm 
noch 10-30Jahre haelt, oder bereits nach ein paar Monaten vergisst.

Wenn das wirklich ein ernstes Problem waere dann wuerde man dir gleich 
auf Seite 2 des Handbuchs zum Board davon erzaehlen und der Prozessor 
waer gesockelt.

Ich hab jedenfalls noch nie Ruecksicht auf soetwas genommen und hatte 
auch noch nie ein Problem.

Olaf

von Peter D. (peda)


Lesenswert?

Tom wrote:
> Wenn sich hier also kompetente Embedded Entwickler aufhalten
> würde es mich doch sehr freuen wenn sich hier weitere Details im Bezug
> auf das "Debuggen im internen SRAM" befinden.


Hier sind ne ganze Menge kompetenter Embedded Entwickler.

Allerdings bedeutet Kompetenz nicht, immer mit nem 32Bit Boliden auf 
jede kleine Aufgabe draufzuhauen oder immer den allerneuesten Chip zu 
benutzen, den noch kein anderer hat.


> Hat das vielleicht mal Jemand mit einem anderen Board und
> einer anderen Entwicklungsumgebung gemacht ?

Die meisten MCs haben garkeinen Code-SRAM oder nur sehr wenig SRAM, da 
stellt sich so ein Problem nicht.
Der Flash läßt sich in der Regel auch schnell genug programmieren.


Ich werd ihn mal bestellen und sehen, wie er sich so programmieren läßt 
(Toolchain).
Allerdings werde ich nicht den 2.Schritt vor dem 1. tun, sondern erstmal 
mit den Beispielen anfangen.
Wenn die laufen und man merkt, daß die Programierung langsam oder 
umständlich ist, kann man dann mal nen eigenen Flash- oder 
SRAM-Bootloader basteln.

Ich kann mir auch gut vorstellen, daß bei so einem brandneuen Chip das 
Luminary-Forum die beste (einzige ?) Anlaufstelle ist.


Peter

von Peter D. (peda)


Lesenswert?

Peter Dannegger wrote:

> Ich werd ihn mal bestellen und sehen, wie er sich so programmieren läßt
> (Toolchain).

So, das Ding steht jetzt bei mir aufn Tisch.
Eigentlich sinds ja 2 Bords, damit man CAN ausprobieren kann.

Versorgt wirds über USB, da liegt auch JTAG und die RS232 mit drauf.

Ist schon mächtig beeindruckend, was das alles kann.
Ist ein kleines Spielchen drauf auf dem 128*96 OLED-Display und als 
Webseite (Java).

Und auch massig Beispiele (Grafikdisplay, SD-Card, CAN, Ethernet, 
Interrupts, ...)

Also erstmal ne ganze Menge zu lesen.


Peter

von Tom (Gast)


Lesenswert?

Oh das hört man ja gerne einen Kompagnon zu haben.
Wo hast du das Board den bestellt. Ich musste 4 Tage auf meins
warten da es aus den USA kam. Welche Entwicklungsumgebung hast Du dazu 
bestellt. Vielleicht löst sich so auch die Frage ob der Keil Debugger 
Hardware Breakpoints in Flash verlagert oder nicht !? Würde mich freuen 
wenn Du deine Erkenntnisse weiterhin in diesen Thread posten würdest. 
Wär sicherlich interessant für alle die sich mit dem Board 
auseinandersetzen möchten.

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.