DE102011010650A1 - Entwicklungsumgebung für Mikroprozessoren - Google Patents

Entwicklungsumgebung für Mikroprozessoren Download PDF

Info

Publication number
DE102011010650A1
DE102011010650A1 DE201110010650 DE102011010650A DE102011010650A1 DE 102011010650 A1 DE102011010650 A1 DE 102011010650A1 DE 201110010650 DE201110010650 DE 201110010650 DE 102011010650 A DE102011010650 A DE 102011010650A DE 102011010650 A1 DE102011010650 A1 DE 102011010650A1
Authority
DE
Germany
Prior art keywords
processor
pins
pin
simulation
development
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE201110010650
Other languages
English (en)
Inventor
Alfred Brühn
Xenia Brühn
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sciknowtec GmbH
Original Assignee
Sciknowtec GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sciknowtec GmbH filed Critical Sciknowtec GmbH
Priority to DE201110010650 priority Critical patent/DE102011010650A1/de
Publication of DE102011010650A1 publication Critical patent/DE102011010650A1/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

Verfahren durch das die von einem Mikroprozessor angebotenen Funktionen während einer beginnenden Entwicklung schnell, effizient und für die Softwareentwicklung testbar bereitgestellt werden können sowie, Anordnungen dazu. Mikroprozessoren sind aus der heutigen Produktentwicklung nicht mehr wegzudenken; sie kommen praktisch in fast allen modernen Produkten vor. Da während einer Produktentwicklung aber HW- und SW-Entwicklung fast immer parallel zueinander laufen und somit in zu Beginn die HW des jeweils geplanten Produkts für die SW-Entwicklung (und umgekehrt) noch nicht zur Verfügung steht, ergibt sich in der Anfangsphase einer Entwicklung eine nur eingeschränkte Testbarkeit. Zwei parallel liegende, funktionell 1:1 verbundene Prozessoren des gleichen Typs werden eingesetzt. Der erste Prozessor, der je nach Sichtweise als Primär- oder Arbeitsprozessor bezeichnet wird, wird für das Produkt programmiert. Ein zum Arbeitsprozessor „funktionell parallel” liegender, gleicher Prozessor, der als Sekundär-Spiegel- oder Simulationsprozessor bezeichnet wird, übernimmt die Aufgabe, eine (wenn auch nur simulierte) Hardwareumgebung für den Arbeitsprozessor bereitzustellen. Eigenschaft und die Nützlichkeit von Evaluationboards und Prozessormodulen werden durch die erfindungsgemäßen Anordnungen zusammengeführt und bleiben in einem gemeinsamen Konstrukt erhalten. Darüber hinaus ermöglicht die erfindungsgemäße Anordnung durch eine mit dem Sekundärprozessor erzeugte, simulierte HW, eine schnell gegebene Testbarkeit.

Description

  • Die Erfindung bezieht sich auf ein Verfahren durch das die von einem Mikroprozessor bzw. von einem Mikrokontroller (im Folgenden nur als Mikroprozessoren bezeichnet) angebotenen Funktionen bereits in der Anfangsphase einer beginnenden Entwicklung schnell und effizient bereitgestellt werden kann. Sie bezieht sich in diesem Zusammenhang auch darauf, eine mit einem geplanten Produkt vergleichbare Hardwareumgebung (HW-Umgebung) bereits in der Anfangsphase einer beginnenden Entwicklung bereitstellen zu können.
  • Stand der Technik
  • Mikroprozessoren sind hoch integrierte und mächtige Bauelemente von unterschiedlicher Größe (von klein, mit evtl. nur geringer Integrationstiefe und nur wenigen Anschlüssen (Pins) bis sehr groß, mit hoher Integration und mit hunderten von Pins), die aus der heutigen elektronischen Produktentwicklung nicht wegzudenken sind. Sie kommen in fast allen modernen Produkten, die Elektronik enthalten vor.
  • In einem fertigen Produkt übernimmt ein solcher, mittels Software (SW) frei programmierbarer Mikroprozessor sehr viele unterschiedliche Funktionen. Über bestimmte Pins nimmt er Daten und/oder Signale aus der Umgebung auf, verarbeitet die damit verbundenen Informationen und gibt über andere Pins Daten und/oder Signale (Spannungen oder Ströme) nach außen aus.
  • Trotz ihrer Mächtigkeit sind sie – gemessen an der Funktionalität, die sie bieten – mechanisch von kleinem Aufbau. Um die Funktionen, die sie bieten können, nach außen auch bereitstellen zu können, benötigen sie aber trotzdem i. a. sehr viele Anschlüsse (Pins). Das bedingt zwangläufig sehr eng beieinander stehende Anschlüsse (Pins), die nur schwer oder – auf einer Platine – sogar gar nicht mehr von außen zugänglich sind.
  • Dies stellt eine erste Schwierigkeit dar, weil sie in dieser Form – zumindest in der Anfangsphase einer einmal begonnenen Entwicklung – oftmals ohne Hilfsmittel nicht leicht zu handhaben sind.
  • Eine weitere Schwierigkeit ist die in der Anfangsphase einer SW-Entwicklung nur eingeschränkt vorhandene Testbarkeit der SW, weil zu Beginn meist die HW des geplanten Produkts noch nicht zur Verfügung steht.
  • Während der laufenden Entwicklung werden (möglichst frühzeitig) den Prozessorpins benötigte Eigenschaften zugeordnet. Dabei wird z. B. festgelegt, ob ein Pin Eingang oder Ausgang ist, ob sie einer Sonderfunktion zugeordnet sein sollen, usw. Moderne Prozessoren haben allerdings die Eigenschaft, dass den einzelnen Pins oftmals mehr als nur eine Funktion zuwiesen werden kann. So gibt es Spezialfunktionen wie Analog-Digital- und Digital-Analog-Wandler (ADC bzw. DAC) denen ein Pin als Eingang oder Ausgang zugeordnet werden kann.
  • Wenn eine solche Wahl einmal getroffen ist, entfallen natürlich alle anderen, dem jeweiligen Pin auch möglicherweise zuzuordnenden Funktionen. Die Zuordnung eines Pins zu einer definierten Funktion wird dabei i. a. durch definierte Register festgelegt bzw. durch die Werte, die definierten Registern (an festen Registeradressen) während einer Initialisierungsphase zugewiesen werden. Die Menge der Register, die diese Funktionen bzw. diese Eingänge, Ausgänge usw. festlegen, ist beschränkt, so dass die Nutzer in der Lage sind, dem Prozessor im Rahmen der Programmierung die gewünschten Pinfunktionen zuzuweisen.
  • Je größer ein Prozessor bzw. seine Peripherie wird (die interne Peripherie), desto deutlicher ist oftmals das Verhältnis zwischen Funktionszuweisungsmöglichkeiten und der Anzahl von vorhandenen Port-Pins ausgeprägt. (Sehr vielen Funktionalitäten steht eine hohe, aber eben doch eingeschränkte Zahl an Anschlüssen gegenüber).
  • Je größer die mögliche Funktionalität eines Prozessors allerdings ist, desto größer ist auch der zu betreibende Aufwand bei der Funktionszuordnung der Pins. Im Zusammenspiel zwischen der Hardware und der Software kann sich das auch im zu betreibenden Testaufwand niederschlagen.
  • Die Anzahl an Möglichkeiten, einen Prozessor zu konfigurieren und seine Funktionen durch geeignete Software (SW) zu nutzen, macht den Ersteinstieg in die jeweilige Prozessortechnik gerade bei einer Ersteinführung von Prozessoren oder bei einem Prozessorwechsel nicht gerade einfach.
  • Aus diesen Gründen ist es folgerichtig und bekannt, dass von den Herstellern oder mit den Herstellern von Mikroprozessoren zusammenarbeitende Firmen Entwicklungsboards oder Evaluationboards angeboten werden, mit deren Hilfe sich ein Anwender in die Eigenschaften eines Mikroprozessors relativ schnell und leicht einarbeiten kann. Der zukünftige Nutzer macht anhand derartiger Evaluationboards mit dem Prozessor seine ersten Erfahrungen und muss nicht schon bei den ersten Versuchen mit dem Prozessor bzw. beim Kennenlernen hohe Hürden überwinden. Eine meistens mitgelieferte Software (SW) erlaubt den schnellen Einstieg auch in die Programmierung des jeweiligen Prozessors. Derartige Evaluationboards sind inzwischen als ein geeignetes Mittel erkannt worden, um einem Nutzer und damit potentiellen Abnehmer des Produkts ”Mikroprozessor” den schnellen Einstieg in die Funktionen eines derart komplexen ICs zu ermöglichen.
  • Naturgemäß sind dabei derartige Instrumente nicht nur technisch interessant; sie sind auch gut geeignete Mittel des Marketings. Das Angebot des jeweiligen Prozessorherstellers, mit einem Entwickungsboard einen schnellen Einstieg zu ermöglichen, verspricht (nicht nur dem Nutzer nicht nur im Marketing-Jargon) ein „Rapid-Prototyping” oder ein verkürztes „Time to Market”. Derartige Instrumente ermöglichen das tatsächlich und sind auf allen Ebenen nützliche Werkzeuge. Für den Nutzer bieten sie den schnellen Einstieg, für den Hersteller des jeweiligen Bausteins die Sicherheit, dass nicht wegen einer zu langen Einarbeitungszeit ein von ihm produzierter Prozessor den Weg in den Markt nicht findet.
  • Derartige Evaluationboards haben allerdings oftmals selbst eine erhebliche Komplexität erreicht. Meist werden derartige Evaluationboards bereits mit einer kompletten Umgebung und (externen) Peripherie geliefert (z. B. Displays, LEDs, Potentiometer, Tasten, usw.). Daneben wird auf einem solchen Evaluationboard oftmals ein kleiner Bereich für zusätzliche Aufbauten des Entwicklers freigehalten. In diesem Bereich kann der sich in die Funktionen eines neuen Mikroprozessors einarbeitende Entwickler eigene Aufbauten bzw. eigene Schaltungen einfügen und zusammen mit dem Evaluationboard in Betrieb nehmen. Für jeden neuen Testaufbau einer eigenen Schaltung benötigt der Anwender aber jeweils ein neues Evaluationboard oder er muss einmal aufgebaute Schaltungen wieder aus- und die neuen Schaltungen einlöten.
  • Neben diesem Weg, sich der Funktionalität eines Mikroprozessors über Evaluationboards zu nähern, ist das Problem der mechanisch schwierigen Handhabbarkeit der extrem miniaturisierten Bausteine zu lösen. Deshalb ist ein anderer, zweiter Ansatz, sich einem neuen Mikroprossesor zu nähern, durch die Form der Prozessormodule gegeben:
    Derartige Module, beispielhaft dargestellt anhand der , bestehen aus einer minimalst gehaltenen kleinen Platine (14) mit dem Prozessor-IC (15) selbst, einem Steckerplatz (19) über den der Prozessor (15) auf der Platine ”programmiert” werden kann (z. B. ein JTAG-Zugang), einem Quarz (17) für die Takterzeugung, einer Stromversorgungszuführung mit den benötigten Entkopplungskondensatoren (18). Vor allem die leichter handhabbaren, nach außen gezogenen Anschlüsse (16) des Mikroprozessors (i. a. auf ein 2,54 mm Rastermaß, das mechanisch gut handhabbar ist) bietet Vorteile während einer laufenden Entwicklung. Diese Mikroprozessor-Module sind also die minimalistisch beschalteten Prozessoren (also nur der kleine IC-Bausteine selbst) die funktionsfähig auf eine gerade noch ohne Hilfsmittel manuell nutzbare Größe gebracht worden sind, ohne selbst bereits Funktionen des Mikroprozessors wirklich zu verwenden.
  • Analysiert man daraus Anforderungen und Ansätze der auf denn bisherigen Stand der Technik vorhandenen Entwicklungshilfen, dann findet man zusammenfassend:
    • 1. das Realisieren einer Handhabbarkeit durch eine geeignete Anpassung der kleinen IC-Bauformen auf leichter handhabbare Größen (Vergrößerung des ICs auf besser handhabbare IC-Rastermasse durch ein IC-Modul).
    • 2. die Nutzung von HW-Basismodulen (Evaluationboards oder Entwicklungsboards), die schnell aufzeigen, wie typische Peripherieelemente (LEDs, LCDs, Tasten, usw.) mit dem Mikroprozessor verbunden werden können und wie diese betrieben werden können. Der Nutzer kann von diesen Vorgaben ausgehend eigene Hardwarekonstruktionen ableiten oder anpassen.
    • 3. die Nutzung von Softwarevorschlägen oder SW-Basismodulen, die ia. zusammen mit dem Evaluationboard geliefert werden oder aus dem Netz von meist gut gepflegten und umfangreichen Applikationsseiten bezogen werden können und mit denen auch die Evaluationboards zeigen, was der jeweilige Prozessor kann. Von diesen Vorgaben kann der Entwickler ausgehen, um seine eigenen Softwarearbeiten schnell zu entwickeln.
  • Indem viele Details der Evaluationboards und Anwendungsvorschläge als Bibliotheksinhalte (sowohl HW-Schaltungen als auch SW-Vorgaben betreffend) geliefert werden, kann dies als Ausgangspunkt für einen komfortablen und schnellen Einstiegs in die Prozessornutzung und für die Entwicklung genutzt werden. Damit ist nicht nur dem jeweiligen Nutzer geholfen, sondern auch dem Hersteller des Mikroprozessors, der sein Marketing unterstützen kann, indem er dem Anwender einen schnellstmöglichen Einstieg versprechen kann. Der Anwender nimmt derartige Konstruktionshilfen i. a. dankbar an, erleichtert dies doch erheblich die eigene Arbeit und seinen eigenen Aufwand.
  • Oftmals baut der Nutzer im Rahmen eines Entwicklungsvorhabens ein für seine Zwecke besser geeignetes Evaluationboard (z. B. auch unter Nutzung von Prozessormodulen) selbst auf. Dabei wird eine zu Beginn einer Entwicklung nur ansatzweise einschätzbare Hardwareumgebung mit dem Mikroprozessor so verbunden, dass ein bei Entwicklungsbeginn noch unklares HW-Umfeld später noch nachgerüstet werden kann. Mit einer solchen ”Prototyp-Hardware” ist der Anwender dann relativ schnell in der Lage, zu erwartende Details der Produktumgebung frühzeitig in das Entwicklungsgeschehen mit einbeziehen. Allerdings ist hierbei der zu betreibende Aufwand durch den konkret auszuführenden Aufbau auch nicht unbedingt klein. Ein solches Vorgehen ist auf dem Stand der Technik aber dennoch relativ schnell und effizient und an sich auch ohne Alternative.
  • Der notwendige Prozess einer Produktentwicklung enthält aber immer viele Schritte, bei denen die parallel arbeitenden Arbeitsgruppen der SW-Entwicklung und der HW-Entwicklung an sich jeweils die Ergebnisse der jeweils anderen Gruppe benötigen. (Um die eigenen Arbeiten testen und abschließen zu können). Analysiert man vor diesem Hintergrund die auf dem bisherigen Stand der Technik gegebenen Entwicklungsvorgänge (vor allem in größeren Projekten), dann findet man unabhängig vom tatsächlichen Entwicklungsprozess u. a.:
    • 1. Eine Spezifikationsphase, in der die Eigenschaften des zu erstellenden Produkts festgelegt werden.
    • 2. Eine Aufteilung der zu erbringenden Arbeiten auf mehrere Abteilungen, Gruppen oder Personen die, evtl. sogar international getrennt an verschiedenen Orten, an einem Projekt zusammen arbeiten.
    • 3. Eine oftmals zeitgleich oder zumindest zeitnah stattfindende Aufnahme der von den beteiligten Gruppen auszuführenden Arbeiten. Hardware und Software werden also zunächst gleichzeitig entstehen.
    • 4. Erst zum Ende der Entwicklung hin können umfangreiche Überprüfungs- oder Testarbeiten stattfinden, in der erst dann Fehler im Zusammenspiel von SW und HW aufgedeckt werden.
  • Weil nun aber einerseits noch keine Hardware vorliegt, mit der die entstehende Software getestet werden könnte, andererseits noch keine Software vorliegt, mit der die zeitgleich entstehende Hardware getestet werden könnte, entsteht (bei einem i. a. sehr engen Zeitkorsett) fast immer das Dilemma, dass parallel zueinander Entwicklungen vorangetrieben werden, aber die Entwickler erst in der letzten Phase des Entwicklungsgeschehens tatsächlich in der Lage sind, ihre jeweiligen Entwicklungen unter realen Bedingungen testen zu können. Mit allen Konsequenzen, die sich hieraus ergeben. Eine sich erst während dieser letzten Testphasen ergebende, aber fast immer notwendige Korrekturschleife ist im Entwicklungsgeschehen kein ungewöhnliches Ereignis. Das kann u. U. jegliche Zeitplanung zunichte machen.
  • Vor diesem Hintergrund ist es die Aufgabe der Erfindung, die bestehenden Instrumente und/oder die Auslegung der Entwicklungsumgebung zu verbessern. Aufgabe der Erfindung ist es auch, schnellstmöglich Testmöglichkeiten für alle an einer Entwicklung beteiligten Gruppen bereitzustellen und in diesem Zusammenhang auch, die Hersteller von Mikroprozessoren in die Lage zu versetzen, eine solche Umgebung schnell bereitzustellen.
  • Dies wird mit den kennzeichnenden Mitteln des Anspruchs 1 erreicht.
  • Danach werden mindestens zwei, parallel liegende, funktionell 1:1 verbundene Prozessoren des gleichen Typs eingesetzt. Während der eine Prozessor in dieser erfindungsgemäßen Anordnung (der je nach Sichtweise als Primär-, Arbeits- oder Zielprozessor bezeichnet werden soll) alle bekannten Funktionen von Entwicklungsumgebungen für eine laufende Entwicklung bereitstellt, übernimmt der mindestens eine dazu „funktionell parallel” liegende, gleiche Prozessor (der je nach der im Kontext gegebenen Sichtweise als Sekundär-Spiegel- oder Simulationsprozessor bezeichnet werden soll) die Aufgabe, eine (wenn auch nur simulierte) Hardwareumgebung für den Arbeitsprozessor bereitzustellen.
  • Die Eigenschaften und die Nützlichkeit von Evaluationboards und Prozessormodulen werden durch die erfindungsgemäßen Anordnungen zusammengeführt, bleiben in einem gemeinsamen Konstrukt erhalten und erweitern die Möglichkeiten einer Entwicklungsumgebung dadurch, dass mit dem Sekundärprozessor eine virtuelle Entwicklungsumgebung simuliert wird.
  • Die Erfindung ergibt sich im aufgezeigten Zusammenhang u. a. aus der gedanklichen Vorstellung, dass jeder Pin des Arbeitsprozesssors, der als Eingang konfiguriert wird, ein Signal von einem – wie auch immer aussehenden – außerhalb des Prozessors liegenden Ausgang erhalten wird und ein Prozessorpin, der als Ausgang konfiguriert wird, ein Signal liefert, das nach außen einem – wie auch immer aussehenden – Eingang zugeleitet wird. Für den Prozessor und die in ihm implementierte Software ist es dabei an sich völlig egal, woher derartige Signale kommen und wohin derartige Signale letztendlich gehen. Solange die Signale, die von einer Simulation stammen, an den Eingangspins des Arbeitsprozessors mit den Signalen einer späteren Hardware übereinstimmen, wird die softwaredefinierte Reaktion des Arbeitsprozessors darauf (testbar) gleich ausfallen. Wenn eine Simulation (aus Sicht des Arbeitsprozessors) auf softwaredefinierte Signale gleich reagiert, dann werden sich die Testergebnisse einer für den Arbeitsprozessor erstellten Software nicht unterscheiden.
  • Um das zu erreichen, genügt es gedanklich, zwei Prozessoren des exakt gleichen Typs funktionell eins zu eins zu verbinden, sie also parallel anzuordnen. Der eine Prozessor dieser Konfiguration kann als der eigentliche Arbeitsprozessor angesehen werden; der andere Prozessor kann für eine Hardwaresimulation genutzt werden. Auf Grund seiner dann identischen Anschlussanordnung stellt der Simulationsprozessor gewissermaßen einen Spiegel des Arbeitsprozessors dar und wird deswegen auch als Spiegelprozessor bezeichnet. Jeder Pin, der im erfindungsgemäßen Konstrukt zum Arbeitsprozessor gehört, findet am exakt gleichen Pin des Spiegelprozessors, der als Simulations- oder auch Spiegelprozessor bezeichnet werden soll, ein entsprechend Pendant vor.
  • Im Entwicklungsprozess wird der Arbeitsprozessor für eine Softwareentwicklung, bei der eine solche erfindungsgemäße Anordnung genutzt wird, im bekannten Sinne genutzt: Eine auf einem PC entwickelte Software wird – z. B. über geeignete Schnittstellen – in den Programmspeicher des Prozessors „eingeflasht” und dann getestet. Bekannte Entwicklungsschritte bei der Entwicklung eines Programms bleiben also unverändert bestehen.
  • Im Allgemeinen ist ein Pin des Arbeitsprozessors, nachdem einmal festgelegt wurde, als was er genutzt werden soll, entweder Ein- oder Ausgang. Das wird vom Entwickler festgelegt, indem er in einer Initialisierungsphase (z. B. nach dem Einschalten der Stromversorgung) spezielle Bits in speziellen Registern im jeweiligen Prozessor auf 0 oder 1 setzt. Unabhängig vom letztendlich vorliegenden Programm ist die vom Entwickler festgelegte Register- bzw. Arbeitsstruktur des Arbeitsprozessors zu jedem Zeitpunkt stets eindeutig; das bedeutet, dass zugleich auch festliegt, wie der Simulations- oder Spiegelprozessor konfiguriert sein muss, weil im Arbeitsprozessor und im Spiegelprozessor die Pin-Funktionen diesbezüglich funktionell gegensinnig geschaltet werden sollen. Diese Aufgabe kann automatisch, z. B. durch eine (Präprozessor-)Software während des Übersetzungsprozesses automatisiert ausgeführt werden.
  • Für einfache I/O-Funktionen ist das einfach auszuführen. Allerdings kann das nicht immer in vergleichbarer Weise an allen Pins durchgeführt werden. Der erfindungsgemäße Ansatz, die (i. a. identischen) Prozessoren funktionell 1:1 zu verbinden, bleibt zwar erhalten, wird bei modernen – vor allem bei sehr großen Prozessoren – aber nicht immer an allen Pins gleichartig durchzuführen sein. Im Einzelfall muss die jeweilige Prozessorstruktur genauer betrachtet und beachtet werden, was aber am erfindungsgemäßen Ansatz nichts Wesentliches ändert.
  • Ein typischer Mikroprozessor besteht aus dem Kern und einer in den IC-Baustein integrierten Peripherie. Der Kern ist die eigentliche Recheneinheit und ist immer vorhanden, wird aber – vom Prozessor abhängig und von verschiedenen Herstellern kommend – unterschiedlich sein. Zu der integrierten Peripherie können die folgenden Teile gehören:
    • 1. Schaltungen eines Clock-Managements (diese sind unterschiedlich ausgestaltet, aber immer vorhanden; Watchdog-, Reset-Funktionen, u. a. sind hier zuzuzählen),
    • 2. Schaltungen für das Power-Management und für die Stromversorgung,
    • 3. Timerbausteine (sind fast immer vorhanden, aber u. U. unterschiedlich konstruiert)
    • 4. Register und Speicherbausteine (RAM, ROM, Flash-Speicher, usw.),
    • 5. Schnittstellenbausteine (I2C, UART, CAN, usw.)
    • 6. besondere Schnittstellen (z. B. der Programmierzugang, z. B. JTAG)
    • 7. Analog-Digital-Wandler/Digital-Analog-Wandler/Analogstufen
    • 8. Spezialfunktionen (z. B. integrierte HF-Bausteine u. a.)
    • 9. allgemeine I/O-Ports
  • Einige dieser Peripheriebausteine haben nichts mit Pins zur Außenwelt, also mit den Anschlüssen des Prozessors zu tun (z. B. interne Watchdog-Funktionen) und treten nach außen u. U. gar nicht in Erscheinung.
  • Anschlusspins können außen hin eine individuelle aber unveränderliche Bedeutung haben. So ist die Bedeutung von Pins zur Stromversorgung (z. B. Vcc, DGND, AGND, usw.) i. a. eindeutig und unveränderlich festgelegt. Anschlüsse für eine Quarzanbindung bzw. für eine Taktzuführung sind i. a. ebenfalls fest definiert und haben keine andere, als diese eine, im Datenblatt des Prozessors angegebene Funktion.
  • Anschlüsse, die z. B. als Flash-Eingänge genutzt werden und/oder die einem Debugger-Konzept zugeordnet sind (JTAG, Nexus), stellen einen weiteren Anschlusstyp dar. Die Bedeutung dieser Anschlüsse soll hier individuell und eindeutig für die dafür vorgesehene Funktion vorgesehen sein. Derartige Anschlusspins werden bei den erfindungsgemäß parallel liegenden Prozessoren unabhängig voneinander angeschlossen, d. h. jeder Prozessor wird an diesen Pins unabhängig von anderen, parallel liegenden Prozessoren im Rahmen der vorgesehenen Funktion beschaltet und angeschlossen:
    • – Bei den Anschlüssen der Stromversorgung liegen diese Anschlüsse unabhängig voneinander, aber naturgemäß miteinander verbunden vor,
    • – Quarze sind unabhängig voneinander mit dem jeweiligen Prozessor verbunden; jeder der funktionell parallel liegenden Prozessoren hat i. a. sein eigenen Quarzanschluss
    • – über z. B. JTAG „flashed” der Nutzer seine entwickelte Software in den Prozessor ein, hierüber kann er seine Software und den Programmablauf testen, usw. Dies betrifft i. a. nur wenige Pins (z. B. V+, GND und Signalzuleitungen) über die der Mikroprozessor Daten mit z. B. einem PC (auf dem die eigentliche Softwareentwicklung läuft) austauscht. Derartige Anschlüsse stellen einen weiteren (reservierten) Anschlusstyp dar.
  • Allgemeine digitale I/O-Ports haben nach außen eine (bitweise) veränderliche Bedeutung als Ein- oder Ausgang. Derartige Anschlusspins werden bei erfindungsgemäß parallelen Prozessoren direkt miteinander verbunden und werden komplementär konfiguriert.
  • Anschlüsse, denen Mehrfachfunktionen (z. B. neben allgemeinen, digitalen I/O-Funktionen auch integrierte Zähler, IRQs, ADCs, DACs oder analoge Funktionen, wie z. B. Operationsverstärker oder Comparatoren, usw.) zugeordnet werden können, sind im erfindungsgemäßen Rahmen u. U. modifiziert zu behandeln.
  • Aus diesen Unterscheidungen und anderen Überlegungen heraus sind daher zu unterscheiden:
    • 1. Unveränderliche, gemeinsam genutzte Prozessorpins (Versorgungsanschlüsse wie Vcc, Gnd, usw.).
    • 2. Unveränderliche, nicht gemeinsam genutzte Prozessoranschlüsse (Anschlüsse für Quarze, JTAG, usw.)
    • 3. Reserviert genutzte Prozessoranschlüsse (z. B. Anschlüsse, die auf einem Evaluationboard bereits vom Arbeitsprozessor genutzt werden und nicht mehr für andere Anwendungen frei genutzt werden können). Eine Verbindung zwischen Primär- und Sekundär-Prozessor kann – muss aber nicht – entfallen. Die Pins des Sekundärprozessors werden hier fest als Eingänge konfiguriert und nicht weiter genutzt.
    • 4. Digital genutzte Pins. Diese werden 1:1 verbunden, Sekundär- und Primärprozessoren werden komplementär konfiguriert.
    • 5. Digital genutzte Pins von Kommunikationsschnittstellen. Diese werden u. U. ebenfalls 1:1 verbunden. Sekundär- und Primärprozessoren werden aber nicht immer einfach nur komplementär konfiguriert. Es sind andere, u. U. gekreuzte Zuordnungen, Master-Slave-Konfigurationen, usw. zu berücksichtigen.
    • 6. Prozessoranschlüsse mit Spezialfunktionen, wie z. B. analoge Ein- und Ausgänge für ADC- und DAC-Funktionen. Hier werden umschaltbare Verbindungen zwischen Primär- und Sekundärprozessor benötigt.
    • 7. Spezielle Prozessoranschlüsse, die evtl. zu berücksichtigen sind.
  • Wesentlich ist, dass jeder Pin des Arbeits- oder Primärprozessors dem gleichen Pin eines Spiegel- oder Sekundär-Prozessors funktionell zugewiesen ist. An diesem Pin wird vom Spiegel- oder Sekundär-Prozessor eine (HW-)Umgebung für den Arbeitsprozessor simuliert. Die Konfiguration wird für den Arbeitsprozessor vom Entwickler wie gewohnt festgelegt; für den Spiegel- oder Sekundär-Prozessor wird die Konfiguration während des Übersetzungsprozess automatisiert abgeleitet und zugeordnet.
  • Für den Arbeitsprozessor kann der Spiegelprozessor so Signale aus einer Umgebung bereits zu einem Zeitpunkt bereitstellen, zu dem eine reale Hardware noch gar nicht vorliegt. Bei einer SW-Anpassung wird der Simulationsprozessor sofort – automatisch – angepasst werden. Wenn die zugehörige Software der Simulationsumgebung komfortabel genug ausgestaltet wird, dann wird die Softwareentwicklung nur noch wenig Stellen finden, die sie nicht vorher bereits im Rahmen dieser HW-Simulation testen konnte.
  • Es muss allerdings gesehen werden, dass mit dieser erfindungsgemäß veränderten Umgebung eine zusätzliche Softwareentwicklung – zeitgleich mit dem Beginn der Arbeiten der Entwicklung – anlaufen muss, um die geplante Hardware zu simulieren. Hierzu werden aber im Laufe der Zeit für die Simulationsaufgaben SW-Module entstehen, die aus Bibliotheken (z. B. beim Hersteller) abrufbar sein werden. Ein derartiges Vorgehen unterscheidet sich aber nicht wesentlich vom Konzept einer Funktionsdarstellung auf einen Evaluationboard auf dem Stand der Technik.
  • Direkt aus den von der SW-Entwicklung geschriebenen Sourcecodes oder den beim Übersetzen (Compilieren und Linken) sich ergebenden Zwischenergebnissen wie z. B. den Listfiles, Mapfiles und/oder Objektfiles des entwickelten Programms für den Primärprozessor) könnten sehr viel weitergehende Analysen entwickelt werden. Ein in den Übersetzungsablauf zwischengeschaltetes (Präprozessor-)Programm könnte z. B. die Konfiguration und große Teile der gesamten SW des Sekundärprozessors und der evtl. vorhandenen Schaltfunktionen daraus ableiten. Mit einem solchen (Präprozessor-)Programm bestünde z. B. die Möglichkeit, in eindeutiger Weise all die Stellen zu finden, die in einem Prozessor während der Initialisierung die Eigenschaft der Pins eines Prozessors festlegen (z. B. ob ein bestimmter Pin als Ein- oder als Ausgang konfiguriert wird, welche Funktion vorgesehen ist, usw.). Eine derartige Analysesoftware könnte also den. Primärprozessor komplett automatisch konfigurieren, da das in aller Regel eindeutig ist.
  • Das heißt, die erfindungsgemäße, parallele Zusammenschaltung zweier Prozessoren, von denen jeder für sich einzeln geflasht und u. U. auch getrennten Entwicklungssystemen zugeordnet sein kann, ermöglicht eine variable und frei programmierbare Umgebung, in der dem Primärprozessor in eindeutiger Weise eine (simulierte) Hardware weit gehend automatisiert zugeordnet werden. kann.
  • Damit besteht die Situation, dass der Arbeitsprozessor von der Softwareentwicklung wie bisher frei programmiert werden kann (das bisherige Vorgehen bei der Entwicklung bleibt ja erhalten, zumindest soweit es die eigentliche Produktentwicklung betrifft) und im Rahmen des üblichen Softwaretestmanagements unverändert die Software entwickelt werden kann. Gleich zu Beginn liegt aber eine (simulierte) Hardware durch den jeweiligen Sekundärprozessor vor; so kann die gerade entstehende Software frühzeitig getestet werden.
  • Der Sekundärprozessor stellt darüber hinaus eine nützliche Schnittstelle zur Kommunikation zwischen der HW-Entwicklung und der SW-Entwicklung dar: Die frühzeitig vorhandene und laufend aktualisiert an die Hardwareabteilung übergebene Software des Simulationsprozessors erlaubt den HW-Entwicklern (durch Vergleich des von der Softwareabteilung erwarteten bzw. angenommen Hardwareverhaltens) frühzeitig Unterschiede zwischen den Annahmen der SW-Entwicklung und dem realen Hardwareverhalten aufzuspüren und zu kommunizieren.
  • Mit dem erfindungsgemäßen Instrumentarium kann der oben aufgelistete Entwicklungsprozess unabhängig vom tatsächlichen Entwicklungsprozess modifiziert werden; man benötigt
    • 1. Wie zuvor eine Spezifikationsphase, in der die Eigenschaften des zu erstellenden Produkts festgelegt werden. Bereits jetzt kann aber eine (noch nur theoretisch angenommene) HW beschrieben und für die HW-Simulation spezifiziert werden.
    • 2. Wie zuvor erfolgt eine Aufteilung der zu erbringenden Arbeiten auf mehrere Abteilungen, Gruppen oder Personen die, evtl. sogar international getrennt an verschiedenen Orten, an einem Projekt zusammen arbeiten. Zusätzlich wird aber ein SW-Entwickler für die HW-Simulation benannt.
    • 3. Wie zuvor bleibt eine zeitgleich oder zumindest zeitnah stattfindende Aufnahme der von den beteiligten Gruppen auszuführenden Arbeiten. Hardware und Software werden also zunächst gleichzeitig entstehen. Gleichzeitig wird die HW-Simulation entstehen. Wenn in Zukunft evtl. geeignete Bibliotheken mit geeigneten Simulationselementen von Seiten der Hersteller erst einmal zur Verfügung stehen (in etwa so, wie das heute auf dem Stand der Technik von den Evaluationboards her bekannt ist), dann wird der Aufwand dafür in der Regel nicht größer sein, als das Einschalten und Kennenlernen eines Evaluationsboard auch heute erfordert.
    • 4. Nicht erst zum Ende der Entwicklung hin, sondern praktisch sofort können umfangreiche Überprüfungs- oder Testarbeiten stattfinden, in der frühzeitig Fehler im Zusammenspiel von SW und HW aufgedeckt werden können.
  • Die Erfindung soll anhand der beigefügten Abbildungen dargestellt werden:
  • stellt auf dem Stand der Technik die Normalsituation bei einer Prozessornutzung in einer Produkthardware dar. Ein Arbeitsprozessor (1) ist ein integrierter Schaltkreis (IC, Chip) und ist Teil einer ”um ihn herum” aufgebauten elektronischen Schaltung (2). Die Art der Schaltung in der Umgebung des Prozessors ist für das darzustellende ohne Bedeutung. Die Verbindungen zwischen dieser Hardwareumgebung (2) und dem Prozessor (1) werden durch Anschlusspins hergestellt, mit denen der IC auf der Schaltung (i. a. eine Platine) aufgelötet wird.
  • Die Funktionen, die ein Prozessor an diesen Pins jeweils für diverse Anwendungen bereitstellt, sind zwar durch den Aufbau der Prozessorhardware festgelegt, die tatsächlichen Pinfunktionen werden aber im Detail erst durch die jeweilige Software während einer Initialisierungsphase und somit durch die Entwickler festgelegt. Zu den an den Pins verfügbaren Funktionen zählen z. B. digitale Eingänge (4) oder digitale Ausgänge (3) gegeben durch allgemeine I/O-Anschlüsse (6), aber auch Anschlüsse (8) zu unterschiedlichsten Funktionsblöcken (10), zu Peripherieeinheiten (11), zu Analogfunktionen (5), zu Analog-Digital- (ADCs) oder zu Analog-Digital-Wandlern (DACs), Spannungsreferenzen und/oder andere analoge Funktionen gehören dazu. Anschlüsse zur Stromversorgung (13), (12) und Anschlüsse (9), um den Prozessor programmieren zu können. Anschlüsse für Quarze (7) und für diverse andere Funktionen (6), (8) stehen darüber hinaus zur Verfügung.
  • Die um den Prozessor (1) herum aufgebaute Hardware (2) ist je nach Produkt und vorgesehener Anwendung von unterschiedlicher Art. Durch die Flexibilität der Prozessoren (1) erscheint der Einsatz derartiger Prozessoren im gewissen Sinne universal zu sein; es ist aber zu beachten, dass die Anschlüsse des in der Schaltung letztendlich arbeitenden Prozessors (1) eindeutig konfiguriert sein müssen (z. B. um nicht zwei Ausgangsfunktionen gegeneinander arbeiten zu lassen). Im fertigen Produkt wird also ein IC (der Mikroprozessor) eingesetzt, der über definierte als Eingang konfigurierte Pins, Daten oder Signale aus der Umgebung aufnimmt (der Prozessor sieht sich gewissermaßen seine eigene Umgebung durch die anliegenden Signale an) und der über andere, als Ausgang konfigurierte Pins, Daten oder Signale Pins (Spannungen oder Ströme) ausgibt (der Prozessor gibt Daten an die Umgebung aus).
  • Für den Prozessor selbst ist es dabei egal, woher diese Signale an seinen Pins stammen und wohin die von ihre ausgegebenen Signale gehen. Exakt gleiche Signale könnten aus einer ganz anderen Quelle stammen, z. B. einem beliebigen Simulationstool, das lediglich eine solche Schaltung simuliert – je nach Qualität der Simulation würden sich die Reaktionen und Aktionen des Prozessors (1) nicht von denen in einer „echten” Hardware unterscheiden. Je nach Qualität einer solchen Simulation wäre eine Software, die zu einer Hardwareumgebung, die erst noch entstehen soll, entwickelt wird, aber bereits zu testen. Tatsächlich müssen diese Möglichkeiten, Hardware-Simulationstools wie z. B. PSpice dazu zu nutzen, als ein mächtiges Instrument gesehen werden; hier soll aber an Hand der die erfindungsgemäß gegebene Möglichkeit zur Simulation dargestellt werden. (Es sei angemerkt, dass sich die beiden Möglichkeiten, also eine Simulation mittels mächtiger Simulationsprogramme und eine Simulation mittels eines typgleichen oder auch eines ungleichen, evtl. mächtigeren Prozessortyps, nicht einmal wirklich ausschließen):
    Die zeigt wieder den Primär- bzw. Arbeitsprozessor (26), wie das auch in der im Vordergrund dargestellt ist. Statt der realen Hardware der wird hier aber angenommen, dass eine zweite Einheit (27), die hier als Sekundär- oder Simulationsprozessor bezeichnet wird, zu dem anderen Prozessor parallel geschaltet ist.
  • Gedanklich kann man annehmen, dass der Sekundärprozessor und der Arbeitsprozessor vom gleichen Typ und damit identische Anschlüsse und Anschlussreihenfolgen gegeben sind. Damit stellt dies, wenn identische Prozessortypen eingesetzt werden, praktisch eine 1:1-Verbindungen zwischen den Prozessoren her (Pin1 des Primärprozessors (26) wird „funktionell” mit Pin1 des Sekundärprozessors (27) verbunden, Pin2 mit Pin2 usw.). Im ersten Schritt kann man sich erst einmal vorstellen, dass die Verbindungen zwischen Sekundärprozessor und Primärprozessor „irgendwie” mit komplementären Pinanschlüssen erfolgt.
  • Da hier zwei Prozessoren vorliegen, werden diese beiden Prozessoren jeweils auch in einer eigenen Entwicklungsumgebung eingebettet sein (dass dazu nicht unbedingt zwei getrennte Rechner eingesetzt werden müssen, sei nur am Rande erwähnt).
  • Für jeden Prozessor ist (einzeln) vorgesehen, dass dieser jeweils eine Schnittstelle (20), (21) für seine Programmierung aufweist, dass er die notwendigen Anschlüsse (36), (39) bzw. (40), (41) für seine Stromversorgung aufweist, dass jeder Prozessor eine eigene Takterzeugung hat und ihm dafür jeweils ein Quarz (24), (25) zugeordnet ist. Weiter ist angenommen, dass einige Anschlüsse (23), (38) spezifisch für Anwendungen des Primärprozessors sind bzw. dass einige Anschlüsse (23), (38), (22) für spezifische Prozessorprozesse reserviert sind.
  • Damit ist eine Projektion der Pins des Arbeitsprozessors auf die Pins des Simulationsprozessors vorstellbar, für eine funktionelle Zuordnung der physikalisch herzustellenden Verbindungen missen aber die Prozessorstrukturen im Einzelnen genauer betrachtet werden. (Das ändert am erfindungsgemäßen Ansatz zwar nichts Wesentliches, ändert aber doch die Art der „einfachen Direktverbindungen”; daher wird zur Unterscheidung i. a. der Begriff einer „funktionellen 1:1-Verbindung” verwendet.
  • Die Anschlüsse der Prozessoren zur Stromversorgung, also z. B. (36) und (39) für Vcc (42) und (40), (41) für GND (37) und/oder AGND, liegen naturgemäß untereinander verbunden vor. Entkopplungskondensatoren sind allerdings jedem Prozessor einzeln zuzuordnen.
  • Generelle digitale I/O-Funktionen sind unproblematisch; sie können bei den erfindungsgemäß parallel liegenden Prozessoren (26) und (27) direkt miteinander verbunden werden (29). Die beiden Prozessoren, also Sekundär- (27) und Primärprozessor (26), werden hier komplementär konfiguriert, wodurch einem Eingang ein Ausgang gegenübersteht und umgekehrt.
  • Anschlüsse (20) (21), die als Flashzugang genutzt werden und/oder die einem Debugger-Konzept zugeordnet sind (z. B. JTAG), stellen aber einen anderen Anschlusstyp dar; diese Anschlüsse (20) und (21) müssen u. U. jedem Prozessor einzeln zugeordnet bleiben. Quarze (24) (25) sind ebenso i. a. einzeln und unabhängig voneinander mit dem jeweiligen Prozessor verbunden. (Die Möglichkeit, nur einen Quarz für einen Prozessor einzusetzen und die gewonnenen Taktsignale für beide Prozessoren zu verwenden, sei hier am Rande erwähnt). Derartige Anschlusspins werden also auch bei erfindungsgemäß parallel liegenden Prozessoren unabhängig voneinander angeschlossen. (Entkopplungskondensatoren sind zwar im Verbindungskonzept unwesentlich, sind aber im realen Aufbau jedem Prozessor ebenfalls einzeln zuzuordnen).
  • Als reserviert zu sehende Prozessoranschlüsse (23) (z. B. Pins, die auf einem Evaluationboard bereits von genutzten Funktionen okkupiert sind und die dadurch für den Entwickler nicht mehr für eigene Anwendungen genutzt werden können) fallen aus dem Konzept der komplementären und funktionellen 1:1-Verbindungen u. U. heraus. Eine Verbindung dieser Anschlüsse zwischen dem Primär- und Sekundär-Prozessor kann – muss aber nicht – entfallen. Wird eine solche Verbindung (z. B. für eine spätere Nutzung zwischen (22) und (23)) beibehalten, dann genügt es, die Pins des Sekundärprozessors als Eingänge zu konfigurieren; so stören sie nicht. Alternativ können hier aber auch schaltbare Verbindungen (28), (30) zwischen den Prozessorpins eingesetzt werden. Derartig schaltbare Verbindungen machen das Konzept ohnehin universeller, wie gleich zu sehen ist.
  • Digital genutzte Pins von Kommunikationsschnittstellen stellen an sich keine abweichenden Anforderungen und werden funktionell ebenfalls 1:1 verbunden. Allerdings kommen Fälle vor, bei denen Sekundär- und Primärprozessoren u. U. nicht mehr einfach komplementär konfiguriert werden können, sondern zudem noch andere Rahmenbedingungen, z. B. gekreuzte Zuordnungen zu berücksichtigen sind. Die diesbezüglichen Konfigurationen für den Sekundärprozessor können aber ebenfalls automatisiert aus der Konfiguration des Primärprozessors abgeleitet werden. Auch hierbei sind Schalterfunktionen (28), (30) u. U. nützlich.
  • Anschlusspins, denen neben den generellen digitalen I/O-Funktionen auch andere Funktionen zugeordnet werden können (ADCs, DACs, analoge Funktionen wie z. B. Operationsverstärker oder Comparatoren, Timer, IRQs, usw) sind im erfindungsgemäßen Rahmen u. U. anders zu behandeln. Hierzu werden umschaltbare Verbindungen zwischen Primär- und Sekundärprozessor u. U. benötigt.
  • In einigen Fällen ist es sinnvoll, an speziellen Signalpins von außen kommende, spezielle Signale bereitzustellen oder diese abzuleiten. Dazu gehören z. B. alle DACs und ADCs Funktionen sowie u. U. auch Schnittstellenfunktionen (CAN, USB, I2C usw.).
  • Anschlusspins des Arbeitsprozessors (26), die z. B. als Eingänge für einen ADC vorgesehen sind, werden am gleichen Pin nicht auch einen DAC vorgesehen haben (der Simulationsprozessors somit natürlich auch nicht), weil derartige Funktionen viel zu wertvoll sind. Somit wird es an derartigen Anschlusspins kaum möglich sein, eine adäquate komplementäre Funktion bereitzustellen.
  • DAC-Ausgänge oder PWM-Ausgänge, die am Arbeitsprozessor z. B. als DAC Ersatz genutzt werden, finden am Simulationsprozessor i. a. keinen pinkompatiblen ADC-Eingang und müssen deshalb ebenfalls einem ADC-Modul getrennt zugeführt werden. Signale müssen also u. U. extern erzeugt werden und/oder zur weiteren Nutzung oder Einschätzung nach außen geleitet werden.
  • Hierzu ist eine in dieser dargestellte, spezielle Schaltanordnung vorgesehen: Ein erster Schalter (30) kann die direkte Verbindung zwischen Primär und Sekundärprozessor trennen oder herstellen. Dies entspricht der Funktion des schon beschriebenen Schalters (28). Trennt er die direkte Verbindung (wie das in dargestellt ist), dann kann dieser Schalter (30) den entsprechenden Anschluss (43) des Prozessors (26) auf einen zweiten Schalter (32) legen. Mit diesem kann weiter entweder eine Eingangsfunktion (34) oder eine Ausgangsfunktion (33) auf den Prozessoreingang (43) geschaltet werden.
  • An dieser Stelle sei zudem angemerkt, dass es Sinn machen kann, für diese Eingangs- (34) und Ausgangsfunktionszugänge (33) offene Zuführungen, z. B. Steckverbindungen vorzusehen, um z. B. über Steckmodule derartige Funktionen zusätzlich bereitstellen zu können. Steckmodule könnten, zusammen mit der jeweiligen Software, im jeweiligen Prozessor-Marketing vorgesehen und bereitgestellt werden. Zum Beispiel könnten Modultests und Simulationsmodule – so wie Evaluationboards, aber in kleineren Einheiten lieferbar – zu jedem Prozessortyp gezielt aufgebaut werden.
  • Auch in dieser Anordnung kann alles – aus dem Programm für den Arbeitsprozessor ableitbar – automatisiert konfiguriert werden. Wird z. B. der Anschluss (43) des Primärprozessors (26) einer Sonderfunktion zugeordnet, das sei hier eine ADC- oder eine DAC-Funktion, dann werden in den Konfigurationsregistern des Primärprozessors (26) die entsprechenden Werte eingeschrieben. Bis hier unterscheidet sich eine Softwareentwicklung nicht vom Normalprozess.
  • Das Folgende läuft dann automatisiert ab: Zum Beispiel aus dem Quellcode oder aus den im Laufe des Programmübersetzungsprozesses (der Compilierung) entstehenden Dateien (Mapfile, Objektdatei, usw.) zum Arbeitsprozessor kann ein Übersetzungsprogramm diese Werte erkennen, kann daraus die Werte für den Simulationsprozessor ableiten: So wird der komplementäre Pin (44) des Simulationsprozessors als Eingang konfiguriert werden (damit stört dieser nicht), die Schaltverbindung (30) wird geöffnet bzw. eine Verbindung auf eine nach außen gehende Leitung (31) wird hergestellt.
  • Zugleich kann das Übersetzungsprogramm erkennen, dass vom Primärprozessor eine ADC- oder DAC-Funktion genutzt werden soll, weil z. B. der Anschluss (43) hier als Eingang oder Ausgang konfiguriert worden ist. Damit kann dieses Programm auch die Schalterstellung des Schalters (32) festlegen, um den Prozessoranschluss (43) extern auf einen Eingang (34) oder auf einen Ausgang (33) zu legen.
  • In der frühen Entwicklungsphase kann so die Hardware- und Softwareentwicklung über die jetzt schnell mögliche Hardwaresimulation die der Sekundärprozessor bereitstellt synchronisiert werden. Da bereits in der frühen Entwicklungsphase durch die simulierte Hardware zwischen der Hardware und der Software eine zusätzliche (aber das direkte Design betreffende) Schnittstelle entsteht, die beiden Gruppen, also der Software- und der Hardwareentwicklung Informationen zur Verfügung stellt, kann die Hardware-Software-Entwicklung darüber besser synchronisiert werden.
  • Während übliche Evaluationboards die Möglichkeit bieten, einen Prozessor überhaupt erst einmal kennen zu lernen, hat die erfindungsgemäße Anordnung den zusätzlichen Charme, dass eigene HW-Ideen (wenn auch simuliert) sofort in die Entwicklung einbezogen werden können.
  • Ein Vorteil der Erfindung besteht darin, dass mit einer Entwicklungsumgebung, die mit einem Evaluationboard vergleichbar ist, zugleich auch der Vorteil der eigenen Entwicklungsumgebung gegeben ist. Sowohl softwaremäßig als auch hardwaremäßig kann an einer Aufgabe parallel gearbeitet werden kann, ohne dass als Voraussetzung für Tests die Ergebnisse der jeweils anderen Gruppe benötigen.
  • Der Vorteil dieser Erfindung wird bei einem Prozessorwechsel deutlich, weil in diesem Fall die gegebenen Konstruktionen verwendet werden können: Der jeweils neue Primärprozessor und der Sekundärprozessor des neuen Prozessortyps müssen natürlich wieder funktionell 1:1 zusammen geschaltet werden. Die Softwareabteilung kann aber notwendige Adaptationen viel schneller durchführen, weil die ja bereits mit dem alten Prozessortyp realisiert und die somit vorhandene Simulationsumgebung sofort genutzt werden kann. Die alte Simulationsumgebung braucht nur wie ein Evaluationboard betrachtet werden.
  • Wenn ein solches „altes” oder ein vom Hersteller für einen bestimmten Prozessortyp angebotenes Evaluationboard zur Verfügung steht, kann die erfindungsgemäße Anordnung zusätzlich sinnvoll eingesetzt werden. Dies soll mit dargestellt werden:
    Erfindungsgemäß sind hier ein Arbeitsprozessor (55) und der eine Umgebung dafür simulierende Simulationsprozessor (52) wieder funktionell 1:1 verbunden. Je nach Funktionalität, die einem Anschlusspin zugewiesen werden kann, muss eine solche Verbindung mittels geeigneter Schalter hergestellt werden. Die Entwicklungsbedingungen sind die gleichen, wie bereits beschrieben: Indem z. B. über die JTAG-Anschlüsse (50) und (51) Verbindungen zu den entsprechenden Entwicklungsrechnern (hier nicht dargestellt) hergestellt werden, können für beide Prozessoren (52) und (55) unabhängig voneinander Programme entwickelt werden.
  • So entsteht ein Arbeitsprogramm für den Arbeitsprozessor (55), das eigentliche Zielprogramm für das geplante Produkt, und zudem ein Programm für den Simulationsprozessor (52), wodurch sich dieser (aus der Position der Pins des Arbeitsrechners gesehen) wie eine (tatsächlich u. U. erst später zur Verfügung stehende) reale Hardware verhalten kann.
  • Steht nun ein Evaluationboard (63) des Herstellers bereits zur Verfügung, dann werden mit der HW dieses Boards, die natürlich einen Prozessor (66) enthält, und der mitgelieferten SW zwar typische Peripherieelemente wie z. B. LCD-Anzeigen (64), Tastaturen (65) usw. und deren Nutzung aufgezeigt. Von dieser kann ein Entwickler für die eigene Arbeit erst einmal ausgehen.
  • Jedoch stellt dies i. a. nur einen ersten Ansatz für die weiteren Arbeiten dar, weil sich die spätere Produkthardware und die HW des Evaluationboard (63) meistens unterscheiden werden.
  • Ein Evaluationboard hat i. a. etliche Schnittstellen, hier z. B. durch (67) und (61) angenommen. Über eine der Schnittstellen (61) wird eine Verbindung (62) zu einem Entwicklungsrechner (60) hergestellt.
  • Mit einer weiteren Schnittstelle (67) kann eine Verbindung (68) zum Sekundärprozessor (52) hergestellt werden. Über eine solche Schnittstelle kann das Evaluationboard alle Eigenschaften der Peripherie auch dem Sekundärprozessor zur Verfügung stellen. Das wird bevorzugt an Anschlusspins des Sekundärprozessors (69) geschehen, deren funktionelle Zuordnung wegen „reservierter Pins” am Primärprozessors entfällt, hier bevorzugt solchen, die später für eine vom Evaluationboard schon demonstrierte Peripherienutzung vorgesehen sind. Hier sollen beispielhaft die Anschlüsse für eine spätere LCD-Anzeige am Primärprozessor angenommen werden.
  • Da durch die Festlegung dieser Pins (54) am Arbeitsprozessor (55) für eine LCD-Anzeige diese Pins zu „reservierten Pins” werden, wird die funktionelle 1:1-Verbindung zwischen Primär- und Sekundärprozessor, z. B. durch Öffnen oder durch Weglassen des zugehörigen Schalters, getrennt. Damit steht einer Verbindung mittels Kabel (68) von der Schnittstelle (67) zu den (reservierten) Pins des Sekundärprozessors (52) nichts mehr entgegen. Die natürlich benötigte Software, mit der die Daten zwischen dem Evaluationboard und dem Simulationsprozessor ausgetauscht werden, stellt i. a. keine sehr hohen Anforderungen an einen SW-Entwickler dar, wenn der Sourcecode des Programms des Evaluationboards zur Verfügung steht; tatsächlich brauchen – bei parallel laufenden, fast gleich aufgebauten Programmen – nur Speicherinhalte zwischen Evaluationboard (63) und Sekundärprozessor (52) gespiegelt zu werden.
  • Auf diese Weise kann der Sekundärprozessor (52) auch Funktionen des Evaluationboards (63) übernehmen und als Teil der für den Arbeitsprozessor (55) simulierten Umgebung für diesen nutzbar machen. Dabei müsste der Prozessor des Evaluationboard an sich nicht einmal vom gleichen Typ sein, wie der Arbeits- und Simulationsprozessor, obwohl das im gesamten Entwicklungsgeschehen natürlich sinnvoll wäre.
  • Abschließend sei noch angemerkt, dass mit dieser Erfindung auch neue Formen von Evaluationboards ausgebildet werden können: Erstens sind Realisationen möglich, bei denen – so wie das dargestellt – sowohl der Arbeitsprozessor (55) als auch der Simulationsprozessor (52) zusammen mit der Schaltung und den Elementen eines Evaluationboards (63) aus dem Stand der Technik auf einer gemeinsamen Platine vereint wird.
  • Auf denn Stand der Technik vorhandene Evaluationboards (63) könnten z. B. den Austausch von Daten mit dem Simulationsprozessor (52) über eine Standardschnittstelle (67) abwickeln. Ist eine solche Standardschnittstelle erst einmal definiert, dann genügt ein kleines und evtl. weitgehend standardisiertes Programm zur Übernahme von Funktionen aus dem Bereich (63) des alten Evaluationboards, z. B. über eine Verbindung, die in der durch den Stecker (67), die Verbindung (68) und die Pins (69) angedeutet ist. Das erscheint nur auf den ersten Blick schwierig zu sein, wäre aber sogar bei Nutzung von unterschiedlichen Prozessortypen auf den Evaluationboards (63) mit einem ersten Prozessor (66) und dem erfindungsgemäß für eine HW-Simulation verwendeten Prozessor (52) eine dann doch recht einfache Aufgabe.
  • Neben diesem möglichen „Vollaufbau” gemäß der , der als einzelne Platine oder in beliebigen Teilstücken vorliegen könnte, können Evaluation. Boards aufgebaut werden, die nur die beiden Prozessoren (52) und (55) auf einem Boards vorgesehen haben. Dazu können getrennt herausgezogene Schnittstellen (50) und (51) für einen Anschluss von Entwicklungsrechnern vorgesehen werden oder auch nur eine Schnittstelle, die die Verbindung zu den/dem Entwicklungs-PC gemeinsam herstellt. Dies entspräche dem Ausbau der Anordnung der .
  • Natürlich kann jede beliebige Kombination genutzt werden, z. B. könnte man sich (vgl. ) die Ausführung eines (neuartigen) Evaluationboards vorstellen, auf dem die Anordnung des klassischen Evaluationboards (63) zusammen mit dem Simulationsprozessor (52) vereint werden. Die Schalter bzw. Schaltanordnungen könnten darauf zusätzlich vorgesehen sein. In diesem Fall würde man bevorzugt die Schnittstelle (69) an Simulationsprozessor (52) und die Schnittstelle (61) auf dem Evaluationboard direkt, also ohne Kabel (68) zusammenlegen, so dass wieder nur ein Entwicklungsrechner (60) eingesetzt werden müsste.
  • Eine auf dem Evaluationboard auf dem Stand der Technik vorgesehene und nach außen gezogene Pinanordnung könnte den Arbeitsprozessor dann z. B. in Form eines Prozessormoduls (vgl. ) aufnehmen. Eine solche Anordnung würde vom Simulationsprozessor nur die Pins (69) okkupieren; der Rest der Pins des Prozessors stünde für die erfindungsgemäße Simulation einer HW des Arbeitsprozessors zur Verfügung.
  • Eine solche Anordnung würde alle Eigenschaften eines auf dem. Stand der Technik bekannten Evaluationboards (63) und die Möglichkeiten der erfindungsgemäßen Anordnung vorteilhaft vereinen. Die eventuell benötigten Schaltfunktionen (z. B. in : (30) (28) (32)) und die Verbindung zu den Außenfunktionen (33) (34) könnten auf diese Weise auf dem Evaluationboard direkt vorgesehen werden. Ob für eine Ausgangsfunktion (33) oder für eine Eingangsfunktion (34) lediglich Steckverbindungen bereitgehalten werden, oder ob man an diesen Stellen die benötigten speziellen Funktionen bereits auf dem Evaluation Board realisiert (z. B. kleine IC-Funktionsgeneratoren) oder ob man DAC-Funktionen für ADC-Funktionen und umgekehrt aufbaut, die man dann über die Schalter auf dem Entwicklungsboard dem Arbeitsprozessor zuführt, ist frei wählbar.
  • Mit diesem neuen Instrument bleiben die auf dem Stand der Technik bestehenden Möglichkeiten (bei der Einarbeitung in die Eigenschaften von neuen Prozessoren, bei der Einführung neuer Prozessoren und/oder bei einem beliebigen Entwicklungsbeginn) sowohl für die jeweilige Hardwareentwicklung als auch für die Softwareentwicklung erhalten, werden aber darüber hinaus vorteilhaft erweitert.

Claims (5)

  1. Entwicklungsumgebung für Mikroprozessoren, in der ein erster Prozessor (Primärprozessor) als Arbeits- und Entwicklungsprozessor eingesetzt wird und ein zweiter Prozessor (Sekundärprozessor) als Simulationsrechner zur Simulation einer Hardwareumgebung, dadurch gekennzeichnet, dass die Pins der Prozessoren, die als Primärprozessor und als Sekundärprozessor vom gleichen Typ sind, derart funktionell parallel verbunden werden, dass – die Funktion eines jeden Pins des Primärprozessors – funktionell dem gleichen Pin des Sekundärprozessors zugeordnet ist, – oder auf eine nach extern führende Zuleitung geschaltet wird, – wobei für die funktionelle Pin-zu-Pin-Zuordnung eine zur vorgesehenen Funktion des Primärprozessors komplementäre Funktion im Sekundärprozessor sichergestellt wird.
  2. Anspruch nach Anspruch 1, dadurch gekennzeichnet, dass die funktionellen Pin-zu-Pin-Verbindungen zwischen den Prozessoren derart komplementär ausgeführt sind, – dass alle Prozessorpins mit einer gleichen, unveränderlichen, fest genutzten Funktionalität direkt miteinander verbunden sind, – dass Prozessorpins mit einer gleichen, unveränderlichen, aber nicht gemeinsam genutzten Funktionalität, dem jeweiligen Prozessor einzeln zugeordnet bleiben und genutzt werden, – dass Prozessorpins mit allgemeinen digitalen I/O-Funktionen 1:1 verbunden werden und die Sekundär- und Primärprozessoren komplementär konfiguriert werden, – dass zu reservierten Anschlüssen am Arbeitsprozessor die Pins des Sekundärprozessors als Eingänge konfiguriert werden, – dass an Anschlüssen des Arbeitsprozessors, denen Spezialfunktionen zugeordnet werden können, umschaltbare Verbindungen vorgesehen werden, die eine Verbindung zwischen Arbeits- und Simulationsprozessor herstellen oder trennen können, – dass im Falle einer schaltbaren Verbindungstrennung zusätzlich der jeweilige Anschluss des Arbeitsprozessors auf einen externen Eingang oder Ausgang geschaltet werden kann, – dass Prozessorpins, die als Kommunikationsschnittstellen genutzt werden können, von diesem Schema auch abweichend konfiguriert werden können.
  3. Anspruch nach Anspruch 1 bis 2, dadurch gekennzeichnet, dass die Konfiguration des Simulationsprozessors aus der Konfiguration des Arbeitsprozessors mittels eines Programms abgeleitet und automatisch dem Arbeitsprozessor zugeordnet wird.
  4. Anspruch nach Anspruch 1 bis 3, dadurch gekennzeichnet, dass – als Eingänge konfigurierte Pins des Arbeitsprozessors auf die als Ausgänge konfigurierten gleichen Pins des Simulationsprozessors gespiegelt werden, – als Ausgänge konfigurierte Pins am Arbeitsprozessor auf die als Eingänge konfigurierten, gleichen Pins des Simulationsprozessors treffen, – Pins mit Sonderfunktionen des Arbeitsprozessors stets auf Eingangsfunktionen des Sekundärprozessors treffen,
  5. Anspruch nach Anspruch 1 bis 4, dadurch gekennzeichnet, dass durch Schaltanordnungen umschaltbar eine Zuordnung von externen Modulkomponenten zu Pins des Arbeitsprozessors möglich ist, wobei über solche Zusatzmodule Signale erzeugt werden, die dem Arbeitsprozessor zugeführt werden oder über solche Zusatzmodule auch Signale verarbeitet werden können.
DE201110010650 2011-02-09 2011-02-09 Entwicklungsumgebung für Mikroprozessoren Ceased DE102011010650A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE201110010650 DE102011010650A1 (de) 2011-02-09 2011-02-09 Entwicklungsumgebung für Mikroprozessoren

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE201110010650 DE102011010650A1 (de) 2011-02-09 2011-02-09 Entwicklungsumgebung für Mikroprozessoren

Publications (1)

Publication Number Publication Date
DE102011010650A1 true DE102011010650A1 (de) 2012-08-09

Family

ID=46547040

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201110010650 Ceased DE102011010650A1 (de) 2011-02-09 2011-02-09 Entwicklungsumgebung für Mikroprozessoren

Country Status (1)

Country Link
DE (1) DE102011010650A1 (de)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0410502B1 (de) * 1989-07-27 1997-05-28 Lsi Logic Corporation Methode und Gerät zur Wechselwirkung-Emulation zwischen einer anwendungsspezifischen integrierten Schaltung (ASIC) während der Entwicklung und ein Zielsystem
US20080050862A1 (en) * 2006-07-31 2008-02-28 Mitsumi Electric Co., Ltd. Method of manufacturing a single chip semiconductor integrated circuit device including a mask ROM in a short time

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0410502B1 (de) * 1989-07-27 1997-05-28 Lsi Logic Corporation Methode und Gerät zur Wechselwirkung-Emulation zwischen einer anwendungsspezifischen integrierten Schaltung (ASIC) während der Entwicklung und ein Zielsystem
US20080050862A1 (en) * 2006-07-31 2008-02-28 Mitsumi Electric Co., Ltd. Method of manufacturing a single chip semiconductor integrated circuit device including a mask ROM in a short time

Similar Documents

Publication Publication Date Title
DE19833208C1 (de) Integrierte Schaltung mit einer Selbsttesteinrichtung zur Durchführung eines Selbsttests der integrierten Schaltung
EP1720100B1 (de) Verfahren und Vorrichtung zur Emulation einer programmierbaren Einheit
DE10196310B4 (de) Vorrichtung und Verfahren zum Verifizieren eines Chip-Designs und zum Testen eines Chips
DE4400079C2 (de) Verfahren zur Prüfung von elektronischen Steuergeräten
DE3702408C2 (de)
DE102015113739A1 (de) Verfahren zum Verbinden einer Eingabe/Ausgabe-Schnittstelle eines für das Testen eines Steuergeräts eingerichteten Testgeräts
DE102006052757B4 (de) Verfahren zum Betrieb eines Automatisierungsgerätes mit einer Verarbeitungseinheit mit mehreren Verarbeitungskernen
EP1469320B1 (de) Verfahren zur Generierung von Testersteuerungen
DE102011009583B4 (de) Einfaches Erzeugen einer Fernsteuersequenz für Messgeräte
DE69122001T2 (de) Integrierte Schaltung mit einer Standardzelle, einer Anwendungszelle und einer Prüfzelle
DE102011010650A1 (de) Entwicklungsumgebung für Mikroprozessoren
WO2006035038A2 (de) Verfahren zum testen von steuergerätesoftware für ein steuergerät
DE10139660A1 (de) Programmgesteuerte Einheit
DE60003847T2 (de) Universelle vorrichtung sowie verfahren und werkzeuge zu ihrer verwendung
DE60001450T2 (de) Vorrichtung zur funktionellen Widergabe einer spezifischen integrierten Halbleiterschaltung und deren Verwendung als Emulationsvorrichtung
DE2848621C2 (de) Verfahren zur rechnergesteuerten Simulation der Funktion einer mit Logikschaltkreisen aufzubauenden Schaltungsanordnung
DE102021122253B3 (de) Instrument zur autarken ausführung von prüfsequenzen nach jtag-standard
EP3244325A1 (de) Verfahren zur zeitlich synchronisierten ausgabe und/oder zeitlich synchronisierten verarbeitung von signalen
DE102007007776B3 (de) Testsystem und Verfahren zum Prüfen einer Baugruppe
EP4086754A1 (de) Verfahren zur rechnergestützten konfiguration eines endgeräts, endgerät und betriebsverfahren für das endgerät
EP1349073B1 (de) Steuereinrichtung
DE102022127868A1 (de) Verfahren zum Durchführen einer Simulation
DE69814176T2 (de) Verfahren und gerät zum automatischen test eines simulierten integrierten schaltkreises
DE19906177C1 (de) Verfahren und Vorrichtung zur Übertragung von Simulationsmodellen zwischen Simulatoren
DE102014111304B4 (de) Homogenes Gerätezugriffsverfahren, welches physikalische Gerätetreiber in einem Computer-Betriebssystem entfernt

Legal Events

Date Code Title Description
R086 Non-binding declaration of licensing interest
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final