DE10231930A1 - Verfahren zum Zugreifen auf Abtastketten und zum Aktualisieren eines EEPROM-residenten FPGA-Codes durch einen Systemverwaltungsprozessor und einen JTAG-Bus - Google Patents
Verfahren zum Zugreifen auf Abtastketten und zum Aktualisieren eines EEPROM-residenten FPGA-Codes durch einen Systemverwaltungsprozessor und einen JTAG-BusInfo
- Publication number
- DE10231930A1 DE10231930A1 DE10231930A DE10231930A DE10231930A1 DE 10231930 A1 DE10231930 A1 DE 10231930A1 DE 10231930 A DE10231930 A DE 10231930A DE 10231930 A DE10231930 A DE 10231930A DE 10231930 A1 DE10231930 A1 DE 10231930A1
- Authority
- DE
- Germany
- Prior art keywords
- configuration
- eeproms
- code
- bus
- eeprom
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318533—Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
- G01R31/318558—Addressing or selecting of subparts of the device under test
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Stored Programmes (AREA)
Abstract
Ein Verfahren zum Aktualisieren eines programmierbaren Bauelementkonfigurationscodes, der in EEPROMs eines Systems gespeichert ist, ist auf komplexen Systemen mit separaten Verwaltungs- und Systemprozessoren betreibbar. Das Verfahren umfaßt das Ausführen einer Sequenz zum Aktualisieren eines programmierbaren Bauelementkonfigurationscodes auf einem Verwaltungsprozessor des Systems einschließlich der Schritte des Löschens der EEPROMs, des Schreibens von zumindest einem Block eines Konfigurationscodes an die EEPROMS und des Überprüfens nach Fehlern nach dem Schreiben. Die Fehler, nach denen in der Prüfung gesucht wurde, umfassen einen Ausfall eines FIFO bezüglich einer Leere. Nach dem Erfassen der Fehler umfaßt das Verfahren einen automatischen Wiederversuch des Schreibvorgangs. Die Ausführungsbeispiele des Verfahrens sind auf Systemen betreibbar, die mehrere serielle Busse aufweisen, die die EEPROMs mit einer gemeinsamen Konfigurationslogik verbinden, und auf Systemen, die mehrere Verwaltungsprozessoren aufweisen, die jeweils auf die gemeinsame Konfigurationslogik zugreifen können.
Description
- Ein zu dieser Anmeldung verwandter Gegenstand ist in den ebenfalls anhängigen, am gleichen Tag wie die vorliegende Anmeldung eingereichten deutschen Anmeldungen "VERFAHREN ZUM ZEITGERECHTEN AKTUALISIEREN VON PROGRAMMIERTEILEN", "VERFAHREN UND VORRICHTUNG FÜR EINE SERIELLE-BUS-ZU-JTAG- BUSBRÜCKE", "VERFAHREN UND VORRICHTUNG ZUR SYSTEMINTERNEN PROGRAMMIERUNG DURCH EINEN GEMEINSAMEN VERBINDUNGSPUNKT VON PROGRAMMIERBAREN LOGISCHEN BAUELEMENTEN AUF MEHREREN SCHALTUNGSPLATINEN EINES SYSTEMS", die alle hiermit durch Bezugnahme aufgenommen werden, beschrieben.
- Diese Erfindung bezieht sich auf die Technik des systeminternen Programmierens von programmierbaren logischen Bauelementen. Speziell bezieht sich die Erfindung auf ein Verfahren mit einem speziellen Dienstprogramm zur systeminternen Programmierung von EEPROMs, die einen Konfigurationscode FPGAs (field programmable gate arrays = feldprogrammierbare Gatterarrays) liefern, wobei das Verfahren in einer Firmware eines Systemverwaltungsprozessors betreibbar ist und eine IIC-JTAG-Busbrücke verwendet.
- Serielle Kommunikationsbusse des Separat-Takt-und-Daten- Typs werden immer häufiger zur Kommunikation zwischen integrierten Schaltungskomponenten eines Systems verwendet. Serielle Verbindungen diesen Typs umfassen die IIC- (die anfänglich als Inter-IC-Bus und nun in weiten Kreisen als I2C bekannt sind) und SPI-Busse. Verbindungen diesen Typs können ohne das Erfordernis von Präzisionszeitgebungskomponenten an jeder integrierten Schaltung auf dem Bus implementiert sein und arbeiten typischerweise unter der Steuerung von zumindest einem Bus-Master. Serielle EEPROM-Bauelemente (EEPROM = Electrically Erasable Programmable Read-Only Memory = elektrisch löschbarer programmierbarer Nur-Lese- Speicher), die mit seriellen Kommunikationsbussen des SPI- und IIC-Typs schnittstellenmäßig verbunden sind, sind überall erhältlich.
- Obgleich die I2C- und SPI-Busse typischerweise für Kommunikationen in Systemen während des Normalbetriebs verwendet werden, sollte der serielle IEEE-1149.1-Bus, der als JTAG- Bus bekannt ist, zum Testen von inaktiven Systemen verwendet werden, indem ein Zugriff von einem Tester ermöglicht wurde, um eine Randerfassung auf jeder integrierten Schaltung auszuführen. Der Tester kann dabei die Konnektivität der integrierten Schaltungen verifizieren und verifizieren, daß sie richtig installiert und verbunden sind. Der JTAG- Bus sorgt für eine Zwischenverbindung von einer oder mehreren integrierten Schaltungen in einer Kette, wobei jede derselben durch den Tester adressiert werden kann. Typischerweise sind mehrere Bauelemente auf einer Schaltungsplatine in einem JTAG-Bus, der auch als eine JTAG-Kette bekannt ist, verbunden.
- Der JTAG-Bus ist ein serieller Bus mit vier Verbindungen zu jedem Bauelement. Diese umfassen eine serielle Daten-Ein- Leitung, eine serielle Daten-Aus-Leitung, eine Taktleitung und eine Testmodus-Auswahlleitung. Typischerweise ist die Daten-Aus-Leitung eines ersten Chips in einer Kette mit der Daten-Ein-Leitung eines zweiten Chips der Kette gekoppelt, und die Daten-Aus-Leitung des zweiten Chips ist mit der Daten-Ein-Leitung eines dritten gekoppelt. Die Daten-Ein- und die Daten-Aus-Leitungen von mehreren Chips sind daher in einer Prioritätsverkettungskonfiguration gekoppelt.
- Der IEEE-1152-Bus ist eine neuere, verbesserte Version des 1149.1-JTAG-Busses. Hierin erfolgende Bezugnahmen auf einen JTAG-Bus sowohl die 1149.1-er als auch die 1152-er Variationen umfassen.
- Programmierbare Logikbausteine, die hierin als PLDs (programmable Loggia devices) bezeichnet werden, werden im allgemeinen als Komponenten von Computersystemen verwendet. Diese Bauelemente umfassen PAL-Bausteine (PAL = programmable array logic devices), PLAs (programmable logic arrays = programmierbare Logikarrays), komplexe programmierbare Logikanordnungen (PLDs = complex PLDs) und feldprogrammierbare Logikarrays (FPGAs). Die PLDs sind typischerweise Allzweckbausteine, die eine systemspezifische Funktion annehmen, wenn ein funktionsbestimmender Code oder Konfigurationscode innerhalb derselben eingebaut ist. Die PLDs können den funktionsbestimmenden Code in Schmelzverbindungen, Antischmelzverbindungen (Antifuses), EPROM-Zellen, EEPROM- Zellen einschließlich FLASH-Zellen oder statischen RAM- Zellen speichern.
- Diese PLD-Bausteine, die statische RAM-Zellen nutzen, um ihren funktionsbestimmenden Code zu halten, können konzipiert sein, um diesen Code aus einem EEPROM auf derselben oder einer anderen integrierten Schaltung beim Hochfahren des Systems automatisch wiederzugewinnen. Viele übliche FPGA-Bauelemente, die bei Xilinx, Altera, Lucent und Atmel erhältlich sind als SRAM-basierte FPGAs bekannt, weil sie ihre Codes in statischen RAM-Zellen speichern.
- Die FPGAs dieses Typs sind bekannt, die den Konfigurationscode von einem externen EEPROM entweder in einem seriellen oder parallelen Modus beim Hochfahren des Systems wiedergewinnen können. Diese Bauelemente sind typischerweise konfiguriert, um ihren Konfigurationscode beim Hochfahren des Systems automatisch wiederzugewinnen. Die FPGAs, die den Konfigurationscode in einem seriellen Modus wiedergewinnen, können konzipiert sein, um einen kundenspezifischen seriellen Bus, der zum Laden des Codes in ein FPGA konzipiert ist, zu verwenden, und können konzipiert sein, um einen seriellen Standardbus, wie die IIC- und SPI-Busse, zu verwenden, obwohl viele solche Bauelemente kundenspezifische serielle Busse verwenden. Der Begriff, serieller Bus, der hierin verwendet wird, umschließt daher die IIC-, SPI- und kundenspezifischen seriellen Busse.
- Es sind auch FPGAs bekannt, die einen Quersummenverifizierung an ihrem Konfigurationscode ausführen können, wenn sie denselben von einem EEPROM empfangen. Diese FPGAs erzeugen ein Fehlersignal, wenn die Quersummenverifikation scheitert, was anzeigt, daß ihr Konfigurationscode nicht richtig sein könnte.
- Es ist bekannt, daß einige EEPROM-Bausteine, einschließlich jedoch nicht beschränkt auf die Xilinx-XC18V00- Serienbausteine, mit dem JTAG-Bus verbunden sein können und mit einem Konfigurationscode über dem JTAG-Bus gelöscht und programmiert werden können. Ferner ist bekannt, daß diese Bauelemente mit einem FPGA verbunden sein können, um den Konfigurationscode an die FPGA zu liefern. Es ist ebenfalls bekannt, daß einige FPGA-Bauelemente zu Test- oder Konfigurationszwecken auch mit einem JTAG-Bus verbunden sein können.
- Es ist bekannt, daß ein tragbarer Programmierbaustein mit einem JTAG-Bus einer Platine durch einen systeminternen Konfigurationsanfangsblock auf der Platine verbunden sein kann. Der JTAG-Bus ist mit zumindest einem JTAGkonfigurierbaren EEPROM auf der Platine gekoppelt, die wiederum gekoppelt sind, um die FPGAs auf der Platine zu konfigurieren. Ein Konfigurationssystem ist mit dem JTAG-Bus durch den Anfangsblock gekoppelt, und das System ist in einem Konfigurationsmodus angeordnet. Der Konfigurationscode wird dann vom Konfigurationssystem durch den Anfangsblock und über den JTAG-Bus in den EEPROM geschrieben. Sobald sich der Code im EEPROM befindet, kann die Systemleistung ein- und ausgesteuert werden, wobei der Konfigurationscode zu diesem Zeitpunkt in das zugeordnete FPGA übertragen wird. Dieser Prozeß ist im XILINX-Datenblatt DSO26 und anderen von XILINX erhältlichen Dokumenten in wenigen Worten umschrieben.
- Das Konfigurationssystem ist typischerweise ein Notebook- Computer mit einem Konfigurationscode für die FPGAs der Platine. Das Konfigurationssystem weist auch eine geeignete Software und Hardware zum Treiben des JTAG-Busses der Platine zusammen mit dem Wissen um die JTAG-Buskonfiguration der Platine auf.
- Obgleich ein Laden des FPGA-Konfigurationscodes in die EEROMs einer Platine bei kleinen Systemen gut funktioniert, können bei großen Systemen Schwierigkeiten entstehen. Große Systeme weisen evtl. mehrere Platinen auf, von denen nicht alle mit dem gleichen JTAG-Bus verbunden sind. Separate Ketten werden häufig verwendet, weil:
- 1. Ein Konfigurationssystem das Wissen über alle Bauelemente in der Kette aufweisen muß, um jedes Bauelement auf der Kette ordnungsgemäß zu adressieren; wenn eine einzelne Kette verwendet wird, muß das Konfigurationssystem ein detailliertes Wissen über jede Platine in dem System aufweisen.
- 2. Große Systeme können Schlitze aufweisen, und tun dies auch häufig, die ein späteres Hinzufügen oder Aktualisieren von Peripheriegeräten, Speicher-Teilsystemen, Prozessoren und anderen Teilsystemen erlauben; ein zusätzlicher Schaltungsaufbau wäre erforderlich, um ein Brechen einer einzelnen Kette an einem beliebigen leeren Schlitz zu verhindern.
- 3. Große Systeme werden vor dem Versand häufig mit einem spezifischen Satz von Peripheriegeräten, Speicher- Teilsystemen, Prozessoren und anderen Bauelementen kundenspezifisch gefertigt; eine einzelne Kette könnte eine kundenspezifische JTAG-Schnittstellen-Software für jede Systemkonfiguration erfordern.
- 4. Ein Zugriff auf Bauelemente in kurzen Ketten erfolgt schneller als auf Bauelemente in langen Ketten. Eine einzelne Platine kann daher, muß aber nicht, mehr als eine Kette in der Platine verkörpern.
- Der Konfigurationsprozeß des Stands der Technik wirft auch Probleme auf, wenn separate JTAG-Busse verwendet werden, um den FPGA-Konfigurationscode in die EEPROMs von jeder Platine eines großen Systems zu laden. Zum Beispiel kann auf die mehreren Schaltungsplatinen von großen Systemen häufig nicht ohne weiteres zum Koppeln eines Konfigurationssystems mit einem Konfigurationsanfangsblock zugegriffen werden, ohne dieselben aus dem System zu entfernen. Es kann auf bestimmte Platinen zugegriffen werden, jedoch nur, wenn eine oder mehrere zusätzliche Platinen zuerst aus dem System entfernt worden sind. Durch den physischen Zugriff auf ein System durch einen Techniker können auch Anfahrtskosten anfallen. In jedem Fall fällt eine beträchtliche Arbeits- und Systemausfallzeit an, um die FPGA-Konfigurationscodes von allen Platinen eines großen Systems zu aktualisieren.
- Es ist bekannt, daß Computersysteme mehr als einen Datenkommunikationsbus für unterschiedliche Zwecke aufweisen können. Zum Beispiel weisen im Handel allgemein erhältliche Computer einen PCI-Bus für Kommunikationen mit Peripherieschnittstellenkarten, wobei ein oder mehrere Prozessorbusse mit jedem Prozessor schnittstellenmäßig verbunden sind, und Busse von anderen Typen auf. Komplexe Systeme können für spezielle Zwecke auch serielle Busse nutzen. Zum Beispiel kann ein komplexes Computersystem einen IIC- oder SPI-Bus als einen Systemverwaltungsbus verwenden.
- Eine Busbrücke ist ein Bauelement zum Verbinden von Bussen von unterschiedlichen Typen. Zum Beispiel nutzt ein typischer Personalcomputer zumindest eine Busbrücke zwischen parallelen Bussen, wobei ein Prozessorbus mit einem PCI-Bus gekoppelt ist. Typische Personalcomputer nutzten auch eine Busbrücke zwischen dem parallelen PCI-Bus und einem ISA- Bus.
- Ein Systemverwaltungsbus kann eine Schnittstelle mit den Systemfunktionen liefern, einschließlich, jedoch nicht beschränkt auf Leistungsversorgungsspannungs- Überwachungseinrichtungen, Temperatursensoren, Lüftersteuerungen und Lüftergeschwindigkeits-Überwachungseinrichtungen für einen reservierten Systemverwaltungsprozessor. Der Systemverwaltungsprozessor kann wiederum durch eine geeignete Hardware, die ein oder mehrere Busbrücken umfassen kann, mit anderen Prozessoren des Systems schnittstellenmäßig verbunden sein.
- Bei einem solchen System kann der Systemverwaltungsprozessor die Systemfunktionen überwachen und bestimmen, ob eine beliebige Systemfunktion einen Grenzwert überschreitet. Wenn Grenzwerte überschritten worden ist, kann der Systemverwaltungsprozessor das System schützen, indem er die Lüftergeschwindigkeiten durch Anweisen des Systems, in einem speziellen Modus zu arbeiten, was das Herunterfahren des Systems umfaßt, oder durch eine andere Möglichkeit, die in der Technik bekannt ist, ändert.
- Komplexe Computersysteme können mehrere FPGAs und andere PLDs verkörpern. Die FPGAs können für kundenspezifische I/O- Funktionen, die die CPUs mit anderen Bauelementen für Kommunikationen zwischen den CPUs schnittstellenmäßig verbinden, und zum schnittstellenmäßigen Verbinden von Bauelementen, wie z. B. Lüftern und Temperatursensoren, mit einem Systemverwaltungsbus, verwendet werden.
- Es ist eine Aufgabe der vorliegenden Erfindung ein Verfahren zum Zugreifen auf Abtastketten und zum Aktualisieren eines EEPROM-residenten FPGA Code durch einen Systemverwaltungsprozessor und einen JTAG-Bus zu schaffen.
- Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 und 4 gelöst.
- Die vorliegende Erfindung ist ein Verfahren zum systeminternen Programmieren von programmierbaren Bauelementen. Das Verfahren ist speziell für die Programmierung von EEPROMs mit einem Konfigurationscode für FPGAs, die denselben zugeordnet sind, verwendbar. Das Verfahren nutzt eine Busbrücke, wobei ein serieller IIC-Bus mit mehreren JTAG-Bussen überbrückt wird.
- Ein spezielles Ausführungsbeispiel wird in einem System mit mehreren Platinen verwendet, wo einige Platinen mehrere EEPROMs aufweisen, die gekoppelt sind, um den Konfigurationscode an die FPGAs zu liefern. Die EEPROM-Bauelemente von jeder dieser Platinen sind in einem JTAG-Bus gekoppelt, mit einem oder mehreren separaten Bussen für jede dieser Platinen. Die JTAG-Busse von jeder Platine werden zur Busbrücke geleitet. Die Busbrücke liefert eine Schnittstelle zwischen den mehreren JTAG-Bussen und einem Systemverwaltungsprozessor des Systems sowie einen Auswählschaltungsaufbau, so daß die Prozessoren einen einzeln JTAG-Bus der mehreren JTAG- Busse auswählen können.
- Das Verfahren umfaßt eine Fehler-Überprüfung- und Wiederholung. Zum Beispiel werden die FIFOs der Busbrücke überwacht, um zu bestimmen, ob die Zustandsmaschinen der Busbrücke die Informationen korrekt an die EEPROMs schrieben oder ob die Informationen von den EEPROMs durch die Busbrücke ordnungsgemäß an den Systemverwaltungsprozessor übertragen wurden. Das Verfahren sorgt für Neuversuche, wenn Operationen scheitern. Das Verfahren sieht auch eine Verifikation vor, das die Konfigurationscode-Dateien mit den Ziel-EEPROMs-, Bussen und Platinen kompatibel sind.
- Bevorzugte Ausführungsbeispiel der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
- Fig. 1 ein Blockdiagramm eines Computersystems des Stands der Technik mit mehreren JTAG-Bussen auf mehreren Platinen, wobei jede Platine einen separaten Konfigurationsanfangsblock aufweist;
- Fig. 2 ein Blockdiagramm eines Computersystems, das die Erfindung verkörpert, die mehrere JTAG-Busse von mehreren Platinen, die zu einer gemeinsamen Konfigurationslogik gebracht wurden, aufweist und die eine Schnittstelle mit einem Prozessor des Systems zum Programmieren der EEPROMs über den mehreren JTAG-Bussen aufweist;
- Fig. 3 ein detailliertes Blockdiagramm der gemeinsamen Konfigurationslogik und der Systemverwaltungs- Teilsysteme des Systems von Fig. 2, die eine JTAG-IIC-Brücke verkörpern, mit Systemverwaltungs- und Host-Prozessoren, und eine Verbindung mit einer Datenbank über ein Netzwerk;
- Fig. 4 ein Flußdiagramm eines Verfahrens zum Konfigurieren von FPGAs eines Systems durch eine gemeinsame Systemkonfigurationslogik;
- Fig. 5 ein ausführliches Blockdiagramm einer Platine eines Ausführungsbeispiels der Erfindung, die einen lokalen Systemverwaltungsprozessor, der gekoppelt ist, um Fehlersignale von den FPGAs zu empfangen, einen Konfigurationsanfangsblock und einen Platine-Identifikations-EEPROM aufweist, wobei die Konnektivität mit den Systemverwaltungsprozessoren und der gemeinsamen Konfigurationslogik gezeigt ist;
- Fig. 6 ein ausführliches Blockdiagramm eines Abschnitts eines Systemverwaltungs-Teilsystems, das die vorliegende Erfindung verkörpert;
- Fig. 7 eine Darstellung von Funktionen, die die Selbstheilung eines Systems ermöglichen, das einen korrupten FPGA-Code gemäß der Erfindung aufzeigt;
- Fig. 8 ein weiteres detailliertes Blockdiagramm der gemeinsamen Konfigurationslogik eines Ausführungsbeispiels der Erfindung;
- Fig. 9 ein weiteres ausführliches Blockdiagramm von Statusregistern der gemeinsamen Konfigurationslogik eines Ausführungsbeispiels der Erfindung;
- Fig. 10A ein Flußdiagramm eines speziellen alternativen Ausführungsbeispiels des Verfahrens der vorliegenden Erfindung; und
- Fig. 10B ein Flußdiagramm, das den Schritt des "Programmiere-EEPROMs-des-Busses" von Fig. 10A ausführlich aufführt.
- Ein in der Technik bekanntes Computersystem umfaßt mehrere Schaltungsplatinen, wie eine Platine A 100 (Fig. 1) und eine Platine B 102, die die FPGAs 104, 106, 107 auf den Platinen verkörpern. In dem System können zusätzliche Platinen vorhanden sein, sowohl mit als auch ohne FPGAs, wobei die verschiedenen Platinen als Komponenten des Systems zusammengekoppelt sind 103. Auf der Platine A 100 ist das FPGA 104 mit einem Konfigurations-EEPROM 108 gekoppelt, so daß das FPGA 104 seinen Konfigurationscode vom EEPROPM 108empfängt, wenn die Platine A 100 hochgefahren wird. Desgleichen ist das FPGA 106 mit einem zweiten Konfigurations- EEPROM 110 gekoppelt. Die Konfigurations-EEPROMs 108 und 110 sind in einem JTAG-Bus 111 zusammengekettet, der zu einem Konfigurationsanfangsblock 112 herausgebracht wird.
- Wenn gewünscht ist, den Konfigurationscode von einer oder mehreren der FPGAs 104 oder 106 auf der Platine A 100 zu aktualisieren, wird ein Konfigurationssystem 114 durch ein Konfigurationskabel 116 mit dem Konfigurationsanfangsblock 112 gekoppelt. Der Konfigurationscode kann von einem Speichersystem 118 des Konfigurationssystems 114 durch das Konfigurationskabel 116, den Konfigurationsanfangsblock 112, über den JTAG-Bus 111 in einen EEPROM, wie den EEPROM 108 übertragen werden. Sobald dies erreicht ist, kann die Leistung ein- und ausgesteuert werden, um zu bewirken, daß das FPGA 104 den aktualisierten Konfigurationscode vom EEPROM 108 lädt.
- Wenn gewünscht ist, den Konfigurationscode der FPGAs auf einer anderen Platine, wie der Platine B 102, zu aktualisieren, wird das Konfigurationskabel 116 vom Konfigurationsanfangsblock 112 getrennt und mit einem geeigneten Konfigurationsanfangsblock 120 der Platine B entlang einer anderen Konfigurationskabelführung 122 gekoppelt. Der Prozeß wird dann wiederholt, um einen oder mehrere EEPROMs der EEPROMs 124 über einen Platine-B-JTAG-Bus 126 zu aktualisieren.
- Die systeminterne FPGA-Konfigurationscode-Aktualisierungsvorrichtung des Stands der Technik, die in Fig. 1 dargestellt ist, erfordert einen physischen Zugriff auf jede Platine des Systems, die aktualisiert werden soll. Das Konfigurationskabel 116 muß mit dem geeigneten Konfigurationsanfangsblock von jeder Platine separat verbunden sein.
- Bei einem System 200 (Fig. 2) gemäß der vorliegenden Erfindung gibt es mehrere Schaltungsplatinen, wie die Platine C 202 und die Platine D 204, die jeweils ein oder mehrere FPGAs 206, 208, 210 und 211 aufweisen. Die FPGAs 206, 208, 210 und 211 sind vom SRAM-basierten Typ und sind gekoppelt, um ihren Konfigurationscode von den EEPROMs, wie den EEPROMs 212, 214 und 216 zu empfangen. Die EEPROMs 212 und 214 der Platine C 202 sind in einem Platine-C-JTAG-Bus 222 verbunden, und die EEPROMs 216 der Platine D 204 sind in einem Platine-D-JTAG-Bus 224 verbunden. Die Platinen C 202 und D 204 sind ferner mit einem Systemverwaltungsbus 226 verbunden, der mit einigen der FPGAs, wie dem FPGA 208 der Platine C 202 und dem FPGA 211 der Platine D 204, verbunden sein kann, dies aber nicht muß. Die Platinen des Systems, wie die Platinen C 202 und D 204, sind mit einer zusätzlichen Systemverbindung 227 für andere Zwecke verbunden. Die zusätzliche Systemverbindung 227 kann eine Vorrichtung zum Kommunizieren zwischen mehreren Prozessoren des Systems, zwischen Prozessoren und Peripheriegeräten, und einer anderen Zwischenverbindung, die in einem Computersystem erforderlich ist, umfassen.
- Der Platine-C-JTAG-Bus 222 und der Platine-D-JTAG-Bus 224 sind zu einer gemeinsamen Konfigurationslogik 224 gebracht, die sich auf einer anderen Platine, wie der Platine E 230, befinden kann. Die gemeinsame Konfigurationslogik 228 verkörpert eine serielle IIC-Schnittstelle 232, die mit dem Systemverwaltungsbus 226 verbunden ist. Der Systemverwaltungsbus 226 ist ebenfalls mit zumindest einem Systemverwaltungs-Teilsystem 234 verbunden, das zumindest einen Prozessor umfaßt, der einen zugeordneten Speicher umfaßt. Das Systemverwaltungs-Teilsystem 234 ist mit zumindest einer zentralen Verarbeitungseinheit (CPU) 236 des Computersystems verbunden, das mehrere CPUs aufweisen kann.
- Ein spezielles Ausführungsbeispiel des Computersystems weist sechzehn CPUs, ein weiteres Ausführungsbeispiel vier CPUs auf. Jede CPU, wie z. B. die CPU 236, die sich auf der Platine F 245 befindet, weist einen zugeordneten Speicher 238 auf und ist Teil einer Partition, die auf einem Betriebssystem, wie z. B. Microsoft Windows, Linux, HP-Unix, oder anderen Betriebssystemen, die in der Technik bekannt sind, arbeiten kann. Die CPUs können auf einer Platine angeordnet sein, wie z. B. der Platine F 245, die ein FPGA 239 aufweisen, das gekoppelt ist, um den Konfigurationscode von einem EEPROM 240 zu empfangen, der wiederum mit einem JTAG-Bus 246 gekoppelt ist, auf den zum Programmieren von der gemeinsamen Konfigurationslogik 228 zugegriffen werden kann. Die CPU 236 ist mit einem Netzwerk 241 gekoppelt, das lokale Netze (LAN), Brandmauern, weite Netze (WAN), wie das Internet, umfassen kann. Mit dem Netzwerk 241 ist auch ein Server 242 mit einer FPGA-Konfigurationscode-Datenbank 244 gekoppelt.
- Bei einem alternativen Ausführungsbeispiel weist das Systemverwaltungs-Teilssystem 234 eine direkte Verbindung mit dem Netzwerk 241 auf.
- Bei einer ausführlicheren Beschreibung weist die gemeinsame Konfigurationslogik 228 (Fig. 3) ein Auswählregister 300 auf, das durch die IIC-Schnittstelle 232 adressierbar ist. Das Auswählregister 300 bezeichnet, welcher der mehreren JTAG-Ports, wie z. B. die Ports 304, 306 und 308 der gemeinsamen Konfigurationslogik 228, aktiv ist. Ein spezielles Ausführungsbeispiel weist sechzehn JTAG-Ports auf. Es gibt auch eine JTAG-Maschine 310, auf die durch die IIC- Schnittstelle 232 zugegriffen werden kann, die Befehle von der IIC-Schnittstelle 232 interpretieren und den aktiven JTAG-Port gemäß dieser Befehle manipulieren kann.
- Die gemeinsame Konfigurationslogik 228 kann daher als Mehrkanal-JTAG-IIC-Busbrücke, wie in Fig. 8 dargestellt ist, operieren.
- Die IIC-Schnittstelle 232 der gemeinsamen Konfigurationslogik 228 ist mit dem Systemverwaltungs-Teilsystem 234 über einen Systemverwaltungsbus 226 gekoppelt. Das Systemverwaltungs-Teilsystem 234 weist zumindest einen Prozessor auf, und bei einem Ausführungsbeispiel weist es eine Hierarchie von Prozessoren auf, die einen primären Systemverwaltungsprozessor 312 und einen oder mehrere sekundäre Systemverwaltungsprozessoren 314 umfaßt. Jeder Prozessor weist einen ihm zugeteilten Speicher, wie z. B. den Speicher 316, auf, der auf den gleichen integrierten Schaltungen wie sein ihm zugewiesener Prozessor verkörpert sein kann; und jeder Prozessor ist gekoppelt, um mit dem primären Systemverwaltungsprozessor 312 zu kommunizieren. Das Systemverwaltungs- Teilsystem 234 weist auch eine Schnittstelle 318 zum Kommunizieren mit einer CPU 236 auf. Das Netzwerk 241 weist lokale Netzkomponenten 320, Brandmauern 322 und Weitnetzkomponenten, wie das Internet 324, auf. Die CPU 236 kann über das Netzwerk 241 mit dem Server 242 in einem sicheren, verschlüsselten Modus gekoppelt sein.
- Wenn gewünscht ist, daß der FPGA-Code auf einer oder mehreren Platinen des Computersystems 200 aktualisiert werden soll, führt eine CPU 236 eine Host-FPGA-Aktualisierungs- Routine aus. Die CPU 236 des Systems wird daraufhin (Fig. 4, unter Bezugnahme auf Fig. 2 und 3) in einer sicheren Weise mit dem Server 242 verbunden 400 und lädt 402 eine aktualisierte FPGA-Konfigurationscode-Datei auf den Speicher 238 herunter. Der Speicher 238 kann einen Plattenspeicher und/oder RAM-Speicher, der in der Technik der Rechensysteme bekannt ist, umfassen. Anschließend wird die FPGA- Konfigurationscode-Datei zum Speicher 316 des Systemverwaltungs-Teilssystems 234 übertragen. Diese Übertragung 404 kann als eine komplette Dateiübertragung vor dem Initiieren der EEPROM-Programmierung oder als eine Übertragung von individuellen Elementen, oder Blöcken, der FPGA- Konfigurationscode-Datei erfolgen. Ein spezielles Ausführungsbeispiel führt diese Übertragung 404 in einem Blockmodus aus. Die System-CPU 236 startet 405 dann eine FPGA- Konfigurationsroutine auf einem Prozessor, wie z. B. einem primären Prozessor 312 oder einem lokalen Prozessor 314, des Systemverwaltungs-Teilsystems 234. Bei einem speziellen Ausführungsbeispiel arbeitet sie auf einem primären Systemverwaltungsprozessor 312, wobei Befehle durch einen lokalen Prozessor 314 zur IIC-Schnittstelle 232 der gemeinsamen Konfigurationslogik 228 geleitet werden.
- Bei einem alternativen Ausführungsbeispiel, wenn gewünscht ist, daß der FPGA-Code auf einer oder mehreren Platinen des Computersystems 200 aktualisiert wird, wird ein Prozessor, wie ein Prozessor 312, der Systemverwaltungs-Teilsystems 234 in einer sicheren Weise mit dem Server 242 verbunden 400 und lädt 402 eine aktualisierte FPGA- Konfigurationscode-Datei auf den Speicher 316 des Systemverwaltungs-Teilsystems 234 herunter. Der Prozessor 312 des Systemverwaltungs-Teilsystems führt dann eine FPGA- Konfigurationsroutine aus.
- Bei beiden Ausführungsbeispielen überprüft 406 dann der Systemverwaltungs-Teilsystemprozessor 312, ob ein optionaler Konfigurationsanfangsblock 514 (Fig. 5, nachstehend erörtert) mit einem Konfigurationssystem verbunden ist, und erklärt einen Fehler, wenn dieser derart verbunden ist. Anschließend entscheidet der Systemverwaltungs- Teilsystemprozessor 312 nach Bedarf, um die gemeinsame Konfigurationslogik 228 zuzuweisen 407; sollte ein anderer Prozessor die gemeinsame Konfigurationslogik 228 verwenden, wartet der Systemverwaltungs-Teilssystemprozessor 312, bis die gemeinsame Konfigurationslogik 228 verfügbar ist. Die Zuteilung verhindert, daß ein beliebiger anderer Systemverwaltungs-Teilsystemprozessor, wie z. B. ein Sicherungssystem-Verwaltungsprozessor 528 (Fig. 5, nachstehend erörtert), auf den gleichen EEPROM zugreift, während dieser programmiert wird, und trägt dadurch dazu bei, eine Codekorruption zu verhindern. Die Zuteilung verhindert auch, daß alle anderen Systemverwaltungs-Teilssystemprozessoren, wie z. B. der Sicherungs-Verwaltungsprozessor 528 (Fig. 5, nachstehend erörtert), den Zustand der gemeinsamen Konfigurationslogik 228 ändert, und trägt dadurch dazu bei, eine Unterbrechung der Übertragungen über die JTAG-Busse 222 oder 224 zu verhindern.
- Der Systemverwaltungs-Teilsystemprozessor 312 initialisiert dann die gemeinsame Konfigurationslogik 228, einschließlich des Löschens aller Daten, die in den FIFOs der gemeinsamen Konfigurationslogik 228 verbleiben, und stellt 409 das Auswählregister 300 einer Identität des speziellen JTAG-Busses ein, der mit den EEPROMs, die programmiert werden sollen, verbunden ist.
- Der Prozessor 312 adressiert als nächstes den ausgewählten JTAG-Bus durch die gemeinsame Konfigurationslogik 228 und bestimmt 410 die JTAG-Buskonfiguration einschließlich der Anzahl und der Typen von Bauelementen auf dem Bus. Dies wird teilweise durch die Verwendung des JTAG- "GET_DEVICE_ID"-Befehls erreicht, der einen Identifikationscode zurücksendet, der den Typ von jedem Bauelement, das mit dem JTAG-Bus verbunden ist, anzeigt. Diese Buskonfiguration einschließlich der Identifikationscodes wird mit den Informationen in der FPGA-Codedatei verglichen 412, um sicher zu stellen, daß der Code mit dem Ziel-JTAG-Bus kompatibel ist. Sollte der Code mit der ausgewählten Platine und dem Ziel-JTAG-Bus inkompatibel sein, wird ein Fehler erklärt 414, und eine Fehlerhandhabungseinrichtung 424 kann versuchen, eine geeignete Codedatei automatisch zu lokalisieren und herunterzuladen. Diese Schritte verifizieren die Kompatibilität der Codedatei mit der ausgewählten Schaltungsplatine.
- Bei einem alternativen Ausführungsbeispiel werden, statt eines oder neben einem Vergleich der JTAG-Buskonfiguration mit den Informationen in der Codedatei, die Platinenidentifikationsinformationen von einem EEPROM 512 (Fig. 5), der sich auf jeder Platine befindet, gelesen. Dieser EEPROM wird einem JTAG-Bus 510 auf jeder Platine hinzugefügt. Diese Identifikationsinformationen können verwendet werden, um die Kompatibilität der Codedatei mit der Platine und dem Ziel-JTAG-Bus zu verifizieren, um den geeigneten FPGA-Code aus mehreren FPGA-Codes, die in einer Codedatei enthalten sind, auszuwählen und um eine geeignete FPGA-Codedatei in der FPGA-Codedatenbank 244 auf dem Server 242 zu lokalisieren.
- Nach dem Verifizieren der Kompatibilität der Codedatei löscht 416 das Systemverwaltungs-Teilsystem (Fig. 4 unter Bezugnahme auf Fig. 2 und 3) einen oder mehrere EEPROMs, wie den EEPROM 214, der Platine, die an dem ausgewählten JTAG-Bus 222 angebracht sind. Mehr als ein EEPROM kann gelöscht werden, sollte die FPGA-Codedatei einen Code von mehr als ein FPGA der Platine enthalten. Dann schreibt 418 das Konfigurationssystem neue Codeinformationen an die gelöschten EEPROMs über den JTAG-Bus 222. Schließlich überprüft 420 das Systemverwaltungs-Teilsystem im EEPROM- Schreibprozeß 418 nach Fehlern und erklärt einen Fehler 422, wenn ein beliebiger Fehler aufgetreten ist. Wenn die Codedatei nicht korrekt in die EEPROMs der Platine geschrieben wurde, kann eine Fehlerhandhabungseinrichtung 424 die Schritte 402 bis 422 wiederholen: Herunterladen einer kompatiblen FPGA-Konfigurationscode-Datei, Übertragen der Datei an das Systemverwaltungs-Teilsystem, Löschen der EEPROMs und Schreiben der EEPROMs.
- Sobald die EEPROMs auf einer Platine programmiert worden sind, gibt 423 der Systemverwaltungs-Teilsystem-Prozessor die gemeinsame Konfigurationslogik 228 frei, so daß durch jeden anderen Prozessor des Systemverwaltungs-Teilsystem auf sie zugegriffen werden kann. Anschließend prüft 426 die Host-FPGA-Aktualisierungsroutine, um zu sehen, ob zusätzliche Platinen oder zusätzliche JTAG-Busse der gleichen Platine programmiert werden sollen. Es werden geeignete Schritte, einschließlich der Schritte des Herunterladens des FPGA-Codes in das Systemverwaltungs-Teilsystem, des Schritts des Löschens der EEPROMs und des Programmierens der EEPROMs nach Bedarf für diese zusätzlichen Platinen oder JTAG-Busse wiederholt.
- Sobald alle EEPROMs von allen JTAG-Bussen, die eine Aktualisierung erfordern, programmiert worden sind, kann das System 200 einem Leistungszyklus 428 unterzogen werden, was bewirkt, daß jedes FPGA, wie z. B. das FPGA 208, den aktualisierten Konfigurationscode von den zuordneten EEPROMs, wie dem EEPROM 212, lädt.
- Die FPGAs mit den zugeordneten EEPROMs, die auf diese Weise programmierbar sind, können FPGAs 239 auf Platinen, wie der Platine F 245 umfassen, die System-CPUs 236 aufweisen. Die FPGAs mit den zugeordneten EEPROMs, die auf diese Weise programmierbar sind, können auch die gemeinsame Konfigurationslogik 228 an sich umfassen, die bei einem Ausführungsbeispiel als ein FPGA mit einem zugeordneten Konfigurations-EEPROM 330 implementiert ist.
- Als Sicherungs-Maßnahme können eine oder mehrere Platinen des Systems 200 einen Konfigurationsanfangsblock 514 aufweisen, der als zusätzliche Möglichkeit des Programmierens seiner FPGAs parallel gekoppelt ist. Auf diese Weise kann zum Programmieren durch einen Kundendienst- oder Betriebs- Techniker auf die Platine zugegriffen werden, sollte sie versehentlich mit einem falschen oder defekten FPGA- Konfigurationscode programmiert worden sein. Zum Beispiel erlaubt ein Sicherungs-Konfigurationsanfangsblock die Reparatur des Systems 200, sollte der EEPROM 330, der der gemeinsamen Konfigurationslogik 228 zugeordnet ist, durch einen Leistungsausfall während der Programmierung über JTAG D 335 verfälscht worden sein.
- Bei einem speziellen Ausführungsbeispiel weist eine Platine 500 (Fig. 5) ein erstes FPGA 502 und ein zweites FPGA 504 auf. Die FPGAs 502 und 504 sind gekoppelt, um ihren Konfigurationscode von den EEPROMs 506 und 508 zu empfangen, die in einem JTAG-Bus 510 gekoppelt sind. In dem JTAG-Bus 510 ist auch ein Platinenidentifikations-EEPROM 512 und ein Konfigurationsanfangsblock 514 gekoppelt. Der JTAG-Bus 510wird aus der Platine 500 zur gemeinsamen Konfigurationslogik 516 des Systems gebracht.
- Die Quersummenfehlerleitungen 518 und 520 werden von den FPGAs 502 und 504 zu einem lokalen Verwaltungsprozessor 522 gebracht, der sich auf der gleichen Platine 500 befinden kann oder nicht. Der lokale Verwaltungsprozessor 522 ist mit einem Systemverwaltungsbus 524 gekoppelt. Der Systemverwaltungsbus 524 ist mit einem primären Systemverwaltungsprozessor 526 gekoppelt. Ein Sicherungs- Verwaltungsprozessor 528 ist in einer Ersatzschaltkonfiguration (bzw. Failover-Konfiguration) mit dem primären Systemverwaltungsprozessor vorgesehen, um eine Redundanz zu liefern. Der lokale Verwaltungsprozessor ist ebenfalls mit einer FPGA-Wiederladebefehl-Leitung 530 gekoppelt, die mit jedem FPGA einschließlich der FPGAs 502 und 504 der Platine 500 verbunden ist. Die primären und Sicherungs- Systemverwaltungsprozessoren 526 und 528 sind jeweils mit zumindest einer System-CPU (nicht gezeigt) des Systems verbunden.
- Bei dem Ausführungsbeispiel von Fig. 5 ist der Schritt, in dem das System einem Leistungszyklus 428 unterzogen wird (Fig. 4), nach dem Beenden des Programmierens der EEPROMs nicht notwendig. Dieser Schritt ist durch die Schritte des vorübergehenden Deaktivierens der Systemverwendung der Logik auf den FPGAs, des Softbootens der FPGAs, die den umprogrammierten EEPROMs zugeordnet sind, um ihren Konfigurationscode wiederzuladen, und des erneuten Aktivierens der Systemverwendung der Logik auf den FPGAs ersetzt worden.
- Bei diesem Ausführungsbeispiel, wenn ein Quersummenfehler durch ein FPGA, wie FPGA 504, erfaßt worden ist, signalisiert 702 es (Fig. 7) das Systemverwaltungs-Teilsystem. Das Signalisieren des Systemverwaltungs-Teilsystems kann durch eine Verbindung der Quersummenfehlerleitung 520 mit einem anderen FPGA des Systemverwaltungs-Teilsystems, durch ein kundenspezifisches Logik- oder Gatterarray oder durch eine I/O-Leitung eines Systemverwaltungsprozessors, wie einem lokalen Systemverwaltungsprozessor 522, erfolgen. Der lokale Systemverwaltungsprozessor 522 signalisiert dann einem Betriebssystem, das auf einer CPU, wie z. B. der CPU 236, des Systems arbeitet, um eine Aktualisierung des EEPROMs 508 anzufordern, der dem FPGA 504, das den Fehler erfaßte, zugeordnet ist.
- Sobald der Fehler erfaßt und die Aktualisierung angefordert worden ist, wird die Aktualisierung, wie vorstehend unter Bezugnahme auf Fig. 4 erörtert ist, fortgesetzt 706, außer daß bei der Beendung der Programmierung der EEPROMs das zugeordnete FPGA gesoftbootet 708 wird, anstatt das System einem Leistungszyklus zu unterziehen. Das Softbooten wird durch Herunterfahren der Treiber oder der Systemverwaltungsfunktionen, die ein spezielles FPGA verwenden, erreicht, indem ein Laden des Konfigurationscodes von dem zugeordneten EEPROM in das FPGA ausgelöst und alle Treiber oder Systemverwaltungsfunktionen, die das FPGA nutzten, erneut gestartet werden. Es ist daher möglich, den Konfigurationscode für zumindest einige der FPGAs des Systems zu aktualisieren, ohne das System vollständig herunterzufahren.
- Bei einem speziellen Ausführungsbeispiel sind die FPGAs, wie das FPGA 600 (Fig. 6), eines Systemverwaltungs- Teilsystems eines komplexen Computersystems gekoppelt, um ihren Konfigurationscode von einem EEPROM 602 zu empfangen. Der EEPROM 602 ist gekoppelt, um über einen JTAG-Bus 604 von der gemeinsamen Konfigurationslogik, die vorstehend erörtert worden ist, programmierbar zu sein. Das FPGA 600 ist mit einem Sortiment von Systemverwaltungssensoren und einer Systemverwaltungs-Hardware gekoppelt, die Lüftergeschwindigkeitssensoren 606, Spannungsüberwachungseinrichtungen 608, einen CPU-Taktgeschwindigkeits-Auswählschaltungsaufbau 610, einen CPU-Spannungs-Auswählschaltungsaufbau 612, Manipulationsschalter 614 und einen Temperaturüberwachungsschaltungsaufbau 616 umfassen können, jedoch nicht auf dieselben beschränkt sind. Das FPGA 600 verkörpert die Logik zur Kommunikation zwischen diesen Systemverwaltungssensoren und der Hardware über einen IIC-Systemverwaltungsbus 620 mit einem Systemverwaltungsprozessor.
- Bei einem weiteren Ausführungsbeispiel der Erfindung werden die FPGAs, die ihren Konfigurationscode von den EEPROMs empfangen, die in der hierin erörterten Weise systemintern programmiert werden können, zum Leiten von I/O- Informationen zwischen I/O-Peripheriegeräten und den speziellen System-CPUs des Systems verwendet. Bei noch einem weiteren Ausführungsbeispiel werden die FPGAs, die ihren Konfigurationscode von den EEPROMs empfangen, die in der hierin erörterten Weise systemintern programmiert werden können, für Interprozessor-Kommunikationen zwischen den System-CPUs verwendet.
- Bei einer noch ausführlicheren Beschreibung weist die IIC- Schnittstelle 232 der gemeinsamen Konfigurationslogik 228 (Fig. 8) eine physische Slavemodus-Schicht 800 und Adressendekodier- und Steuerregister 802 auf. Diese verbinden den IIC-Bus 226 mit einem internen parallelen Bus 804 schnittstellenmäßig. Die gemeinsame Konfigurationslogik, oder Busbrücke, weist auch eine Vorrichtung 840 zum Koppeln der IIC-Schnittstelle 232 mit den JTAG-Ports 820 auf. Ein 256-Byte-Daten-an-JTAG-FIFO 806 und ein Daten-von-JTAG-FIFO 808 sind zum Puffern von Datenübertragungen zwischen den IIC- und JTAG-Bussen vorgesehen. Die Daten können zwischen dem IIC-Bus und den FIFOs 806 und 808 durch die physische IIC-Slave-Schicht 800 übertragen werden. Die JTAG- Zustandsmaschinen 810 ermöglichen einzelnen IIC-Befehlen, JTAG-Ziele neu einzustellen, die JTAG Konfiguration zu lesen oder bis zu 256 konsekutive Bytes zwischen den FIFOs 806 oder 808 und einem JTAG-Bauelement durch einen Parallel-Seriell-Konverter 812 oder einen Seriell-Parallel- Konverter 814 gemäß der Übertragungsrichtung zu übertragen. Ein einfacher Umgehungsport 816 ermöglicht das Umgehen der Zustandsmaschinen 810 und der FIFOs 806 und 808 im Falle eines Logikfehlers oder des Bedarfs, ungewöhnliche JTAG- Befehle auszuführen.
- Das Auswählregister 818 ist durch die IIC-Schnittstelle 232 adressierbar. Das Auswählregister 818 bezeichnet einen von mehreren JTAG-Ports 820, um jederzeit aktiv zu sein. Dies erfolgt durch Anweisen eines Multiplexers 822, eine spezifische Datenleitung von einem JTAG-Port 820 mit dem Seriell-parallel-Konverter 814 zu koppeln und durch Kennzeichnen, welcher JTAG-Port 820 die JTAG-Auswahlleitungen von der Takt- und Auswählgatterlogik 824 empfangen soll.
- Die gemeinsame Konfigurationslogik 228 weist auch ein Statusregister 826 auf, das Fehler-Flags, FIFO-Peilstäbe (bzw. FIFO-Dipsticks) 900 und 902 (Fig. 9), FIFO-Leer-Flags 904 und 906 umfaßt, und einen Konfigurationsanfangsblock, der mit dem Flag 908 verbunden ist. Der Konfigurationsanfangsblock, der mit dem Flag 908 verbunden ist, zeigt an, ob ein beliebiger der optionalen Konfigurationsanfangsblöcke, wie der Anfangsblock 514, mit einem Konfigurationssystem verbunden ist. Wenn ein Konfigurationssystem mit einem Anfangsblock 514 verbunden ist, identifiziert der Systemverwaltungsprozessor 526 dies, wenn er nach einem verbundenen Anfangsblock prüft 406, und lehnt es ab, die EEPROMs zu programmieren, um eine versehentliche Korruption der EEPROM-Inhalte zu verhindern.
- Die FIFO-Leer-Flags 904 und 906 werden getestet, um sicherzustellen, daß alle Übertragungen vollendet sind, wenn der Systemverwaltungs-Teilprozessor 312 nach Fehlern 420 sucht, nachdem der Code 418 an die EEPROMs geschrieben worden ist.
- Bei einem alternativen Ausführungsbeispiel wird die Firmware-Sequenz von Fig. 10A auf einem Systemverwaltungsprozessor, wie einem primären Systemverwaltungsprozessor 526 (Fig. 5), oder Systemverwaltungsprozessor 312 (Fig. 3) ausgeführt. Diese Sequenz wird immer dann eingegeben 1000, wenn ein dahingehender Befehl von einem Systemprozessor 236(Fig. 3) gesendet wird, durch einen Anschluß eingegeben wird, der mit dem Systemverwaltungsprozessor 312 verbunden ist, oder wenn ein programmierbares logisches Bauelement, wie z. B. das FPGA 502 (Fig. 5), einen Fehler erfaßt, während der Konfigurationscode empfangen wird.
- Der Systemverwaltungsprozessor 312 überprüft 1002, ob ein beliebiger Konfigurationsanfangsblock, wie der Anfangsblock 514, mit einem Konfigurationssystem verbunden ist; wenn ein Konfigurationssystem verbunden ist, wird ein Fehler erklärt, und die Sequenz wird abgebrochen 1003. Der Prozessor 312 wird dann durch ein Netzwerk 241 mit einem Server 242 mit einer Datenbank 244 der Konfigurationscode-Dateien verbunden. Für jede Platine 500 des Systems fragt 1006 der Systemverwaltungsprozessor 312 einen Platinenidentifikations- EEPROM 512 ab, ob zumindest ein JTAG-Bus der Platine 500 derart ausgerüstet ist, und liest einen Platinenidentitätscode von diesem EEPROM 512. Wenn kein derartiger Identifikations-EEPROM 512 existiert, bestimmt der Systemverwaltungsprozessor 312 die JTAG-Buskonfiguration für jeden Bus auf der Platine 500 und leitet eine Signatur von diesen Konfigurationen ab; die Signatur wird als ein Ersatz- Platinenidentitäts-Code verwendet. Die Schritte des Lesens des Platinenidentifikations-EEPROMs und des Bestimmens der JTAG-Buskonfiguration sind vor einer Störung durch andere Systemverwaltungsprozessoren geschützt, die versuchen könnten, auf die gemeinsame Konfigurationslogik 516 oder 228 durch Zuordnen oder Aufheben der Zuordnung (nicht gezeigt) der gemeinsamen Konfigurationslogik zuzugreifen.
- Der Platinenidentitätscode wird als ein Index auf die Datenbank 244 verwendet, um die Konfigurationscode-Dateien, die für die Platine 500 geeignet sind, zu lokalisieren 1008. Jeder EEPROM von jedem Bus der Platine 500 wird ebenfalls getestet, um zu bestimmen, ob der EEPROM einen gültigen Code enthält, indem eine Quersumme verifiziert wird, die dem Konfigurationscode im EEPROM zugeordnet ist. Für EEPROMs mit einem gültigen Code werden die Versionsinformationen, die diesen Konfigurationsdateien zugeordnet sind, mit den Versionsinformationen in den Konfigurationsdateien der Datenbank 244 verglichen. Wenn die EEPROMs einen Code enthalten, der sowohl gültig als auch aktuell 1010 ist, kann die Programmierung dieses EEPROMs umgangen 1012 werden; die EEPROMs, die den Code enthalten, der entweder ungültig oder nicht aktuell ist, werden programmiert 1014.
- Wenn ein beliebiger EEPROM von einem beliebigen JTAG-Bus der Platine den Code enthält, der entweder ungültig oder nicht aktuell ist, wird der entsprechende FPGA-Code von der Datenbank 244 heruntergeladen 1016 (Fig. 10B). Anschließend wird der gemeinsamen Konfigurationslogik 516 zugeordnet 1018, und alle übrig gebliebenen Daten werden von den FIFOs 806 und 808 gelöscht 1020. Das Auswählregister wird auf einen JTAG-Bus mit EEPROMs, die programmiert werden sollen, eingestellt 1022, und die Konfiguration dieses Busses wird bestimmt 1024. Die bestimmte Konfiguration wird mit den erwarteten Konfigurationsinformationen in der heruntergeladenen Codedatei verglichen 1026, um sicher zu stellen, daß eine inkorrekte Codedatei nicht zum Programmieren verwendet wird, und ein Fehler wird erklärt, wenn 1028 der Code für die Konfiguration nicht korrekt ist.
- Wenn der Code für die Konfiguration nicht korrekt ist, kann eine Fehlerhandhabungseinrichtung 1030 einen Versuch unternehmen, den korrekten Code basierend auf einer Signatur, die von der bestimmten Buskonfiguration abgeleitet wurde, zu lokalisieren. Wenn 1032 der Code gefunden worden ist, startet die Sequenz erneut durch Herunterladen 1016 dieses Codes; wenn er nicht gefunden wird, wird die Programmierung abgebrochen 1034.
- Wenn 1028 die bestimmte Buskonfiguration mit der Konfiguration des ausgewählten JTAG-Busses übereinstimmt, werden die EEPROMs der ausgewählten JTAG-Busses gelöscht 1036, und die Blöcke des Codes der heruntergeladenen Codedatei werden in die EEPROMs geschrieben 1038. Am Ende von jedem Block werden die FIFOs 806 und 808 geprüft, ob sie leer 1040 sind, wenn sie nicht leer sind, wartet die Sequenz 1042, bis die Übertragung vom FIFO zum EEPROM vollendet ist, und überprüft erneut 1044, ob die FIFOs 806 und 808 leer sind. Wenn die FIFOs immer noch nicht leer sind, oder ein anderer Fehler aufgetreten ist, wird eine Überprüfung eines Durchlaufzählwert 1046 vorgenommen, um zu bestimmen, ob der Block bereits erneut versucht worden ist, und wenn dies nicht der Fall ist, werden die FIFOs gelöscht und die Programmierung des Blocks wird erneut versucht 1050. Wenn 1046 der Block erneut versucht worden ist, wird ein Fehler erklärt 1052. Eine Fehlersequenz kann weitere Versuche unternehmen, die EEPROMs mit dem Block vor dem Abbrechen zu schreiben.
- Wenn 1044 die FIFOs korrekt geleert worden sind, wird eine Überprüfung 1054 vorgenommen, ob der Block, der geschrieben wurde, der letzte Block des Codes war; ist dies nicht der Fall, wird der nächste Block an die EEPROMs geschrieben 1038. Wenn 1054 alle Blöcke geschrieben worden sind, wird der JTAG-Bus deselektiert 1056, und die gemeinsame Konfigurationslogik wird freigegeben 1058.
- Anschließend wird ein Test ausgeführt, um zu bestimmen, ob alle JTAG-Busse der Platine programmiert 1060 worden sind (Fig. 10A). Wenn 1062 mehr Busse der Platine eine Programmierung anfordern, wird ein Buszählwert inkrementiert, wobei der nächste JTAG-Bus der Platine gewählt wird, und die EEPROMs dieses nächsten Busses werden getestet 1010, um zu bestimmen, ob ihr Code gültig und aktuell ist; dem folgt nach Bedarf ein Schreiben 1014 jener EEPROMs, die keinen gültigen und aktuellen Code enthalten.
- Wenn 1062 keine Busse der Platine mehr eine Programmierung erfordern, wird eine Prüfung 1064 nach zusätzlichen Platinen des Systems mit JTAG-Bussen mit EEPROMs vorgenommen, die eine Programmierung benötigen. Wenn 1066 zusätzliche Platinen eine Programmierung erfordern, wird ein beliebiger Identifikations-EEPROM der nächsten Platine abgefragt 1006, und die Sequenz fährt mit dem Lokalisieren 1008 der Konfigurationscode-Dateien für die EEPROMs dieser Platine fort.
- Wenn 1064 keine Platinen mehr programmiert werden müssen, wird die Systemfunktion der FPGAs, für die der neue Konfigurationscode geschrieben 1014 wurde, deaktiviert 1066. Diese FPGAs werden dann gesoftgebootet 1068, um ihren Konfigurationscode erneut zu laden, und ihre Systemfunktion wird erneut aktiviert 1070. Schließlich wird der Verwaltungsprozessor vom Server 242 getrennt 1072, und eine System-CPU wird über Maßnahmen informiert, die durch den Verwaltungsprozessor vorgenommen wurden, so daß die System-CPU ein Systeminstandhaltungs-Protokoll aktualisieren kann.
- Die Erfindung ist unter Bezugnahme auf eine spezielle Partitionierung von funktionalen Elementen auf Schaltungsplatinen eines Computersystems, das die Erfindung verkörpert, beschrieben worden. Die Erfindung ist auf alternative Partitionierungen des Systems anwendbar. Es kann zusätzliche Platinen oder einen Schaltungsaufbau geben, die als separate Platinen dargestellt sind, die nach Bedarf für ein spezielles Ausführungsbeispiel kombiniert werden können. Zum Beispiel könnte die gemeinsame Konfigurationslogik, die auf der Platine E 230 dargestellt ist, auf einer Schaltungsplatine mit dem Schaltungsaufbau von Platine D 204 kombiniert werden könnte, ist jedoch nicht auf diese Kombination beschränkt.
Claims (8)
1. Verfahren zum Aktualisieren eines Konfigurationscodes
eines Bausteins, der in EEPROMs (212, 214, 216) eines
Systems gespeichert ist, das das Ausführen einer
Sequenz zum Aktualisieren des Konfigurationscodes des
programmierbaren Bausteins auf einem
Verwaltungsprozessor (526) des Systems aufweist, wobei die Sequenz
zum Aktualisieren des Konfigurationscodes des
programmierbaren Bausteins ferner folgende Schritte aufweist:
Löschen (1036) zumindest eines (212) der EEPROMs (212, 214, 216);
Schreiben (1038) von zumindest einem Block des Konfigurationscodes in die gelöschten EEPROMS (212); und
Überprüfen bezüglich Fehlern (1046) nach dem Schreiben des zumindest einen Blocks, wobei die Fehler einen Mißerfolg beim Leeren eines FIFOs (806, 808) umfassen, und wiederholtes Versuchen (1050) des Schritts des Schreibens (1038) von zumindest einem Block auf einen Fehler hin.
Löschen (1036) zumindest eines (212) der EEPROMs (212, 214, 216);
Schreiben (1038) von zumindest einem Block des Konfigurationscodes in die gelöschten EEPROMS (212); und
Überprüfen bezüglich Fehlern (1046) nach dem Schreiben des zumindest einen Blocks, wobei die Fehler einen Mißerfolg beim Leeren eines FIFOs (806, 808) umfassen, und wiederholtes Versuchen (1050) des Schritts des Schreibens (1038) von zumindest einem Block auf einen Fehler hin.
2. Verfahren gemäß Anspruch 1, das ferner den Schritt des
Verifizierens (1028) aufweist, daß eine Datei einen
Konfigurationscode aufweist, der mit dem System
kompatibel ist.
3. Verfahren gemäß Anspruch 2, bei dem der Schritt des
Verifizierens (1024, 1026, 1028), daß eine Datei einen
Konfigurationscode enthält, der mit dem System
kompatibel ist, den Schritt des Abrufens (1024) eines JTAG-
Busses (222) des Systems, um die Konfiguration des
JTAG-Busses (222) zu bestimmen, und den Schritt des
Vergleichens (1026) der Konfiguration mit einer
Konfiguration, die in der Datei gespeichert ist, aufweist.
4. Verfahren zum Aktualisieren eines programmierbaren
Bauelementekonfigurationscodes, der in EEPROMs (212,
214, 216) eines Systems gespeichert ist, wobei das
Verfahren folgende Schritte aufweist:
Liefern von zumindest einem seriellen Bus (222), der die EEPROMs (212, 214, 216) des Systems mit einer gemeinsamen Konfigurationslogik verbindet;
Erhalten (402) einer Datei eines Konfigurationscodes;
Verifizieren der Kompatibilität (410, 412, 414) der Datei mit dem seriellen Bus;
Löschen (416) von zumindest einem EEPROM (212) der EEPROMs (212, 214, 216);
Schreiben (418) von zumindest einem Block des Konfigurationscodes in die EEPROMs (212); und
Überprüfen (429) bezüglich Fehlern nach dem Schreiben der Blöcke, wobei die Fehler einen Mißerfolg beim Leeren eines FIFOs umfassen, und erneutes Versuchen (1050) des Schritts des Schreibens (418) von zumindest einem Block auf einen Fehler hin.
Liefern von zumindest einem seriellen Bus (222), der die EEPROMs (212, 214, 216) des Systems mit einer gemeinsamen Konfigurationslogik verbindet;
Erhalten (402) einer Datei eines Konfigurationscodes;
Verifizieren der Kompatibilität (410, 412, 414) der Datei mit dem seriellen Bus;
Löschen (416) von zumindest einem EEPROM (212) der EEPROMs (212, 214, 216);
Schreiben (418) von zumindest einem Block des Konfigurationscodes in die EEPROMs (212); und
Überprüfen (429) bezüglich Fehlern nach dem Schreiben der Blöcke, wobei die Fehler einen Mißerfolg beim Leeren eines FIFOs umfassen, und erneutes Versuchen (1050) des Schritts des Schreibens (418) von zumindest einem Block auf einen Fehler hin.
5. Verfahren gemäß Anspruch 4, das ferner den Schritt des
Softbootens (1068) von zumindest einem
programmierbaren logischen Bauelementstein (208) aufweist, um den
Konfigurationscode von einem EEPROM (212) von dem zumindest
einem EEPROM (212, 214, 216) in den programmierbaren
logischen Baustein zu laden.
6. Verfahren gemäß Anspruch 5, bei dem das System mehr
als einen Prozessor (236) aufweist, und das ferner den
Schritt des Zuordnens der gemeinsamen
Konfigurationslogik (228) aufweist, um einen gleichzeitigen Zugriff
durch mehr als einen Prozessor (236) des Systems zu
verhindern.
7. Verfahren gemäß Anspruch 5, bei dem zumindest ein
serieller Bus (222), der die EEPROMs (212, 214, 216) des
Systems mit einer gemeinsamen Konfigurationslogik
verbindet, eine Mehrzahl von seriellen Busse (222, 224)
darstellt, und das ferner den Schritt des Auswählens
(1022) eines speziellen seriellen Busses (222) aus der
Mehrzahl von seriellen Bussen (222, 224) aufweist.
8. Verfahren gemäß Anspruch 5, bei dem zumindest ein
programmierbares logisches Bauelement (208) ein FPGA
(208) ist und wobei das Verfahren automatisch auf
einen Fehler hin aufgeführt wird, wobei ein
Konfigurationscode von dem EEPROM (212) in das FPGA (208) geladen
wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/918,030 US6883109B2 (en) | 2001-07-30 | 2001-07-30 | Method for accessing scan chains and updating EEPROM-resident FPGA code through a system management processor and JTAG bus |
Publications (1)
Publication Number | Publication Date |
---|---|
DE10231930A1 true DE10231930A1 (de) | 2003-05-15 |
Family
ID=25439678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10231930A Withdrawn DE10231930A1 (de) | 2001-07-30 | 2002-07-15 | Verfahren zum Zugreifen auf Abtastketten und zum Aktualisieren eines EEPROM-residenten FPGA-Codes durch einen Systemverwaltungsprozessor und einen JTAG-Bus |
Country Status (3)
Country | Link |
---|---|
US (1) | US6883109B2 (de) |
JP (1) | JP2003058385A (de) |
DE (1) | DE10231930A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102012217585A1 (de) * | 2012-09-27 | 2014-03-27 | Siemens Aktiengesellschaft | Automatische Konfiguration von programmierbaren Bausteinen |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100409569C (zh) * | 2002-04-23 | 2008-08-06 | 汤姆森许可公司 | 调谐装置 |
US7007203B2 (en) * | 2002-08-02 | 2006-02-28 | Motorola, Inc. | Error checking in a reconfigurable logic signal processor (RLSP) |
US6948147B1 (en) * | 2003-04-03 | 2005-09-20 | Xilinx, Inc. | Method and apparatus for configuring a programmable logic device using a master JTAG port |
US7146541B2 (en) * | 2003-05-20 | 2006-12-05 | Lucent Technologies Inc. | Back out provision for failed programmable hardware update |
US7281166B1 (en) * | 2003-05-29 | 2007-10-09 | Sun Microsystems, Inc. | User-customizable input error handling |
US8775112B2 (en) | 2003-09-15 | 2014-07-08 | Nvidia Corporation | System and method for increasing die yield |
US8732644B1 (en) | 2003-09-15 | 2014-05-20 | Nvidia Corporation | Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits |
US8775997B2 (en) | 2003-09-15 | 2014-07-08 | Nvidia Corporation | System and method for testing and configuring semiconductor functional circuits |
EP1665049A2 (de) * | 2003-09-15 | 2006-06-07 | Nvidia Corporation | System und verfahren zum prüfen und konfigurieren von funktionalen halbleiterschaltungen |
US7219258B2 (en) * | 2003-12-10 | 2007-05-15 | International Business Machines Corporation | Method, system, and product for utilizing a power subsystem to diagnose and recover from errors |
US8711161B1 (en) | 2003-12-18 | 2014-04-29 | Nvidia Corporation | Functional component compensation reconfiguration system and method |
US8723231B1 (en) | 2004-09-15 | 2014-05-13 | Nvidia Corporation | Semiconductor die micro electro-mechanical switch management system and method |
US8711156B1 (en) | 2004-09-30 | 2014-04-29 | Nvidia Corporation | Method and system for remapping processing elements in a pipeline of a graphics processing unit |
US7257654B1 (en) * | 2004-11-09 | 2007-08-14 | Advanced Micro Devices, Inc. | PCI bridge device configured for using JTAG scan for writing internal control registers and outputting debug state |
US7738484B2 (en) * | 2004-12-13 | 2010-06-15 | Intel Corporation | Method, system, and apparatus for system level initialization |
US7734741B2 (en) * | 2004-12-13 | 2010-06-08 | Intel Corporation | Method, system, and apparatus for dynamic reconfiguration of resources |
US7610483B2 (en) * | 2006-07-25 | 2009-10-27 | Nvidia Corporation | System and method to accelerate identification of hardware platform classes |
US7689865B2 (en) * | 2006-09-06 | 2010-03-30 | International Business Machines Corporation | Middlesoft commander |
US7430487B2 (en) * | 2006-09-06 | 2008-09-30 | International Business Machines Corporation | System and method for implementing a programmable DMA master with data checking utilizing a drone system controller |
US8225153B2 (en) * | 2006-10-16 | 2012-07-17 | Gvbb Holdings S.A.R.L. | Tolerant in-system programming of field programmable gate arrays (FPGAs) |
US20090079467A1 (en) * | 2007-09-26 | 2009-03-26 | Sandven Magne V | Method and apparatus for upgrading fpga/cpld flash devices |
US8724483B2 (en) | 2007-10-22 | 2014-05-13 | Nvidia Corporation | Loopback configuration for bi-directional interfaces |
US8174287B2 (en) * | 2009-09-23 | 2012-05-08 | Avaya Inc. | Processor programmable PLD device |
US9331869B2 (en) | 2010-03-04 | 2016-05-03 | Nvidia Corporation | Input/output request packet handling techniques by a device specific kernel mode driver |
CN102411527B (zh) * | 2010-09-21 | 2015-01-21 | 北京中星微电子有限公司 | 一种图像处理芯片的检测方法、开发板和检测系统 |
US8990548B2 (en) | 2011-04-11 | 2015-03-24 | Intel Corporation | Apparatuses for configuring programmable logic devices from BIOS PROM |
CN102280133A (zh) * | 2011-08-16 | 2011-12-14 | 杭州晟元芯片技术有限公司 | 一种抗截获的代码加密烧录方式 |
JP2013050860A (ja) * | 2011-08-31 | 2013-03-14 | Renesas Electronics Corp | マイクロコンピュータ及びマルチマイクロコンピュータシステム |
CN103472748B (zh) * | 2013-09-04 | 2017-01-18 | 上海顺久电子科技有限公司 | 时序控制电路的验证系统和验证方法 |
CN104239090B (zh) * | 2014-07-15 | 2017-12-22 | 上海微小卫星工程中心 | 一种基于fpga的卫星星务计算机在轨重构系统及方法 |
CN105373411B (zh) * | 2015-11-03 | 2018-09-28 | 上海无线电设备研究所 | 一种用于星载数字信号处理器的在轨编程系统及设计方法 |
US10320390B1 (en) | 2016-11-17 | 2019-06-11 | X Development Llc | Field programmable gate array including coupled lookup tables |
CN108228221A (zh) * | 2016-12-14 | 2018-06-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于1553b总线的可编程逻辑在线升级方法 |
CN108710494B (zh) * | 2018-03-21 | 2022-07-01 | 昆山龙腾光电股份有限公司 | 一种更新测试设备数据的装置、系统及控制方法 |
JP7419764B2 (ja) | 2019-11-20 | 2024-01-23 | 株式会社リコー | 情報処理装置およびコンフィグレーション方法 |
CN113010344B (zh) | 2019-12-19 | 2022-10-11 | 瑞昱半导体股份有限公司 | 联合测试工作组存取接口装置、主机端以及目标系统 |
CN111142914B (zh) * | 2019-12-31 | 2021-05-28 | 南京中科晶上通信技术有限公司 | 一种基于zynq固件升级的方法及计算机可读存储介质 |
CN112068867B (zh) * | 2020-09-02 | 2023-05-23 | 中国航空工业集团公司西安飞行自动控制研究所 | 飞控计算机内多功能板软件在线加载架构及加载方法 |
US11892505B1 (en) * | 2022-09-15 | 2024-02-06 | Stmicroelectronics International N.V. | Debug and trace circuit in lockstep architectures, associated method, processing system, and apparatus |
CN116955048B (zh) * | 2023-06-16 | 2024-03-22 | 上海水木蓝鲸半导体技术有限公司 | 芯片校准和调试信息管理的方法、装置及计算机存储介质 |
Family Cites Families (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4914576A (en) * | 1986-12-18 | 1990-04-03 | Bull Hn Information Systems Inc. | Apparatus and method of loading a control store memory of a central subsystem |
US5101490A (en) * | 1989-01-10 | 1992-03-31 | Bull Hn Information Systems Inc. | Peripheral device controller with an EEPROM with microinstructions for a RAM control store |
US5428800A (en) | 1991-10-30 | 1995-06-27 | I-Cube, Inc. | Input/output (I/O) bidirectional buffer for interfacing I/O ports of a field programmable interconnection device with array ports of a cross-point switch |
US5343478A (en) * | 1991-11-27 | 1994-08-30 | Ncr Corporation | Computer system configuration via test bus |
US5425036A (en) | 1992-09-18 | 1995-06-13 | Quickturn Design Systems, Inc. | Method and apparatus for debugging reconfigurable emulation systems |
US5477544A (en) | 1994-02-10 | 1995-12-19 | The United States Of America As Represented By The Secretary Of The Navy | Multi-port tester interface |
US5465056A (en) | 1994-06-30 | 1995-11-07 | I-Cube, Inc. | Apparatus for programmable circuit and signal switching |
US5802268A (en) | 1994-11-22 | 1998-09-01 | Lucent Technologies Inc. | Digital processor with embedded eeprom memory |
US5894571A (en) * | 1995-08-14 | 1999-04-13 | Dell U.S.A., L.P. | Process for configuring software in a build-to-order computer system |
US5864486A (en) | 1996-05-08 | 1999-01-26 | Lattice Semiconductor Corporation | Method and apparatus for in-system programming of a programmable logic device using a two-wire interface |
US6097211A (en) | 1996-07-18 | 2000-08-01 | Altera Corporation | Configuration memory integrated circuit |
US5762644A (en) * | 1996-08-30 | 1998-06-09 | The Procter & Gamble Company | Toilet-disposable absorbent interlabial device |
US5761462A (en) | 1996-12-13 | 1998-06-02 | International Business Machines Corporation | Method and system for supporting peripheral component interconnect (PCI) peer-to-peer access across multiple PCI host bridges within a data-processing system |
US5933614A (en) | 1996-12-31 | 1999-08-03 | Compaq Computer Corporation | Isolation of PCI and EISA masters by masking control and interrupt lines |
US5826048A (en) | 1997-01-31 | 1998-10-20 | Vlsi Technology, Inc. | PCI bus with reduced number of signals |
US5935233A (en) | 1997-05-21 | 1999-08-10 | Micron Electronics, Inc. | Computer system with a switch interconnector for computer devices |
US6421812B1 (en) | 1997-06-10 | 2002-07-16 | Altera Corporation | Programming mode selection with JTAG circuits |
US6055632A (en) | 1997-09-25 | 2000-04-25 | Allen-Bradley Company, Llc | Method and apparatus for transferring firmware to a non-volatile memory of a programmable controller system |
US6167358A (en) | 1997-12-19 | 2000-12-26 | Nowonder, Inc. | System and method for remotely monitoring a plurality of computer-based systems |
US5956516A (en) | 1997-12-23 | 1999-09-21 | Intel Corporation | Mechanisms for converting interrupt request signals on address and data lines to interrupt message signals |
JPH11259383A (ja) | 1998-03-12 | 1999-09-24 | Hitachi Ltd | Ras情報取得回路及びそれを備えた情報処理システム |
US6198303B1 (en) | 1998-03-25 | 2001-03-06 | Altera Corporation | Configuration eprom with programmable logic |
US5970005A (en) | 1998-04-27 | 1999-10-19 | Ict, Inc. | Testing structure and method for high density PLDs which have flexible logic built-in blocks |
US6167477A (en) | 1998-06-15 | 2000-12-26 | Sun Microsystems, Inc. | Computer system bridge employing a resource control mechanism with programmable registers to control resource allocation |
US6567414B2 (en) | 1998-10-30 | 2003-05-20 | Intel Corporation | Method and apparatus for exiting a deadlock condition |
US6289406B1 (en) | 1998-11-06 | 2001-09-11 | Vlsi Technology, Inc. | Optimizing the performance of asynchronous bus bridges with dynamic transactions |
US6405276B1 (en) | 1998-12-10 | 2002-06-11 | International Business Machines Corporation | Selectively flushing buffered transactions in a bus bridge |
US6044025A (en) * | 1999-02-04 | 2000-03-28 | Xilinx, Inc. | PROM with built-in JTAG capability for configuring FPGAs |
US6460108B1 (en) | 1999-03-31 | 2002-10-01 | Intel Corporation | Low cost data streaming mechanism |
US6678741B1 (en) | 1999-04-09 | 2004-01-13 | Sun Microsystems, Inc. | Method and apparatus for synchronizing firmware |
US6366973B1 (en) | 1999-05-03 | 2002-04-02 | 3Com Corporation | Slave interface circuit for providing communication between a peripheral component interconnect (PCI) domain and an advanced system bus (ASB) |
JP2001005724A (ja) * | 1999-06-11 | 2001-01-12 | Internatl Business Mach Corp <Ibm> | ライト・キャッシュ転送の制御方法およびディスク装置 |
US6459297B1 (en) | 1999-09-20 | 2002-10-01 | Ag Communication Systems Corporation | System for programming field programmable devices |
US6636927B1 (en) | 1999-09-24 | 2003-10-21 | Adaptec, Inc. | Bridge device for transferring data using master-specific prefetch sizes |
US6622246B1 (en) | 1999-11-12 | 2003-09-16 | Xerox Corporation | Method and apparatus for booting and upgrading firmware |
US6137738A (en) | 1999-11-30 | 2000-10-24 | Lucent Technologies, Inc. | Method for in-system programming of serially configured EEPROMS using a JTAG interface of a field programmable gate array |
US7155711B2 (en) | 1999-12-10 | 2006-12-26 | Sedna Patent Services, Llc | Method and apparatus providing remote reprogramming of programmable logic devices using embedded JTAG physical layer and protocol |
US6551225B1 (en) * | 2000-01-24 | 2003-04-22 | Ron Richard Romero | Flexible hemispherical exercise |
US6658508B1 (en) | 2000-01-31 | 2003-12-02 | Koninklijke Philips Electronics N.V. | Expansion module with external bus for personal digital assistant and design method therefor |
US6255849B1 (en) * | 2000-02-04 | 2001-07-03 | Xilinx, Inc. | On-chip self-modification for PLDs |
US6427198B1 (en) * | 2000-02-15 | 2002-07-30 | International Business Machines Corporation | Method, system, and program for determining system configuration |
US6529989B1 (en) | 2000-05-03 | 2003-03-04 | Adaptec, Inc. | Intelligent expansion ROM sharing bus subsystem |
JP2002025282A (ja) * | 2000-07-12 | 2002-01-25 | Hitachi Ltd | 不揮発性半導体記憶装置 |
US6658519B1 (en) | 2000-07-28 | 2003-12-02 | International Business Machines Corporation | Bus bridge with embedded input/output (I/O) and transaction tracing capabilities |
US6629179B1 (en) | 2000-07-31 | 2003-09-30 | Adaptec, Inc. | Message signaled interrupt generating device and method |
US7168005B2 (en) | 2000-09-14 | 2007-01-23 | Cadence Design Systems, Inc. | Programable multi-port memory BIST with compact microcode |
JP2002113675A (ja) * | 2000-10-11 | 2002-04-16 | Sony Corp | ロボット制御システム並びにロボット制御用ソフトウェアの導入方法 |
US6691205B2 (en) * | 2001-03-05 | 2004-02-10 | M-Systems Flash Disk Pioneers Ltd. | Method for using RAM buffers with simultaneous accesses in flash based storage systems |
US6823418B2 (en) | 2001-06-29 | 2004-11-23 | Intel Corporation | Virtual PCI device apparatus and method |
-
2001
- 2001-07-30 US US09/918,030 patent/US6883109B2/en not_active Expired - Lifetime
-
2002
- 2002-07-15 DE DE10231930A patent/DE10231930A1/de not_active Withdrawn
- 2002-07-23 JP JP2002213312A patent/JP2003058385A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102012217585A1 (de) * | 2012-09-27 | 2014-03-27 | Siemens Aktiengesellschaft | Automatische Konfiguration von programmierbaren Bausteinen |
DE102012217585B4 (de) * | 2012-09-27 | 2014-11-06 | Siemens Aktiengesellschaft | Verfahren zur automatischen Konfiguration von programmierbaren Bausteinen, elektronische Baugruppenanordnung, Röntgendetektor und Computertomographiesystem |
Also Published As
Publication number | Publication date |
---|---|
JP2003058385A (ja) | 2003-02-28 |
US6883109B2 (en) | 2005-04-19 |
US20030023771A1 (en) | 2003-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE10231930A1 (de) | Verfahren zum Zugreifen auf Abtastketten und zum Aktualisieren eines EEPROM-residenten FPGA-Codes durch einen Systemverwaltungsprozessor und einen JTAG-Bus | |
EP1286355A2 (de) | System und Verfahren zur Im-System-Programmierung | |
DE10231990A1 (de) | Verfahren und Vorrichtung für eine serieller-Bus-JTAG-Busbrücke | |
DE69834401T2 (de) | Businterfacesystem und verfahren | |
DE10003108B4 (de) | Verfahren und Computersystem zum Durchführen einer Softwareinstallation | |
DE69434473T2 (de) | Prozessorschnittstellenchip für Doppelmikroprozessorsystem | |
EP0503117B1 (de) | Prozessorschaltung | |
DE112012005320T5 (de) | Multicore-Prozessor mit intern integriertem entscheidungsbasierten Selbsttest | |
DE10296986T5 (de) | Automatischer Austausch einer detekten BIOS-Abbildung | |
DE2657848A1 (de) | Steuereinheit fuer ein datenverarbeitungssystem | |
DE10231956A1 (de) | Verfahren und Vorrichtung zur systeminternen Programmierung durch einen gemeinsamen Verbindungspunkt von programmierbaren logischen Bauelementen auf mehreren Schaltungsplatinen eines Systems | |
DE10238563A1 (de) | System und Verfahren zum Testen von Schaltungen und Programmieren integrierter Schaltungsvorrichtungen | |
EP0104635A2 (de) | Verfahren und Anordnung zum Prüfen eines digitalen Rechners | |
DE112018006401T5 (de) | Transparent zugeordnete flash-memory-sicherheit | |
DE102018123978A1 (de) | Verfahren und vorrichtung zur speichercontrollererkennung von anbieterspezifischen nichtflüchtigen speichergeräten | |
WO2015003943A1 (de) | Hinterlegen mindestens eines berechenbaren integritätsmesswertes in einem speicherbereich eines speichers | |
DE112019002336T5 (de) | Speicherpoolzuordnung für ein mehrkern-system | |
DE112007000688T5 (de) | Fehlerverwaltungstopologien | |
EP1955164A1 (de) | Programmgesteuerte einheit und verfahren zum betreiben derselbigen | |
DE102004012279B3 (de) | Verfahren und Vorrichtung zum Speicherselbsttest von eingebetteten Speichern in Halbleiterchips | |
EP1118935A2 (de) | Schaltungsanordnung und Verfahren zur Erzeugung und zum Auslesen von Ersatzdaten | |
EP0791929B1 (de) | Elektronisches Gerät und Verfahren zu seiner Duplizierung und Einrichtung zur Datenübertragung zwischen zwei gleichartig aufgebauten elektronischen Geräten | |
WO2005078586A2 (de) | Einrichtung und verfahren zur analyse von eingebetteten systemen für sicherheitskritische rechnersysteme in kraftfahrzeugen | |
DE60008872T2 (de) | Verfahren und vorrichtung zur automatischen reintegration eines moduls in ein rechnersystem | |
DE10217609A1 (de) | Ein-Chip-Mikrocomputer mit dynamischer Einbrenn-Testfunktion und dynamisches Einbrenn-Testverfahren dafür |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8127 | New person/name/address of the applicant |
Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE |
|
8130 | Withdrawal |