Forum: Mikrocontroller und Digitale Elektronik Testmuster in Daten-RAM schreiben


von Frank Klier (Gast)


Lesenswert?

Guten Tag miteinander,

ich hoffe, ich finde hier eine Antwort auf meine Frage.

Ich möchte ein ausgewähltes Testmuster in den Daten-RAM des
Mikrocontrollers schreiben.

Was muss ich tun, damit mir das gelingt?

Ich sage schon mal vielen Dank.

von ...HanneS... (Gast)


Lesenswert?

Was ist ein Testmuster?
Einige Leute hier versuchen "Testmuster" (Samples) von IC's bei
Herstellern oder Distributoren zu "schnorren"...

Falls du aber normale Daten (Registerinhalte) mit dem SRAM tauschen
willst, dann schau dir mal die Transferbefehle an, die im Datenblatt
aufgelistet sind. Das sind eine ganze Menge, da man das SRAM auf
verschiedene Art und Weise ansprechen kann. Die meisten fangen mit LD
oder ST an...

...

von Frank Klier (Gast)


Lesenswert?

Ich möchte nicht "schnorren". Bin Student und möchte ne Aufgabe lösen.
Also ganz normal auf den Controller zugreifen.

Kannst du mir denn einen Befehl nennen, mit dem ich unter C
Registerinhalte auslesen kann?

von Rufus T. Firefly (Gast)


Lesenswert?

Ohne daß Du den Controller, den verwendeten C-Compiler und das nennst,
was für Dich ein "Register" sein mag, kann diese Frage nicht
beantwortet werden.
War die Frage vor zwei Postings in diesem Thread nicht auch eine etwas
andere?

von Frank Klier (Gast)


Lesenswert?

Ich arbeite mit dem 80C537 von Infineon und einem dafür kompatiblen
C-Compiler.

Weißt du, wie man eine Bitfolge(Testmuster) in den Daten-RAM dieses
Controllers schreiben kann?

von toddoy (Gast)


Lesenswert?

pass auf Ich würde das so machen:

#define anz_datem  xxx
byte * ptr;
byte * ptr_AnfDaten;
ptr = malloc(xxx);
ptr_AnfDaten  = ptr;
int i=0;
for(i=0;i< max ;i++,ptr++)
{
// hier solltest du die Testdaten generieren
*ptr = Testmuster; // hier schreibst das Testmuster ins ram
}

von Frank Klier (Gast)


Lesenswert?

Schon mal vielen Dank. Es ist aber trotzdem immer schwer sich in die
Syntax eines anderen reinzuversetzen.

Könntest du es noch mal kurz kommentieren.

Z.B. Was soll der Ausdruck "xxx" bedeuten? Was macht malloc?

von Rufus T. Firefly (Gast)


Lesenswert?

xxx ist durch eine Dezimalzahl zu ersetzen, die die Größe des
Speicherblocks angibt.

malloc ist eine Funktion, die Speicher auf dem Heap belegt, und der
liegt im RAM. Daher ist der Rückgabewert ein Pointer auf eben das
Daten-RAM.

Allerdings:

Bevor Du hier noch weitere Fragen über C stellst, rate ich Dir
dringend, Dir ein Buch über C anzuschaffen und durchzulesen. Der K&R
(Kernighan & Ritchie, Programmieren in C, zweite Auflage, Hanser
Verlag) ist da anzuraten.

von Frank Klier (Gast)


Lesenswert?

Das hat im direkten Sinne nichts mit C-Programmierung zu tun. Malloc ist
eine spezifische Funktion, die nur in Verbindung mit
Controller-Programmierung verwendet wird.

Trotzdem danke für den Buch-Tipp.

Hab trotzdem noch mal ne Frage zur Syntax (die allerletzte). Was soll
ich an die Stelle schreiben, wo der Kommentar steht: // hier solltest
du die Testdaten generieren. Was meint "toddoy" damit?

von Rufus T. Firefly (Gast)


Lesenswert?

"Das hat im direkten Sinne nichts mit C-Programmierung zu tun.
  Malloc ist eine spezifische Funktion, die nur in Verbindung
  mit Controller-Programmierung verwendet wird."

Ich fass' es nicht. Wie kommst Du denn auf diese völig irrige
Annahme?

Bevor Du hier noch weitere Fragen über C stellst, rate ich Dir äußerst
dringend, Dir ein Buch über C anzuschaffen und durchzulesen.

von OldBug (Gast)


Lesenswert?

1. Meide malloc auf Mikrocontrollern,
2. Meide malloc auf PCs,
3. MEIDE malloc!

Wie man ein Muster ins RAM schreiben kann, um beispielsweise
Kollisionen zwischen zwei Datenbereichen feststellen zu können, kannst
Du im GCC-Forum nachlesen. Da hat Peter Dannegger eine schöne Lösung zu
geschrieben.

Evtl. hilft Dir das ja weiter:

http://www.mikrocontroller.net/forum/read-2-133551.html#135930

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.