EEPROM verkleinern

OP #4165496
Lesenswert?

Hi Leute,

bin seit einer Woche in einer kleinen Firma als Überbrückungsarbeit bis 
mein Studium beginnt.
Hab eine HTL Ausbildung in Elektrotechnik.
Nun zu meinem Problem der Chef will, dass ich in ein µ-Prozessorsystem 
mit einem Intel 80C196KC20 (16 Bit Systembus) einen Profibus ASIC 
implementiere und diesen wir dann über den Systembus vom µP ansteuern.
Aber wir haben zu wenig freie Adressen um den ASIC zu implementieren.
Aber wir haben ein EEPROM mit einer Größe von 56 k welches wir nicht 
voll ausnutzen.

Hat einer einen Tipp für mich wie ich am einfachsten rausfinde wie viel 
vom EEPROM genutzt wird und um wie viel ich es verkleinern kann?

Mit freundlichen Grüßen
Max
Gast #4165501
Lesenswert?

Max Wildfellner schrieb:
> Aber wir haben ein EEPROM mit einer Größe von 56 k

Hmmm, EEPROM mit 56k - sehr ungewöhnlich.
a) EERPOMs haben wie auch andere Speicher immer (sehr wenige Ausnhamen) 
einen Speicherbereich von 2^n Bit - die 56k sind nicht passend. Nochmal 
prüfen
b) EEPROMs sind normalerweise serielle Speicher und über einen 
Speziellen Bus angesprochen. Auch heir nochmals prüfen.

Kann es esin dass Du ein EPROM meinst?

rgds
OP #4165514
Lesenswert?

Hab vergessen zu erwähnen dass es um die Speicherbereichaufteilung geht.
Der ASIC wird 2 k Ram haben und die haben wir nicht mehr zur Verfügung 
weil das EEPROM so viel weg nimmt.

MfG
Max

PS. Oder hab ich einen kompletten Denkfehler und ich schreib hier nur 
Blödsinn?
Gast #4165518
Lesenswert?

Max Wildfellner schrieb:
> Nein ist ein EEPROM genaue Bezeichnung M93C86WMN6.

AAAlso.

Das ist ein 2kx8 also 16kbit EEPROM. Da dieses über den seriellen Bus 
angesprochen wird gehe ich davon aus das diese nicht in den 
Speicherbereich direkt gemapped ist. Damit sollte der Speicherbereich 
frei sein. Ist aber über die FW zu prüfen.

>Im makefile ist die Range des EEPROMs mit 0x2000 - 0xF9FF angegeben.
Huch, das solltes Du aber nochmals genauer prüfen was das sein soll.

rgds
Gast #4165530
Lesenswert?

Max Wildfellner schrieb:
> Im makefile ist die Range des EEPROMs mit 0x2000 - 0xF9FF angegeben.

Was im Makefile steht und an welchen Adressen ein Speicher tatsächlich 
hardwaremässig auftaucht, muss keineswegs was miteinander zu tun haben, 
wenn der Programmierer nicht durchblickt, von selbst ist das nicht 
richtig. Es sollte natürlich im Makefile was sinnvolles stehen, aber 
wenn ein serielles EEProm da auftaucht, ist das in jedem Fall Unsinn.

Also erste Aufgabe: Speicherbelegung erstellen und verifizieren - die 
echte, nicht Fantasien im Makefile. Wahrscheinlich findet sich da viel 
mehr als nur 2 kB freier Speicherplatz.

Georg
Gast #4165563
Lesenswert?

Ich kenne den C196 nicht, aber wenn ihr ext. Komponenten angeschlossen 
habt UND diese einen parallelen Daten-/Adressbus besitzen, dann müsste 
doch irgendwo vermerkt sein, welche Komponente bei welchen Adressen die 
/CS Signale erzeugt. Oder wird das ASIC über einen seriellen Bus (SPI, 
I2C...) angesprochen?
Gast #4165571
Lesenswert?

Die EPLD (GAL/PAL oder komplexeres CPLD?) Logik zu verstehen sollte für 
Dich als E-Techniker sicher einfach sein.
Speicherbelegung des internen RAM/ROM/was-auch-immer ist vermutlich 
starr und somit im C196 Manual nachlesbar.
#4165602
Lesenswert?

Max Wildfellner schrieb:
> Aber wir haben zu wenig freie Adressen um den ASIC zu implementieren.

Dunklel ist Deiner Rede Sinn. Was meinst Du eigentlich mit "ASIC 
implementieren"? Einen ASIC eines Herstellers in die Schaltung einbauen 
und einen Treiber samt Profibus-Stack dafür schreiben? Oder lediglich 
einen mitgelieferten Stack da noch in die bereits existierende Firmware 
mit einbauen? Oder willst Du tatsächlich das was Du schreibst, nämlich 
ein ASIC selbst entwerfen und fertigen lassen? Letzteres wohl eher nicht 
oder wieviele 100k€ hast Du zur Verfügung?

Versuch bitte mal das Wort "implemetieren" komplett aus Deinem 
Wortschatz zu streichen so lange bis Du ein Gefühl dafür bekommst wie 
andere es korrekt verwenden und bis dahin versuche die Sachverhalte mit 
den verbliebenen Worten verständlich zu beschreiben.
Gast #4165606
Lesenswert?

Einen groben Anhaltspunkt könnte Dir das Auslesen des EPROMs liefern. 
Ungenutzte Bereiche liegen üblicherweise am Ende des Adressbereiches. 
Letzteres hängt mit dem Trend normaler Compiler zusammen, die Daten am 
"Anfang" zusammenzupacken.

Selbst wenn verschiedene Bibliotheken zusammengelinkt werden, werden im 
Anschluss deren Daten an die bereits genutzten angehängt.

Übrigens, Du brauchst nicht den ganzen Code zu analysieren. Es reicht 
aus die zum EPROM gehörigen Bereiche (Adressen) zu suchen und zu 
verfolgen.
#4165609
Lesenswert?

Max Wildfellner schrieb:
> Soll ich jetzt den ganzen Sourcecode analysieren?

Ja natürlich. Du kannst ihn Dir narürlich auch erklären lassen falls 
noch jemand von denen lebt die das Gerät damals entworfen haben, das 
geht vielleicht etwas schneller.

Oder wie sonst denkst Du kannst Du in eine existierende Firmware noch 
"mal eben" einen Profibus Stack ranfrickeln ohne die bisher 
existierenden Teile des Gerätes und seiner Firmware bis ins Detail 
verstanden zu haben?
Gast #4165625
Lesenswert?

Amateur schrieb:

> Einen groben Anhaltspunkt könnte Dir das Auslesen des EPROMs liefern.
> Ungenutzte Bereiche liegen üblicherweise am Ende des Adressbereiches.
> Letzteres hängt mit dem Trend normaler Compiler zusammen, die Daten am
> "Anfang" zusammenzupacken.

1. Dein Name ist Programm
2. Lesen ist nicht deine Stärke
Gast #4165642
Lesenswert?

Irgendwo im Startup Code wird eine Routine das serielle EEPROM auslesen 
und in einen bestimmten RAM Bereich kopieren. Diese Routine würde ich 
mir mal angucken, vieleicht hat man da für Erweiterungen einen Großen 
Bereich reserviert den man nutzen könnte wenn man das EPLD entsprechen 
umkonfiguriert und einen neuen CS generiert. Für diesen RAM Bereich darf 
die Adressdecoder Logik dann natürlich kein CS mehr für den RAM 
decodieren sondern für deinen ASIC.
OP #4165755
Lesenswert?

Bin jetzt der Speicherbereichsaufteilung nochmal auf den Grund gegangen 
und hab gesehen auf der Doku steht bei uns das 0x0000-0x1FFF für den 
Prozessor intern gebraucht werden.

Im Manual vom Prozessor steht aber dass der Prozessor nur von
0x0000-0x01FF und 0x1FFE-0x1FFF.

Das heißt ja dass ich den Bereich von 0x01FF - 0x1FFE ohne Probleme 
benutzen kann oder?

Für den ASIC brauch ich eh nur 152 Adressen.
Da würde sich ja 0x0200 - 0x02FF gut anbieten?

MfG
Max
Gast #4165779
Lesenswert?

> und die Adressen dazwischen können
> für externe Speicher vergeben werden.
Da wird dann der externe RAM liegen und FLASH usw.
Diese Bereiche werden dann von der Adressdekodierlogik im PLD aus den 
Adressleitungen dem RD/WR Signal usw. in die entsprechenden CS Signale 
dekodiert.
Du mußt also nur die PLD Logik anpassen.
(Firma: Vescomp) #4165793
Lesenswert?

Max Wildfellner schrieb:
> Im Manual vom Prozessor steht aber dass der Prozessor nur von
> 0x0000-0x01FF und 0x1FFE-0x1FFF.
>
> Das heißt ja dass ich den Bereich von 0x01FF - 0x1FFE ohne Probleme
> benutzen kann oder?
>
> Für den ASIC brauch ich eh nur 152 Adressen.
> Da würde sich ja 0x0200 - 0x02FF gut anbieten?

 Ich verstehe nur Bahnhof...
 Wovon redest du überhaupt ?

 M93C86WMN6 wird über SPI-Bus angesprochen, hat mit freien oder
 benutzten Prozessor-Adressen überhaupt nichts am Hut.
OP #4165862
Lesenswert?

Ok um das ganze jetzt ein wenig aufzulösen, am Board gibt es ein EEPROM 
welches seriell angesprochen wird und ein Flash Speicher welcher am 
Adress/Datenbus hängt.

In der Speicherbereichsaufteilung stehen die Flash Speicher als EEPROM 
drinnen, drum der ganze Fehler!

Das andere Problem ist das die ganze Doku schon etwas durcheinander ist 
da das Grundgerüst des Boards schon sehr lange steht und immer wieder 
etwas neues dazu kam und somit haben zu viele Köche die Suppe versalzen.

Danke für die Hilfe

MfG
Max
Moderator (Firma: Titel) Persönliche Seite #4165945
Lesenswert?

Im Besonderen macht für mich das Mapping eines SPI-EPROMS für den 
Compiler keinen (absolut keinen) Sinn. Denn ich kenne keinen Compiler, 
der einen Speicherzugriff automatisch in mehrere SPI-Zugriffe auflöst. 
Ein SPI-EEPROM muss per Handschlag abgehandelt werden.

Und was hat denn das EEPROM mit der eigentlichen Aufgabe zu tun? Stehen 
da irgendwelche Konfig-Daten drin?

Max Wildfellner schrieb:
> ... um den ASIC zu implementieren.
Du solltest deine Terminologie nicht allzu weitschweifig ausfassen: 
"einen ASIC implementieren" bedeutet landläufig, ein HDL Projekt 
(Verilog, VHDL, SystemC oder was auch immer) über einen Synthesizer und 
die restliche Toolchain laufen zu lassen, dass am Ende der ASIC dabei 
herauskommt.
#4165962
Lesenswert?

@ Lothar Miller (lkmiller) (Moderator) Benutzerseite

>Im Besonderen macht für mich das Mapping eines SPI-EPROMS für den
>Compiler keinen (absolut keinen) Sinn. Denn ich kenne keinen Compiler,
>der einen Speicherzugriff automatisch in mehrere SPI-Zugriffe auflöst.

Ich schon. Die LON-uCs von Echelon machen das, FT5000 heißt das Ding.

http://www.echelon.com/products/ft-5000-smart-transceiver

>Ein SPI-EEPROM muss per Handschlag abgehandelt werden.

Nicht zwingend.


>> ... um den ASIC zu implementieren.
>Du solltest deine Terminologie nicht allzu weitschweifig ausfassen:

Bullshit Bingo!
(Firma: Vescomp) #4165964
Lesenswert?

Lothar Miller schrieb:
> Im Besonderen macht für mich das Mapping eines SPI-EPROMS für den
> Compiler keinen (absolut keinen) Sinn. Denn ich kenne keinen Compiler,
> der einen Speicherzugriff automatisch in mehrere SPI-Zugriffe auflöst.
> Ein SPI-EEPROM muss per Handschlag abgehandelt werden.
>
> Und was hat denn das EEPROM mit der eigentlichen Aufgabe zu tun? Stehen
> da irgendwelche Konfig-Daten drin?

 Eben.
 Und egal was da auch drin steht, EEPROM hat mit benutzten oder freien
 Adressen nichts zu tun, das hat mit Memorymapping nichts zu tun.
OP #4165997
Lesenswert?

@Cyblord Ja wär mir auch lieber gewesen ihr über SPI anzusteuern, aber 
wir bauen keine Chips mit einer Betriebsspannung von 3,3 V ein und der 
ASIC mit 5V unterstützt nur den Adress/Datenbus.

Für die die nicht alles lesen, dass das EEPROM Adressen verwendet war 
ein Missverständnis!

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