Hallo! Könnte mir jemand dabei behilflich sein wie man Variablen so deklariert das sie im ROM abgelegt werden und nicht im RAM! Ich benutze Fujitsu Controller schaue mir aber auch gerne die Vorgehensweise bei anderen Controllern an! Beste Grüße Harry
Variable und ROM schliesst sich doch gegenseitig aus, oder?
Wenn Du mit ROM den Programmspeicher meinst (meist EEPROM), dann sollte die das Handbuch zum Assembler/Compiler sagen, wie dort Daten (z. B. Parameter) abgelegt werden könne. Beim PIC kann man in Assembler z. B. mit "db" oder "dt" Daten im Programmspeicher ablegen.
@tastendrücker
>Wenn Du mit ROM den Programmspeicher meinst (meist EEPROM), dann sollte
Heutzutage meist FLASH, kein EEPROM. Kleiner, aber wichtiger
Unterschied.
MFg
Falk
@tastendrücker
>Und nocheinmal: Ein FLASH ist auch ein EEPROM.
Aber nur fast! ;-)
Ausserdem spricht man nciht ganz umsonst bei sämtlichen Controllern von
FLASH (Programmspeicher) und EEPROM (Datenspeicher).
MFG
Falk
Nicht nur "fast" EEPROM => Electrically Erasable Programmable Read Only Memory hierunter fallen auch Flash-Speicher oder http://de.wikipedia.org/wiki/Flash_Speicher (jaja, ich weiss: Wikipedia ist nicht alles ;-) Hilft Harry aber alles nicht wirklich...
@tastendrücker >Nicht nur "fast" Doch, nur fast. >oder http://de.wikipedia.org/wiki/Flash_Speicher > (jaja, ich weiss: Wikipedia ist nicht alles ;-) Richtig, aber DEIN Link liefert in der ersten Zeile den "kleinen Unterschied" ;-) "Flash-Speicher sind digitale Speicherchips; die genaue Bezeichnung lautet Flash-EEPROM. Im Gegensatz zu „gewöhnlichem“ EEPROM-Speicher lassen sich beim Flash-EEPROM Bytes, die kleinsten adressierbaren Speichereinheiten, nicht einzeln löschen." >Hilft Harry aber alles nicht wirklich... Da müsst Har_fahr schon mal den Wagen vor_ry mal sagen was er benutzt. - welcher Controller? - welche Programmiersprache? - welcher Compiler/Entwicklungsumgebung? MfG Falk
Eine Variable im Flash abzulegen macht seltenst Sinn (wegen umständlicher Schreibroutinen). Konstanten wiederum machen Sinn, da man diese ja nur liest. Wenn du C nutzt, kann es sein, dass ein einfaches "const" vor der Variablendeklaration schon reicht (je nach Compiler). z.B. const int Tabelle[5]=... Bei den meisten Compiler gibt es aber noch Schlüsselwörter wie "code" etc. z.B. code int Tabell[5]=... oder irgendwelche Anpassungen des Linkers.
tastendrücker wrote: > Hilft Harry aber alles nicht wirklich... Ist so richtig. Helfen könnte, wenn man die Bedingungen berücksichtigt. Wenn ein Wert über eine EEPROM-Zelle gemanagt werden soll, braucht man immer mindestens eine Variable, die den Wert übergibt. Auch wenn man 'variable' Zustände mittels Tabelle ins oder aus dem ROM bringt, steht eine Variable im RAM, die den Zeiger stellt. Ausserdem bleibt der Inhalt bis er überschrieben wird faktisch konstant. @Harry > Könnte mir jemand dabei behilflich sein wie man Variablen so deklariert > das sie im ROM abgelegt werden und nicht im RAM! Möglicherweise versteh ich den Sinn nicht, kannst Du genauer beschreiben, was Du vorhast? Gruss, Edson
@Falk Flash-EEPROM ist kein EEPROM??? Dann sind Propeller-Flugzeuge auch keine Flugzeuge?
... ich glaube, wir kennen den Unterschied zwischen "gewöhnlichem" EEPROM und Flash-EEPROM und sollten uns daher auf Lösung die eigentlichen Probleme dieser Welt konzentrieren ;-)
also ich denke du meinst Konstanten. Welchen Compiler verwendest Du? SOFTUNE C COMPILER ? mit Softune Workbench? 8/16/31 Bit? Also V3/V6 ? Fujitsu stellt ein gutes Manual für ihre C-Compiler zur Verfügung, da steht (fast) alles drin. Ich kann mich dunkel erinnern, dass ich mal const static "variablen" explizit ins RAM legen musste. Dafür waren dann die Parameter -ramconst -xramconst oder so zuständig. Aber dann musste die statup angepasst werden... grübel *grübel* die letzten Jahre sind wie ausgelöscht ..... :-) Wenn Du nicht weiter kommst meld dich noch mal mit den o.g. Infos, dann versuche ich mich etwas genauer zu erinnern :-)
@ tastendrücker >Flash-EEPROM ist kein EEPROM??? >Dann sind Propeller-Flugzeuge auch keine Flugzeuge? Wie schön das es immer noch einen anderen Besserwisser gibt, und der bin jetzt ich ;) Ich empfehle einfach mal Datenblätter zu lesen. Bei PIC und AVR wird peinlichst vermieden den Begriff Flash-EEPROM zu verwenden. Bei Flash ist es meist Flash Memory oder Flash Program Memory. Flash ist HEUTE für den Programmcode und konstante Daten vorgesehen. EEPROM zum speichern/ändern von Daten während der Programmlaufzeit. Obwohl, der alte PIC16C84 war tatsächlich ein uC der seinen Code aus dem EEPROM ausführt. Der 16F84 führt seinen Code aus dem Flash aus. Alte 8051 Schaltungen liefen auch mit externen EEPROMs als Programmspeicher. Wenn man dann von den uC weggeht und sich den reinen Speicherbausteinen zuwendet sieht man die Unterschiede. M28C64 ist ein EEPROM. Das steht auch so im Datenblatt. M28F001 ist ein Flash. Im Datenblatt ist nirgendwo der Begriff EEPROM zu lesen (es sei denn beim EEPROM kompatiblen Pinout). Dort steht immer Flash Memory. In den hunderten Datenblättern zu Flash die ich gelesen habe wird das bei allen Herstellern so durchgezogen. EEPROM's sind immer byte/wordweise programmierbar. Bei Flash kann man zwar teilweise einzelne bytes/words programmieren, aber man muss dann eine Page, einen Sektor oder sogar den ganzen Chip vorher löschen. Bei EEPROMS braucht man das nicht zu tun. Flash und EEPROM unterscheiden sich also darin wie die zu beschreibenden Datenbereiche vorher gelöscht werden. In der Wikipedia wurde der Begriff leichtfertig verwendet. EEPROM trifft rein von der Übersetzung auf beides zu. Da stimme ich dir zu. Es sind aber zwei unterschiedliche Technologien. Wenn man es genau nimmt stimmt schon der Begriff EEPROM nicht mehr. ROM ist ein nur lesbarer Speicher. Ein EEPROM und einen Flash kann man aber in der Schaltung beschreiben ! Ich hoffe ich habe mein bestes getan die allgemeine Verwirrung noch zu vergrößern ;) schnell weg
@holger >EEPROM trifft rein von der Übersetzung auf beides zu. Und exakt das ist der entscheidene Satz. Was irgendwann mal von irgendwelchen (oder allen) Herstellern/Entwicklern/Anwendern zur besseren Unterscheidung in den allgemeinen Sprachgebrauch überführt wurde ist hierfür unerheblich. Ein Flash (-EEPROM) ist nunmal elektrisch "lösch"bar und damit definitiv ein EEPROM. Und selbstversändlich es ist auch ein ROM, da es im Betrieb eben nicht einfach mit einem Befehl beschrieben werden kann, so wie es gelesen werden kann. Stattdessen ist das Beschreiben hier ein Programmieren, das zwar im Betrieb, aber nur unter bestimmten Bedingungen durchgeführt werden kann, wie z. B. "warten bis fertig". >Es sind aber zwei unterschiedliche Technologien. Ich denke nicht. Elektrisches Löschen und Löschen mit UV-Licht sind zwei unterschiedliche Technologien. Der noch Besserwissende ;-) Jetzt wirds aber zu OT.
>Stattdessen ist das Beschreiben hier ein Programmieren, das >zwar im Betrieb, aber nur unter bestimmten Bedingungen durchgeführt >werden kann, wie z. B. "warten bis fertig". Das ist auch bei RAM so. Zuerst muss eine bestimmte Adresse angelegt werden, dann kann ein Datenbyte geschrieben werden. RAM ist also auch EEPROM :) jetzt aber ganz weg
Morgen! @ Bastian: Softtune Workbench mit Fujitsu Compiler 16Bit MB90350 Serie Habe eine riesen Menge an Array's die mir den RAM. Da diese sich nicht verändern wollte ich diese im ROM halten. Ich kannte es vom KEIL das man so etwas wie folgt erledigen kann: code unsigned char daten[100] = {1,2,3,....,99}
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.