PIC 18F Daten im RAM wohin speichern?

OP #2801674
Lesenswert?

Hallo,

kurze Frage. Ich will gerade den FLASH beschreiben udn weiß gerade nicht 
sorecht wo ich denn die Daten hinretten soll.
Sprich woher weiß ich das in dem RAM teil wo ich den alten FLAHS block 
retten will will nichts steht das ich dann überschreiben würde?

MfG
Gast #2801677
Lesenswert?

Wieso willst Du das alte Zeug überhaupt "retten"?

>Sprich woher weiß ich das in dem RAM teil wo ich den alten FLAHS block

Das entnimmst Du dem Map-File, dem Listing oder was auch immer Du von 
der alten Software hast. Dabei auch den Stack oder ggfs. dynamisch 
allokierte
Daten (bei einem P*C wahrscheinlich weniger relevant) nicht vergessen.

Wieso machst Du nicht einfach einen Dump des Flashinhalts auf Deinen
PC?
OP #2801695
Lesenswert?

eyeyey...muss ich doch weiter ausholen^^

ich will den FLASH im laufenden betrieb beschrieben, da der PIC den ich 
für meine Anwendung später brauch kein EEPROM hat.

Und um den FLASH zu beschreiben wird vorher der alte block im RAM 
gerettet, modifiziert und wieder zurückgeschrieben.
Daher wollte ich wissen wo ich im RAM die 64byte hinschreiben kann ohne 
was zu überschreiben

MfG
Gast #2801959
Lesenswert?

>Da ich ein USB-Device baun will programmier ich in C und Teile auch in
>Assembler.

Das bringt uns jetzt unglaublich weiter.
Wo ist das Problem ein Array im RAM zum zwischenspeichern
für deine Flash Page anzulegen? Im C Code oder im Assemblercode?
Und bei der Qualität deiner Frage solltest du C und Assembler
besser nicht mischen.
OP #2802021
Lesenswert?

Karl Heinz Buchegger schrieb:
> Dann leg halt ein Array mit 64 Bytes an und lass den Compiler/Linker
> sich darum kümmern, wo sie das im Speicher anordnen. Das ist ja
> schliesslich ihr Job, sich darum zu kümmern.

hätt ich auch selbst drauf kommen können -.-
Jetzt brauch ich aber wieder die Adresse für mein FSR0H/L.
An das untere Byte kommt man leicht. Wie ich aber an das Obere komm weiß 
ich jetzt ehrlichgesagt nicht so recht (in Assembler).

Ich könnte nach dem compilieren natürlich schaun wie die Adresse ist, 
und dann angeben aber das würde ich nur ungern machen.

@ holger
Komisch einer hats ja hinbekommen mir den richtigen Denkanstoß zu geben.

Und nein ich weiß leider nicht wie ich mit Assembler ein 64 byte langes 
Array im RAM anlegen kann. Würde ich das wissen hätte ich hier mit 
Sicherheit nicht gefragt.

Aber Trolle gibts halt überall...
#2802028
Lesenswert?

N. M. schrieb:
> Karl Heinz Buchegger schrieb:
>> Dann leg halt ein Array mit 64 Bytes an und lass den Compiler/Linker
>> sich darum kümmern, wo sie das im Speicher anordnen. Das ist ja
>> schliesslich ihr Job, sich darum zu kümmern.
>
> hätt ich auch selbst drauf kommen können -.-
> Jetzt brauch ich aber wieder die Adresse für mein FSR0H/L.
> An das untere Byte kommt man leicht. Wie ich aber an das Obere komm weiß
> ich jetzt ehrlichgesagt nicht so recht (in Assembler).
>
> Ich könnte nach dem compilieren natürlich schaun wie die Adresse ist,
> und dann angeben aber das würde ich nur ungern machen.

Schon mal was vom 'Adress Of' Operator (in C: &) gehört?

> Und nein ich weiß leider nicht wie ich mit Assembler ein 64 byte langes
> Array im RAM anlegen kann. Würde ich das wissen hätte ich hier mit
> sicherheit nicht gefragt.

Ich frage mich, warum du überhaupt Assembler programmierst, wenn du die 
einfachsten Sachen nicht kannst.
Jeder Assembler hat dazu Direktiven, um Speicher im SRAM zu reservieren.


Ist das wieder so eine Sache: Ich kanns in C nicht, also vermurkse ich 
es wenigstens in Assembler?
Na dann: Prost.
OP #2802048
Lesenswert?

Für was gibts denn bitte Foren, wenn man nicht nach Hilfe fragen darf, 
weil man dann sofort als Depp abgestempelt wird der von nix ne Ahnung 
hat?

Warum ich bei meinem Projekt Assembler Programmiere? Weil ich es "muss".
Ich "muss" den FLASH meines PICs beschreiben und das Datenblatt macht 
das eben im Assembler.

Natürlich kann ich mit
test EQU 0x20
abc RES 4
Speicher reservieren.

Nur kenn ich mich leider nicht so gut aus und hab beim debuggen eben 
festgestellt, das ich die Variable mit
ORG 0xXX
Temp RES 64
anlege er mir die Variablen die z.B. in C angegeben sind überschreiben 
kann.
Aber wie ich oben schon geschrieben hab bin ich ja eh nen Depp. von 
daher.

Keine Angst. Ich werd ab jetzt alle Fragen für mich behalten.
Na dann: Prost!
Gast #2802215
Lesenswert?

> Für was gibts denn bitte Foren, wenn man nicht nach Hilfe fragen darf,
> weil man dann sofort als Depp abgestempelt wird der von nix ne Ahnung
> hat?

Sagen wir es so: Auch die Anonymität eines Forums wie diesem hier kann 
diesen Umstand manchmal nicht verschleiern.

> Warum ich bei meinem Projekt Assembler Programmiere? Weil ich es "muss".
> Ich "muss" den FLASH meines PICs beschreiben und das Datenblatt macht
> das eben im Assembler.

Genau, DU musst das. Wir nicht, also bleib mal locker sonst stehst du am 
Ende mit leeren Händen da.

> Aber wie ich oben schon geschrieben hab bin ich ja eh nen Depp. von
> daher.
> Keine Angst. Ich werd ab jetzt alle Fragen für mich behalten.
> Na dann: Prost!

Durch das Geflenne wirst du den bisherigen Eindruck nicht korrigieren 
können. Gibst du immer so schnell auf? Na dann: Prost!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren