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 ;)
Welche Toolchain? Edit: Ich frage mal anders. Was willst du damit bezwecken? Gruß Oliver
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 ?
Warum initialisierst du das nicht im Quellcode? Welchen Controller verwendest du überhaupt? Gruß Oliver
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.
>Freu mich über jeden Ansatz wie man das hinkriegen könnte ;)
Lies das Handbuch von deinem Linker den hier keiner kennt.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.