www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik konstante an einer absoluten Adresse ablegen (PIC32)


Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo Leute,

weiss jemand wie man Konstanten an bestimmte Zellen im Flash (PIC32) 
speichern kann?

Gruß

Autor: Winfried J. (Firma: Nisch-Aufzüge) (winne)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wäre dann sehr dankbar wenn du es mir verraten kannst!

Gruß

Autor: Winfried J. (Firma: Nisch-Aufzüge) (winne)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dazu müsstet du erst mal damit rausrücken  ob du Assembler C oder Basic 
benutzt um das Ding zu programmieren, meine Kristallkugel ist nämlich 
seit 5 Jahren in der Werkstatt und die bekommen das nicht hin ;-)

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe Pic32 erwähnt, also microchip, und wird mit C progrtammiert

Autor: Winfried J. (Firma: Nisch-Aufzüge) (winne)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
o.k. vielleicht hilft dir das hier weiter

http://www.sprut.de/electronic/pic/grund/eeprom.htm

obwohl es sich noch auf die 16er bezieht dürfte die stategie noch die 
Gleiche sein nur mit längere Adresse halt im besonderen solltest du das 
Datascheet des prozessors konsultieren.


In Assembler ist ein dirkter Speicherzugriff normal nicht so in 
Hochsprachen

Basic böte noch Peek und Poke

In C ist das Schon Komplizierter hier sorgt sich normaler weise der 
Compiler um soetwas. Die Hintertür ist die Verwendung von Zeigern in 
welche man direkt die Adresse schreibt. aber vorsicht der Compiler weiß 
davon nichts und das kann zum Programmbsturz führen.
ansonsten bliebe Inline-Assembler

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Linker kann's auch, jedenfalls der GNU-Linker vom C32. Muss man nur 
im Linker-Script rumfroschen, dann kann man dafür sorgen, dass die Daten 
exakt an der richtigen Stelle liegen und der Linker nicht Sonstwas dort 
plaziert. Ist halt eine eigene "Programmiersprache", dieses Zeug vom 
Linker-Script.

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau, der Linker ist es, kriege aber irgendwie die .rodata nicht auf 
meiner section verschoben.

Solle eigentlich nur die Firmware-Version (const) für meinen Bootloader 
sein, wird aber zusammen mit der App .rodata platziert.

Gruß

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wird vermutlich einfacher, wenn du diese Variable in einer separaten 
Section plazierst. Siehe "__attribute__" im GCC Manual. Musst dann im 
Linker-Script nur diese spezielle Section an die richtige Stelle legen, 
nicht .rodata.

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jep, das ist es  _attribute_ ((section ("BOOTLOADER"))), muss nur an 
der richtigen Stelle platziert.

vielen dank an beide.

Gruß

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.