Forum: Mikrocontroller und Digitale Elektronik Wie startet ein 8051 Programme?


von Dieter (Gast)


Lesenswert?

Manche PC-Software bringen Assemblerprogramme auf einem *51er zum
laufen, ohne dafür den Eprom / Flash Rom programmieren zu müssen. Es
ist klar, das das ganze in den Ram geschrieben wird.

Nach dem Einschalten eines µC muss doch eine Routine ablaufen, die
irgendwann zu dem Assemblerprogramm im Ram kommt (ORG xxxxh). Er könnte
ja z. B. auf dem Eprom oder auch dem RAM bei 0000h anfangen.

Meine Fragen:
1. Nennt man diese Routine Bootloader?
2. Und für was steht ISP? Auf jeden Fall nicht nur für Internet Service
Provider, wie Google mich glauben lassen will.
3. Wie sieht z. B. der Code ungefähr aus, der über die Tx und Rx Pins
übertragen wird?
4.Darf ich denn, wenn ich den Eprom / Flashrom programmiere, bei
Adresse 0000 anfangen?
5. Was macht ein PC-Programm, wenn er ihm über die Tx und Rx Pins sagen
möchte, dass er jetzt auf z.B. 8000h springen möchte? Den Jumpbefehl
bitweise über die Rx Leitung träufeln lassen?

Ich wäre über jede noch so kleine Information froh, die mich
weiterbringen könnte.

Entweder habe ich es überlesen, oder die Datenblätter erwähnen meine
Fragen nicht mal ansatzweise.

MfG

von Läubi (Gast)


Lesenswert?

2. ISP = In System Programable, heißt du kanst den Controller in deiner
Zielschaltung programieren ohne ihn mit einem SPeziellen
Programmiergerät zu beschreiben.

von Peter Dannegger (Gast)


Lesenswert?

Da es es etwa 700 verschiedene 8051-Derivate gibt, wirds wohl auch 700
verschiedene Wege zum Programmieren geben.

Du must also erstmal speziell werden (welcher 8051 genau).


Ganz allgemein:

Die meisten 8051 mit Bootloader haben den Bootloader in einem extra
Flash oder ROM-Bereich stehen, der durch bestimmte Signale an den Pins
angesprungen wird.

Der Bootloader kriegt dann die Daten als Intel-Hex übertragen.
Für spezielle Kommandos (Rücklesen, Fuses setzen, Programm anspringen)
gibt es dann spezielle Records.

Als Programmierschnittstelle werden UART, CAN, USB, SPI oder JTAG
verwendet.


Peter

von Dieter (Gast)


Lesenswert?

Super! Gut zu wissen, dass sich die Microcontroller in diesen Punkten
unterscheiden. Ich habe es extra ziemlich allgemein gehalten und
vereinfachend geschrieben, da ich bisher dachte, dass solche Grundzüge
bei allen ungefähr gleich ist.

Der verwendete Microcontroller ist ein 89C51RD2HBA von Reichelt.

In System programmable wiederbeschreibbarer
Flash-Speicher
vier 8-Bit I/O-Ports/ drei 16 Bit-Timer
Interner RAM(Bit): 512x 8

Leider steht im Datenblatt von Reichelt nicht, wie der RAM oder der
Flash gehandhabt werden muss. Ursprung meiner Anfrage ist u. a., dass
ich meine Programme testen will, ohne sie aufwändig in den Flash
schreiben zu müssen. Da käme mir der Ram sehr gelegen, aber ich muss
dem Prozessor auch beibringen, dass er auf genau diese Stelle im Ram
springen soll, wo auch mein Programm steht.

von Sebastian B. (lufti)


Lesenswert?

Ist doch nicht aufwendig ins flashrom zu schreiben! .. wie stellst du
dir das vor?

von Dieter (Gast)


Lesenswert?

Ich dachte bisher immer, einige Teile des Flashrooms sind durch Sachen
wie z. B. dem Bootloader schon vorbelegt. Ich wollte dort nicht
reinschreiben, sonst lösche ich am Ende noch etwas.

von Peter Dannegger (Gast)


Lesenswert?

Es gibt nen T80C51RD2 (Atmel) und den P89C51RD2 (Philips).

Du brauchst nur die Software runterladen (Flip bzw. Flashmagic) und los
gehts. In den App-Notes steht alles nötige drin.

In den RAM laden geht grundsätzlich nicht, da die 8051 nur RAM für
Daten haben. Die Chips werden also geflasht und das ist gar nicht
aufwendig.


Peter

von buz11 (Gast)


Lesenswert?


von Sebastian B. (lufti)


Lesenswert?

Ginge theoretisch nicht auch, dass man ein externes RAM anschließt und
das beschreibt und dann den µC startet, der von externem Speicher
(glaub mit /EA = low), in diesem Fall vom RAM das Programm läd?

Bräuchte man natürlich einen weiteren IC zum beschreiben des RAMs.


Das ginge doch auch, .. oder?

von Hannes L. (hannes)


Lesenswert?

Ein 8051 oder AVR wird kein PC...

von Peter Dannegger (Gast)


Lesenswert?

"Das ginge doch auch, .. oder?"


Ginge schon.

Aber was nützt es Dir, einfach mal 18 IO-Pins für so einen Unsinn zu
verschwenden ?


Ich habe früher mal sowas auf nem DS80C320 gemacht. Da war das Problem,
daß schnelle Flashs damals sehr teuer waren.
Ich habe dann nach jedem Reset langsam vom Flash in einen schnelle
Cache-SRAM geladen und dann den Flash abgeschaltet und DS80C320 auf
32MHz hochgesetzt.
Nebeneffekt war, da es ja keine 64KB SRAMs gibt, daß ich auch noch 64KB
Data-SRAM hatte (128kB-Chip).
Und da nochn paar SJA1000 und anderes drauf war, war der Verlust der
IO-Pins nicht ganz so schlimm.
Würde ich heute aber nicht mehr machen.


Peter

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.