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
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
Max Wildfellner schrieb: > Aber wir haben zu wenig freie Adressen um den ASIC zu implementieren. Oftmals reicht es, wenn man Datenblöcke sequentiell schreiben oder lesen kann. Dann reicht eine Adresse mit Autoincrement dafür völlig aus. Und eine 2. Adresse benutzt man zum Setzen der Startadresse.
Danke schon mal für die schnelle Antwort. a) Im makefile ist die Range des EEPROMs mit 0x2000 - 0xF9FF angegeben. b) Wir sprechen das EEPROM auch mit einer seriellen Schnittstelle an. Nein ist ein EEPROM genaue Bezeichnung M93C86WMN6. MfG Max
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?
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
Max Wildfellner schrieb: > b) Wir sprechen das EEPROM auch mit einer seriellen Schnittstelle an. Belegt also gar keinen Adressraum, sondern ein paar Portpins des MCS-96. > Nein ist ein EEPROM genaue Bezeichnung M93C86WMN6. Das M93C86 ist ein SPI EEPROM mit 16kBit Speicher. Irgendwas ist euch da mit dem Adressschema durcheinander geraten.
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
Ok macht Sinn. Soll ich jetzt den ganzen Sourcecode analysieren? Weil dass wäre echt viel Arbeit. MfG Max
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?
Die CS Signale erzeugt ein EPLD, wird mich mal auf die Suche machen wie das EPLD programmiert ist. Nein der wird über Adress und Datenbus angesprochen. MfG Max
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.
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.
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.
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?
:
Bearbeitet durch User
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
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.
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
> Im Manual vom Prozessor steht aber dass der Prozessor nur von > 0x0000-0x01FF und 0x1FFE-0x1FFF. Gegurgelt werden kann?!
*Im Manual steht dass der Prozessor nur die Adressen 0x000-0x01FF und 0x1FFE-0x1FFF für Register braucht und die Adressen dazwischen können für externe Speicher vergeben werden.
> 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.
beim 80C196KC20 sind nur externe Speicher von: 0x0200 bis 0x1FFD und 0x2080 bis 0x5FFF möglich. steht auf Seite 3 zu Memory-Map:
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.
:
Bearbeitet durch User
Laß Dir zu dem Board das Manual geben. Da muß drinstehen, wie die Adressen dekodiert werden. Wenn es kein Manual gibt, das Board wegschmeißen. Hellsehen kann keiner.
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
Also mit "Profibus ASIC Implementieren" ist doch zu 99,9% gemeint, einen ASIC einfach zu NUTZEN. Wahrscheinlich ein VPC richtig?
ist doch alles kein Ding! Hast du mal nen Schaltplan? Wenn nich dann mach mal einen! Ansonsten kann dir keiner Helfen!
@Cyblord jop aufs Board kommt ein VPC3+C ASIC von Profichip. Hast du Erfahrungen mit dem Chip? @Uwe klar gibt's einen Schaltplan.
Max Wildfellner schrieb: > @Cyblord jop aufs Board kommt ein VPC3+C ASIC von Profichip. > Hast du Erfahrungen mit dem Chip? Ja, aber wir steuern den "klassisch" einfach direkt per SPI an. Deine Problemstellung mit der Ansteuerung über Adressen macht für mich wenig Sinn.
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.
@ 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!
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.
@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!
Und nochmal: ist doch alles kein Ding! Hast du mal nen Schaltplan? Wenn nich dann mach mal einen! Ansonsten kann dir keiner Helfen!
Mir wurde schon geholfen, den Rest schaff ich alleine, und sonst melde ich mich nochmal. MfG Max
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.