Forum: Mikrocontroller und Digitale Elektronik Flash beim Linken beschreiben


von Peter (Gast)


Lesenswert?

Hallo,

ich bin grad dabei bei einem 8051 Core rauszufinden ob und wie man es 
schafft über das LinkerFile einer bestimmten Adresse im Flash mit einem 
bestimmten Wert zu beschreiben. So das beim Flashen des hex-Files schon 
ein Default Wert an der Adresse steht.

Freu mich über jeden Ansatz wie man das hinkriegen könnte ;)

von Oliver J. (skriptkiddy)


Lesenswert?

Welche Toolchain?

Edit:
Ich frage mal anders. Was willst du damit bezwecken?

Gruß Oliver

von Peter (Gast)


Lesenswert?

IAR Workbench.

Bezwecken will ich damit das einfach für eine bestimmte Sache einen 
Defaultwert im Flash stehen habe. Sowas wie eine Werkseinstellung halt. 
Ich könnte zwar auch am Anfang zuerst den Inhalt des Flashs an dieser 
Stelle auslesen und auf FFFF... überprüfen da dies ja der eigenltiche 
Initialzustand ist. Finde die Lösung aber nich so toll und wollte eben 
deshalb wissen ob es auch anderst möglich ist.

Es geht einfach darum :  Es gibt eine Zeitkonstante, diese soll einen 
bestimmten Wert haben. Dieser Wert soll immer im nichflüchtigen Speicher 
änderbar abgelegt werden. Jedoch soll das Teil im Auslieferungszustand 
schon einen gewissen Wert für diese Zeitkonstante haben. Und somit muss 
dieser ja quasi schon ins hex-File eingewurstelt sein oder nicht ?

von Oliver J. (skriptkiddy)


Lesenswert?

Warum initialisierst du das nicht im Quellcode?

Welchen Controller verwendest du überhaupt?

Gruß Oliver

von Peter (Gast)


Lesenswert?

Wie soll ich das im Quellcode Initialisieren? Dann wird es bei jedem 
Reset vom Controller wieder neu Initialisiert, jedoch soll die 
Initialisierung nur beim ERSTEN Start des Controllers ausgeführt werden 
und alles andere ist dann Benutzerabhängig.

von holger (Gast)


Lesenswert?

>Freu mich über jeden Ansatz wie man das hinkriegen könnte ;)

Lies das Handbuch von deinem Linker den hier keiner kennt.

von Peter (Gast)


Lesenswert?

Stimmt hätt ich ma noch sagen können.

xLink - http://supp.iar.com/FilesPublic/UPDINFO/005173/xlink.ENU.pdf

Hab halt nichts gefunden mit dem ich das was ich brauche hinbekomme.

von Hsw (Gast)


Lesenswert?

Möglich ist das schon.
Mit iar kenne ich micht nicht aus, bei keil geht das per selection.
Da kann man etwa so:

http://www.keil.com/support/man/docs/armccref/armccref_BABGJHDC.htm

Oder gcc mit linkerscript
http://electronics.stackexchange.com/questions/28325/writing-a-function-at-specific-memory-location-of-flash 
- hier mit funktionen ist bei variablen nicht anders.



Grüße

von Michael L. (michaelx)


Lesenswert?

Peter schrieb:
> Wie soll ich das im Quellcode Initialisieren? Dann wird es bei jedem
> Reset vom Controller wieder neu Initialisiert, jedoch soll die
> Initialisierung nur beim ERSTEN Start des Controllers ausgeführt werden
> und alles andere ist dann Benutzerabhängig.

Schon klar, wenn man nach dem Resetvektor timeConst=0x27 schreibt, dann 
wird das nichts.

Wie man es konkret macht, kommt drauf an, welche Programmiersprache du 
verwendest und wie die plattformspezifischen Besonderheiten darin 
umgesetzt werden. Fehlt halt noch Info. Aber im Linker was zu reißen, 
ist erst der letzte Ausweg.

Normalerweise sollte man im Qeullcode eine bestimmte Speicheradresse 
gezielt mit einem Wert beschreiben können. Diesen Wert kann man dann 
natürlich auch zur Laufzeit lesen und ändern.

Beim PIC sieht das z.B. in Assembler so aus:
1
  org  0x2100
2
  de  0x27  ; Initial settings

HTH

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.