DE102015119201A1 - A method of configuring an interface unit of a computer system - Google Patents

A method of configuring an interface unit of a computer system Download PDF

Info

Publication number
DE102015119201A1
DE102015119201A1 DE102015119201.2A DE102015119201A DE102015119201A1 DE 102015119201 A1 DE102015119201 A1 DE 102015119201A1 DE 102015119201 A DE102015119201 A DE 102015119201A DE 102015119201 A1 DE102015119201 A1 DE 102015119201A1
Authority
DE
Germany
Prior art keywords
processor
sequence
ion1
ion5
seq1
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
Application number
DE102015119201.2A
Other languages
German (de)
Inventor
Jochen SAUER
Robert Leinfellner
Matthias Klemm
Thorsten Brehm
Robert Polnau
Matthias Schmitz
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.)
Dspace GmbH
Original Assignee
Dspace GmbH
Dspace Digital Signal Processing and Control Engineering 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 Dspace GmbH, Dspace Digital Signal Processing and Control Engineering GmbH filed Critical Dspace GmbH
Priority to US15/151,767 priority Critical patent/US10180917B2/en
Priority to US15/151,746 priority patent/US10055363B2/en
Publication of DE102015119201A1 publication Critical patent/DE102015119201A1/en
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4072Drivers or receivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/18Address timing or clocking circuits; Address control signal generation or management, e.g. for row address strobe [RAS] or column address strobe [CAS] signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Abstract

Verfahren zum Konfigurieren einer Schnittstelleneinheit eines Computersystems mit einem ersten Prozessor und einem auf der Schnittstelleneinheit hinterlegten zweiten Prozessor, wobei eine Datenverbindung zwischen dem ersten Prozessor und dem zweiten Prozessor eingerichtet ist und die Schnittstelleneinheit mindestens einen Eingangsdatenkanal und einen Ausgangsdatenkanal aufweist. Eine Peripherie des Computersystems ist eingerichtet, um Eingangsdaten in dem Eingangsdatenkanal zu hinterlegen und Ausgangsdaten aus dem Ausgangsdatenkanal auszulesen, und der zweite Prozessor ist eingerichtet, um die Eingangsdaten aus dem Eingangsdatenkanal auszulesen und Ausgangsdaten in dem Ausgangsdatenkanal zu hinterlegen. Eine Sequenz von Prozessorbefehlen für den zweiten Prozessor wird derart erstellt, dass eine Anzahl von Subsequenzen erstellt wird, wobei eine erste Subsequenz eine Routine zum Einlesen und Verarbeiten zumindest der in dem ersten Eingangsdatenkanal hinterlegten Daten darstellt und eine zweite Subsequenz eine Routine zum Einlesen und Verarbeiten zumindest der in einem zweiten Eingangsdatenkanal hinterlegten Daten darstellt oder eine Routine zur Verarbeitung von durch den ersten Prozessor erzeugten Daten und zur Hinterlegung der verarbeiteten Daten in dem ersten Ausgangsdatenkanal darstellt, durch Zusammenfügen der Subsequenzen die Sequenz erstellt und die Sequenz auf den zweiten Prozessor geladen wird.A method of configuring an interface unit of a computer system having a first processor and a second processor deposited on the interface unit, wherein a data connection is established between the first processor and the second processor and the interface unit comprises at least one input data channel and one output data channel. A periphery of the computer system is arranged to store input data in the input data channel and to read output data from the output data channel, and the second processor is arranged to read the input data from the input data channel and store output data in the output data channel. A sequence of processor instructions for the second processor is created such that a number of subsequences are created, wherein a first subsequence represents a routine for reading in and processing at least the data stored in the first input data channel and a second subsequence is a routine for reading and processing at least represents the data stored in a second input data channel or represents a routine for processing data generated by the first processor and for storing the processed data in the first output data channel, the sequence is created by assembling the subsequences and the sequence is loaded onto the second processor.

Description

Gegenstände der im Folgenden beschriebenen Erfindung sind ein Verfahren zum Konfigurieren einer Schnittstelleneinheit eines Computersystems gemäß dem Oberbegriff des Patentanspruchs 1 sowie ein Computersystem gemäß dem Oberbegriff des Patentanspruchs 12. Objects of the invention described below are a method for configuring an interface unit of a computer system according to the preamble of patent claim 1 and a computer system according to the preamble of patent claim 12.

Viele Computersysteme weisen Schnittstelleneinheiten für den Datenaustausch zwischen einem Hauptprozessor und peripheren Geräten auf. Eine derartige Schnittstelleneinheit kann beispielsweise als steckbare I/O-Karte ausgestaltet sein. Viele Schnittstelleneinheiten sind mit eigenen Prozessoren zur Aufbereitung ein- und auslaufender Daten ausgestattet, wobei es einige Schnittstelleneinheiten ermöglichen, die Programmierung des auf der Schnittstelleneinheit hinterlegten Prozessors flexibel den Anforderungen des durch den Hauptprozessor abgearbeiteten Programms anzupassen. Many computer systems have interface units for data exchange between a main processor and peripheral devices. Such an interface unit can be designed, for example, as a pluggable I / O card. Many interface units are equipped with their own processors for processing incoming and outgoing data, with some interface units making it possible to flexibly adapt the programming of the processor stored on the interface unit to the requirements of the program executed by the main processor.

Beispielsweise bietet die Firma Digi International Inc. unter dem Produktnamen RabbitCore RCM4100 eine durch den Anwender frei programmierbare Schnittstelleneinheit an. Ein anderer bekannter Ansatz ist, eine Vielzahl von Programmfunktionalitäten für die Aufbereitung ein- und auslaufender Daten persistent auf der Schnittstelleneinheit zu hinterlegen. Einen derartigen Ansatz beschreibt beispielsweise die Druckschrift US 6.189.052 B2 . For example, Digi International Inc. offers a user-programmable interface unit under the product name RabbitCore RCM4100. Another known approach is to deposit a variety of program functions for the processing of incoming and outgoing data persistently on the interface unit. Such an approach describes, for example, the document US 6,189,052 B2 ,

Wenn das Computersystem vorgesehen ist, das durch den Hauptprozessor abgearbeitete Programm in harter Echtzeit abzuarbeiten, dann müssen die auf dem Computersystem ablaufenden Prozesse, insbesondere auch die durch den auf der Schnittstelleneinheit hinterlegten Prozessor abgearbeiteten Prozesse, innerhalb eines vordefinierten Zeitraums garantiert abgeschlossen werden. Der Prozessor auf der Schnittstelleneinheit sollte deshalb effizient arbeiten, d.h. ein möglichst großer Anteil der durch ihn ausgeführten Prozessorbefehle sollte zielführend mit der programmgemäßen Aufbereitung ein- und auslaufender Daten verknüpft sein. Weiterhin sollte der auf der Schnittstelleneinheit hinterlegte Prozessor möglichst deterministisch arbeiten, also einen geringen Jitter aufweisen, sodass die für die Abarbeitung von Prozessen benötigte Zeit hinreichend gut abschätzbar ist. If the computer system is intended to process the program executed by the main processor in hard real time, then the processes running on the computer system, in particular also the processes executed by the processor stored on the interface unit, must be guaranteed to be completed within a predefined period of time. The processor on the interface unit should therefore operate efficiently, i. The largest possible proportion of the processor instructions executed by him should be purposefully linked to the program-specific processing of incoming and outgoing data. Furthermore, the processor stored on the interface unit should work as deterministically as possible, ie have a low jitter, so that the time required for the execution of processes can be estimated sufficiently well.

Vor diesem Hintergrund ist es Aufgabe der Erfindung, den Stand der Technik weiterzubilden. Insbesondere ist es eine Aufgabe der Erfindung, ein Verfahren zum Konfigurieren einer Schnittstelleneinheit eines Computersystems anzugeben, das eine schnelle und jitterarme Abarbeitung des auf einem Prozessor oder mehreren Prozessoren der Schnittstelleneinheit hinterlegten Programmcodes zur Aufarbeitung von zwischen einem Hauptprozessor und einer Peripherie des Computersystems ausgetauschten Daten gewährleistet. Against this background, it is an object of the invention to develop the state of the art. In particular, it is an object of the invention to provide a method of configuring an interface unit of a computer system which ensures fast and low-jitter execution of the program code stored on one or more processors of the interface unit for processing data exchanged between a main processor and a peripheral of the computer system.

Die Aufgabe wird durch ein Verfahren mit den Merkmalen des Patentanspruchs 1 gelöst. Vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand von abhängigen Ansprüchen. The object is achieved by a method having the features of patent claim 1. Advantageous embodiments of the invention are the subject of dependent claims.

Gegenstand der Erfindung ist demnach ein Verfahren zum Konfigurieren einer Schnittstelleneinheit eines Computersystems, wobei das Computersystem einen ersten Prozessor und eine erste Datenverbindung zwischen dem ersten Prozessor und der Schnittstelleneinheit aufweist und auf der Schnittstelleneinheit ein zweiter Prozessor hinterlegt ist oder hinterlegt wird. Die Schnittstelleneinheit weist mindestens zwei Datenkanäle auf, wobei ein erster Eingangsdatenkanal als Datenkanal zum Hinterlegen von Eingangsdaten und ein erster Ausgangsdatenkanal als Datenkanal zum Hinterlegen von Ausgangsdaten ausgestaltet ist. Weiterhin wird eine Peripherie des Computersystems derart eingerichtet, dass die Peripherie eine Anzahl peripherer Geräte umfasst und die Peripherie ausgestaltet ist, um mittels einer zweiten Datenverbindung Eingangsdaten in dem ersten Eingangsdatenkanal zu hinterlegen oder Ausgangsdaten aus dem ersten Ausgangsdatenkanal auszulesen. Die Schnittstelleneinheit ist ausgestaltet, um eine Datenverbindung zum Auslesen der in dem ersten Eingangsdatenkanal hinterlegten Eingangsdaten durch den zweiten Prozessor bereitzustellen und um eine Datenverbindung zum Hinterlegen von Ausgangsdaten in dem ersten Ausgangsdatenkanal durch den zweiten Prozessor bereitzustellen. Auf dem Computersystem wird ein Computerprogramm hinterlegt, und der erste Prozessor wird programmiert, um das Computerprogramm abzuarbeiten und während der Abarbeitung des Computerprogramms einer Variablen des Computerprogramms einen Wert zuzuweisen, der durch die im ersten Eingangsdatenkanal hinterlegten Eingangsdaten definiert ist. The invention accordingly provides a method for configuring an interface unit of a computer system, wherein the computer system has a first processor and a first data connection between the first processor and the interface unit and a second processor is deposited or deposited on the interface unit. The interface unit has at least two data channels, wherein a first input data channel is designed as a data channel for storing input data and a first output data channel as a data channel for storing output data. Furthermore, a periphery of the computer system is set up such that the periphery comprises a number of peripheral devices and the periphery is configured to deposit input data in the first input data channel or read out output data from the first output data channel by means of a second data connection. The interface unit is configured to provide a data connection for reading out the input data stored in the first input data channel by the second processor and for providing a data connection for storing output data in the first output data channel by the second processor. A computer program is deposited on the computer system and the first processor is programmed to execute the computer program and to assign, during the execution of the computer program, a value to a variable of the computer program defined by the input data stored in the first input data channel.

Erfindungsgemäß ist vorgesehen, dass eine Sequenz von Prozessorbefehlen erstellt und auf den zweiten Prozessor geladen wird, nach dem Laden der Sequenz auf den zweiten Prozessor die Abarbeitung des Computerprogramms durch den ersten Prozessor und die Abarbeitung der Sequenz durch den zweiten Prozessor gestartet wird und während der Abarbeitung der Sequenz der durch die im ersten Eingangsdatenkanal hinterlegten Daten definierte Wert an eine erste Speicheradresse geschrieben wird. Die Erstellung der Sequenz von Prozessorbefehlen erfolgt derart, dass eine Anzahl von Subsequenzen von Prozessorbefehlen erstellt wird, wobei eine erste Subsequenz eine Routine zum Einlesen und Verarbeiten zumindest der in dem ersten Eingangsdatenkanal hinterlegten Daten darstellt und eine zweite Subsequenz eine Routine zum Einlesen und Verarbeiten zumindest der in einem zweiten Eingangsdatenkanal hinterlegten Daten darstellt oder eine Routine zur Verarbeitung von durch den ersten Prozessor erzeugten Daten und zur Hinterlegung der verarbeiteten Daten in dem ersten Ausgangsdatenkanal darstellt, und durch Zusammenfügen der Subsequenzen die Sequenz erstellt wird. According to the invention, it is provided that a sequence of processor commands is created and loaded onto the second processor, after the sequence has been loaded onto the second processor, the processing of the computer program by the first processor and the execution of the sequence by the second processor are started and during processing the sequence of the value defined by the data stored in the first input data channel is written to a first memory address. The sequence of processor instructions is generated in such a way that a number of subsequences of processor instructions are created, a first subsequence representing a routine for reading in and processing at least the data stored in the first input data channel, and a second subsequence for reading a routine and processing at least the data stored in a second input data channel or represents a routine for processing data generated by the first processor and for storing the processed data in the first output data channel, and the sequence is created by assembling the subsequences.

Unter einer Subsequenz ist in einer Ausführung des erfindungsgemäßen Verfahrens eine Folge von durch den zweiten Prozessor ausführbaren Prozessorbefehlen zu verstehen, die in ihrer Gesamtheit eine Routine zur Weiterleitung von Eingangsdaten bilden, d.h. eine Routine zum Auslesen der Eingangsdaten aus einem Eingangsdatenkanal und zur Hinterlegung der ausgelesenen Eingangsdaten an einer durch den ersten Prozessor auslesbaren Speicheradresse, oder die in ihrer Gesamtheit eine Routine zur Weiterleitung von Ausgangsdaten bilden, d.h. eine Routine zum Auslesen der Ausgangsdaten aus einer durch den ersten Prozessor beschreibbaren Speicheradresse und zur Hinterlegung der ausgelesenen Ausgangsdaten in einem Ausgangsdatenkanal. In einer anderen Ausführung des erfindungsgemäßen Verfahrens ist unter einer Subsequenz zusätzlich eine Information zu verstehen, die in eindeutiger Weise eine durch den zweiten Prozessor ausführbare Folge von Prozessorbefehlen definiert, wobei die durch die Subsequenz definierten Prozessorbefehle in ihrer Gesamtheit jeweils eine Routine zur Weiterleitung von Eingangsdaten oder von Ausgangsdaten bilden. In der letztgenannten Ausführung liegt jede Subsequenz zunächst in Form einer derartigen Information vor und wird vor dem Laden der Sequenz auf den zweiten Prozessor in eine Folge von durch den zweiten Prozessor ausführbaren Prozessorbefehlen übersetzt. Insbesondere liegt in einer Ausführung der Erfindung jede Subsequenz zunächst in Form von durch einen Prozessor des Computersystems automatisch in einer Hochsprache verfassten Quellcodes vor, wobei vor dem Laden der Sequenz auf den zweiten Prozessor jede Subsequenz für den zweiten Prozessor kompiliert wird. A subsequence in an embodiment of the method according to the invention is a sequence of processor instructions executable by the second processor, which in their entirety constitute a routine for forwarding input data, i. a routine for reading out the input data from an input data channel and storing the read-out input data at a memory address readable by the first processor, or which in its entirety constitute a routine for forwarding output data, i. a routine for reading out the output data from a memory address which can be written by the first processor and for storing the read-out output data in an output data channel. In another embodiment of the method according to the invention, a subsequence additionally means information which uniquely defines a sequence of processor instructions which can be executed by the second processor, wherein the processor instructions defined by the subsequence in their entirety each include a routine for forwarding input data or form output data. In the latter embodiment, each subsequence is initially in the form of such information and is translated into a sequence of processor instructions executable by the second processor prior to loading the sequence onto the second processor. In particular, in one embodiment of the invention, each subsequence is initially in the form of source code automatically written by a processor of the computer system in a high-level language, and each subsequence is compiled for the second processor prior to loading the sequence onto the second processor.

Eingangsdaten und Ausgangsdaten können von einer Sequenz in unveränderter Form weitergeleitet werden. Eine Sequenz kann aber auch Prozessorbefehle beinhalten, um eingelesene Daten aufzubereiten oder zu verarbeiten und die eingelesenen Daten in aufbereiteter oder verarbeiteter Form weiterzuleiten. Input data and output data can be forwarded by a sequence in unchanged form. However, a sequence may also include processor instructions to process or process read-in data and to forward the read-in data in processed or processed form.

Unter einer Sequenz ist erfindungsgemäß eine durch Zusammenfügen von Subsequenzen erstellte Folge von Subsequenzen zu verstehen, unabhängig davon, ob die Subsequenzen als eine Folge von durch den zweiten Prozessor ausführbaren Prozessorbefehlen vorliegen oder in Form einer eine Folge von Prozessorbefehlen definierenden Information vorliegen. According to the invention, a sequence is to be understood as a sequence of subsequences created by combining subsequences, regardless of whether the subsequences are present as a sequence of processor instructions executable by the second processor or in the form of information defining a sequence of processor instructions.

Unter Eingangsdaten werden von einer peripheren Komponente des Computersystems erzeugte, zur Verarbeitung durch das durch den Hauptprozessor abgearbeitete Computerprogramm vorgesehene Daten verstanden. Beispiele für Eingangsdaten sind Messwerte eines Sensors oder einer in eine automotive Simulation eingebundenen Echtlast. Ein Eingangsdatenkanal ist ein zur Hinterlegung von Eingangsdaten durch eine periphere Komponente eingerichteter Datenkanal der Schnittstelleneinheit. Unter Ausgangsdaten werden von dem Computerprogramm erzeugte, zur Auslesung durch eine periphere Komponente vorgesehene Daten verstanden. Beispiele für Ausgangsdaten sind Steuerbefehle für einen Aktor einer in eine automotive Simulation eingebundenen Echtlast. Ein Ausgangsdatenkanal ist ein zur Hinterlegung von Ausgangsdaten zur Auslesung durch eine periphere Komponente eingerichteter Datenkanal der Schnittstelleneinheit. Input data is understood to mean data generated by a peripheral component of the computer system and intended for processing by the computer program executed by the main processor. Examples of input data are measured values of a sensor or a real load integrated into an automotive simulation. An input data channel is a data channel of the interface unit established for storing input data through a peripheral component. Output data is understood to be data generated by the computer program and intended to be read by a peripheral component. Examples of output data are control commands for an actuator of a real load integrated in an automotive simulation. An output data channel is a data channel of the interface unit established for storing output data for reading by a peripheral component.

Ein Vorteil des erfindungsgemäßen Verfahrens ist, dass die durch den zweiten Prozessor abgearbeitete Routine zur Verarbeitung von Eingangsdaten und Ausgangsdaten auf dem ersten Prozessor erstellt wird, der auch mit der Abarbeitung des Computerprogramms beaufschlagt ist. In einer bevorzugten Ausgestaltung des Verfahrens erstellen unterschiedliche Subroutinen des Computerprogramms, die während der Abarbeitung des Computerprogramms Daten mit der Peripherie austauschen, jeweils eine eigene, den Anforderungen der jeweiligen Subroutine entsprechende Subsequenz. Die auf den zweiten Prozessor geladene Sequenz ist dadurch immer den individuellen Anforderungen des auf dem ersten Prozessor hinterlegten Computerprogramms angepasst. Dadurch entfällt die Notwendigkeit, eine große Anzahl von Funktionalitäten zur Aufbereitung, Verarbeitung und Weiterleitung von Daten persistent auf dem zweiten Prozessor vorzuhalten. Während der Abarbeitung des Computerprogramms arbeitet der zweite Prozessor die Sequenz sukzessive ab, d.h. führt die in der Sequenz enthaltenen Prozessorbefehle in der erhaltenen Reihenfolge aus, und investiert wenig Rechenkapazität, insbesondere keine Rechenkapazität, in die Ausführung unproduktiver, d.h. nicht unmittelbar zielführender, Prozessorbefehle wie Sprunganweisungen und Funktionsaufrufe. Weiterhin entfällt die Notwendigkeit prozessorseitiger Optimierungsvorkehrungen zur Beschleunigung der Abarbeitung des auf dem zweiten Prozessor hinterlegten Programmcodes, beispielsweise durch Caching, wodurch eine deterministische Abarbeitung der Sequenz durch den zweiten Prozessor sichergestellt ist. An advantage of the method according to the invention is that the routine executed by the second processor for processing input data and output data is created on the first processor, which is also supplied with the processing of the computer program. In a preferred embodiment of the method, different subroutines of the computer program, which exchange data with the periphery during execution of the computer program, each create its own subsequence corresponding to the requirements of the respective subroutine. The sequence loaded on the second processor is thereby always adapted to the individual requirements of the computer program stored on the first processor. This eliminates the need to maintain a large number of data processing, processing and routing capabilities persistently on the second processor. During execution of the computer program, the second processor successively operates the sequence, i. executes the processor instructions contained in the sequence in the order received, and invests little computational capacity, in particular no computational capacity, in the execution of unproductive, i. not directly expedient, processor instructions such as jump instructions and function calls. Furthermore, eliminating the need for processor-side optimization arrangements to speed up the processing of stored on the second processor program code, for example by caching, whereby a deterministic processing of the sequence is ensured by the second processor.

Ein weiterer Vorteil der Erfindung ist eine Kostenreduktion gegenüber aus dem Stand der Technik bekannten Lösungen. Weil der zweite Prozessor die Sequenz von Prozessorbefehlen nur sukzessive abarbeiten muss, ist eine hinreichend schnelle Abarbeitung der Sequenz auch bei Anwendung eines technisch einfachen, kostengünstigen Prozessors auf der Schnittstelleneinheit gewährleistet. Another advantage of the invention is a cost reduction over known from the prior art solutions. Because the second processor only needs to process the sequence of processor instructions successively, it is sufficiently fast Processing the sequence guaranteed even when using a technically simple, inexpensive processor on the interface unit.

Bevorzugt beinhaltet das Computerprogramm mindestens einen ersten I/O-Treiber und einen zweiten I/O-Treiber, wobei der erste I/O-Treiber die erste Subsequenz erstellt und der zweite I/O-Treiber die zweite Subsequenz erstellt. Unter einem I/O-Treiber ist im Rahmen der Erfindung eine Subroutine einer Task des Computerprogramms zu verstehen, wobei der I/O-Treiber eine Subroutine für den Austausch von Daten zwischen der Task und der Peripherie beinhaltet. Preferably, the computer program includes at least a first I / O driver and a second I / O driver, wherein the first I / O driver creates the first subsequence and the second I / O driver creates the second subsequence. In the context of the invention, an I / O driver is to be understood as a subroutine of a task of the computer program, wherein the I / O driver includes a subroutine for the exchange of data between the task and the peripheral.

Besonders bevorzugt wird vor Beginn der Abarbeitung des Computerprogramms eine Konfigurationsphase des Computersystems gestartet, wobei während der Konfigurationsphase eine Softwareinstanz die Sequenz erzeugt, wobei die Sequenz unmittelbar nach Erzeugung durch die Softwareinstanz leer ist, also noch keine Prozessorbefehle und noch keine einen Prozessorbefehl definierende Information enthält, und wobei der erste I/O-Treiber die erste Subsequenz in die Sequenz schreibt und der zweite I/O-Treiber die zweite Subsequenz in die Sequenz schreibt. In dieser Ausführung erzeugt die Softwareinstanz die Sequenz als ein Objekt, das eigerichtet ist, eine Anzahl an Subsequenzen aufzunehmen. Particularly preferably, a configuration phase of the computer system is started before the start of the processing of the computer program, wherein a software instance generates the sequence during the configuration phase, wherein the sequence is empty immediately after being generated by the software instance, ie no processor instructions yet contain any processor-defining information and wherein the first I / O driver writes the first subsequence into the sequence and the second I / O driver writes the second subsequence into the sequence. In this embodiment, the software instance generates the sequence as an object adapted to receive a number of subsequences.

In einer bevorzugten Ausführung wird die Sequenz vor dem Laden der Sequenz auf den zweiten Prozessor von einer Softwareinstanz automatisch optimiert. Unter einer Optimierung der Sequenz ist insbesondere die Bereinigung der Sequenz von redundanten Prozessorbefehlen zu verstehen, beispielsweise durch Entfernung redundanter Prozessorbefehle oder durch Einfügung eines Befehls zur Ausführung eines Strobes. Wegen der voneinander unabhängigen Erstellung der einzelnen Subsequenzen sind redundante Prozessorbefehle in der noch nicht optimierten Sequenz nicht auszuschließen. In a preferred embodiment, the sequence is automatically optimized by a software instance before loading the sequence onto the second processor. An optimization of the sequence is to be understood in particular as the cleaning up of the sequence of redundant processor instructions, for example by removing redundant processor instructions or by inserting a command to execute a strobe. Due to the independent creation of the individual subsequences, redundant processor instructions in the not yet optimized sequence can not be ruled out.

Unter einem Strobe ist zu verstehen, dass mindestens zwei Prozessorbefehle zur Ausgabe eines Datums, d.h. mindestens ein erster Prozessorbefehl und ein zweiter Prozessorbefehl zum Schreiben eines Wertes in eine Speicheradresse, nicht unmittelbar nach Aufruf des jeweiligen Prozessorbefehls durch den zweiten Prozessor durchgeführt werden, sondern der gemäß dem ersten Prozessorbefehl zu schreibende erste Wert und der gemäß dem zweiten Prozessorbefehl zu schreibende zweite Wert zunächst archiviert werden, und dass bei Ausführung des Strobes durch den zweiten Prozessor der erste Wert und der zweite Wert simultan oder unmittelbar nacheinander geschrieben werden. Ein Strobe bewirkt somit eine Synchronisierung der Ausgabe von Daten einer Sequenz. A strobe is understood to mean that at least two processor instructions for issuing a date, i. at least a first processor command and a second processor command for writing a value to a memory address, not immediately after the respective processor command by the second processor are performed, but the first value to be written according to the first processor command and the second value to be written according to the second processor command first, and that when the strobe is executed by the second processor, the first value and the second value are written simultaneously or immediately one after the other. A strobe thus causes a synchronization of the output of data of a sequence.

Besonders bevorzugt erfolgt die Erstellung der Subsequenzen derart, dass die Sequenz eine minimierte Anzahl an Sprunganweisungen, insbesondere keine Sprunganweisungen, aufweist. Weiterhin bevorzugt erfolgt die Erstellung der Subsequenzen derart, dass die Sequenz keine Funktionsaufrufe beinhaltet. Particularly preferably, the subsequences are created such that the sequence has a minimized number of jump instructions, in particular no jump instructions. Further preferably, the creation of the subsequences takes place in such a way that the sequence contains no function calls.

Weiterhin bevorzugt ist der zweite Prozessor eingerichtet oder wird eingerichtet, bei der Abarbeitung der Sequenz kein Caching anzuwenden, sodass die zur Abarbeitung der Sequenz benötigte Zeit sich in eindeutiger Weise aus der Anzahl der in der Sequenz enthaltenen Prozessorbefehle und aus der Taktung des zweiten Prozessors ergibt. Furthermore, the second processor is preferably set up or is set up to use no caching during the processing of the sequence, so that the time required for the execution of the sequence results unambiguously from the number of processor instructions contained in the sequence and from the timing of the second processor.

In einer vorteilhaften Ausgestaltung des Verfahrens weist die Schnittstelleneinheit mindestens zwei parallel arbeitende zweite Prozessoren auf, wobei für jeden zweiten Prozessor eine individuelle Sequenz erstellt wird. Unter einem zweiten Prozessor ist in dieser Ausführung jeder auf der Schnittstelleneinheit hinterlegte Prozessor zu verstehen, der die in einem der in den Ansprüchen 1 bis 6 beanspruchten Verfahren definierten Eigenschaften des zweiten Prozessors aufweist und der vorgesehen ist, eine gemäß einem der in den Ansprüchen 1 bis 6 beanspruchten Verfahren erstellte Sequenz von Prozessorbefehlen abzuarbeiten. In an advantageous embodiment of the method, the interface unit has at least two second processors operating in parallel, an individual sequence being created for each second processor. A second processor in this embodiment is understood to mean any processor deposited on the interface unit, which has the characteristics of the second processor defined in one of the methods claimed in claims 1 to 6 and which is provided according to one of the claims 1 to 6 processed method processed sequence of processor commands to work off.

Besonders bevorzugt weist die Schnittstelleneinheit ein FPGA auf, und die auf der Schnittstelleneinheit hinterlegten zweiten Prozessoren sind oder werden als Softcores auf dem FPGA implementiert, insbesondere derart, dass die Softcores als Flow-Control-Prozessoren implementiert sind bzw. werden. Particularly preferably, the interface unit has an FPGA, and the second processors deposited on the interface unit are or will be implemented as softcores on the FPGA, in particular in such a way that the softcores are / are implemented as flow control processors.

In einer vorteilhaften Ausgestaltung des Verfahrens beinhaltet das Computerprogramm mehr als eine Task, und jeder zweite Prozessor wird eindeutig einer Task zugewiesen, wobei die auf einen bestimmten zweiten Prozessor geladene Sequenz nur Subsequenzen von I/O-Treibern der Task enthält, der der bestimmte Prozessor zugewiesen ist. In an advantageous embodiment of the method, the computer program includes more than one task, and each second processor is uniquely assigned to a task, the sequence loaded on a particular second processor containing only subsequences of I / O drivers of the task assigned to the particular processor is.

Bevorzugt wird weiterhin jeder Task mit mindestens einem I/O-Treiber eine Priorität zugewiesen, und die zweiten Prozessoren werden bevorzugt der Task mit der höchsten Priorität zugewiesen. Preferably, each task is assigned a priority with at least one I / O driver, and the second processors are preferably assigned to the task with the highest priority.

In einer weiterhin bevorzugten Ausgestaltung wird die Abarbeitung der Sequenz auf einem zweiten Prozessor durch ein Triggersignal gestartet, wobei ein zweiter Prozessor die Sequenz nach Registrierung eines Triggersignals durch den zweiten Prozessor genau einmal abarbeitet. Das Triggersignal wird dabei durch einen I/O-Treiber oder zu vordefinierten Zeitpunkten durch einen Zeitgeber, d.h. einen Timer, erzeugt. In a further preferred refinement, the execution of the sequence on a second processor is started by a trigger signal, with a second processor processing the sequence exactly once after registration of a trigger signal by the second processor. The trigger signal is thereby transmitted by an I / O driver or at predefined times by a timer, i. a timer, generated.

Gegenstand der Erfindung ist außerdem ein Computersystem mit einem ersten Prozessor und einer Schnittstelleneinheit mit einem auf der Schnittstelleneinheit hinterlegten zweiten Prozessor, das eingerichtet ist, um mittels des ersten Prozessors ein durch einen der Ansprüche 1 bis 11 beanspruchtes Verfahren zum Konfigurieren der Schnittstelleneinheit durchzuführen. Bevorzugt ist das Computersystem ausgestaltet, um ein Computerprogramm mittels des ersten Prozessors in harter Echtzeit abzuarbeiten, insbesondere wobei das Computersystem als Hardware-in-the-Loop-Simulator oder als Rapid-Control-Prototyping-System ausgestaltet ist. The invention furthermore relates to a computer system having a first processor and an interface unit with a second processor deposited on the interface unit, which is set up to carry out, by means of the first processor, a method for configuring the interface unit claimed by one of claims 1 to 11. Preferably, the computer system is designed to process a computer program by means of the first processor in hard real time, in particular wherein the computer system is designed as a hardware-in-the-loop simulator or as a rapid control prototyping system.

Unter einem Hardware-in-the-Loop-Simulator ist im Zusammenhang der Erfindung insbesondere ein Computersystem zu verstehen, das eingerichtet und vorgesehen ist, um mit den Dateneingängen und Datenausgängen eines eigebetteten Systems, beispielsweise eines elektronischen Steuergeräts oder einer mechatronischen Komponente, verbunden zu werden, und das weiterhin eingerichtet ist, insbesondere auch hinsichtlich der in dem Computersystem verbauten Hardware eingerichtet ist, um die reale Umgebung des eingebetteten Systems in harter Echtzeit zu simulieren. In the context of the invention, a hardware-in-the-loop simulator is to be understood as meaning, in particular, a computer system which is set up and provided for being connected to the data inputs and data outputs of an embedded system, for example an electronic control unit or a mechatronic component , and which is further adapted, in particular also with regard to the hardware installed in the computer system, in order to simulate the real environment of the embedded system in hard real-time.

Unter einem Rapid-Control-Prototyping-System ist im Zusammenhang der Erfindung insbesondere ein tragbares Computersystem zu verstehen, das eingerichtet und vorgesehen ist, in ein Netzwerk elektronischer Steuergeräte eingebunden zu werden, beispielsweise in einem Automobil, in dem Netzwerk vorübergehend die Aufgabe eines elektronischen Steuergeräts zu übernehmen und in harter Echtzeit Daten mit elektronischen Steuergeräten auszutauschen, Daten von Sensoren einzulesen und Aktoren anzusteuern. In the context of the invention, a rapid-control prototyping system is to be understood in particular as a portable computer system that is set up and intended to be integrated in a network of electronic control units, for example in an automobile, in the network temporarily as an electronic control unit and to exchange data with electronic control units in hard real-time, to read data from sensors and to control actuators.

Die Erfindung wird nachfolgend unter Bezugnahme auf die Zeichnungen näher erläutert. Hierbei werden gleichartige Teile mit identischen Bezeichnungen beschriftet. Die dargestellten Ausführungsformen sind stark schematisiert, d.h. die Abstände und die lateralen und die vertikalen Erstreckungen sind nicht maßstäblich und weisen, sofern nicht anders angegeben auch keine ableitbaren geometrischen Relationen zueinander auf. Darin zeigen The invention will be explained in more detail with reference to the drawings. Here similar parts are labeled with identical names. The illustrated embodiments are highly schematic, i. the distances and the lateral and the vertical extensions are not to scale and, unless stated otherwise, have no derivable geometrical relations to one another. Show in it

1 eine schematische Ansicht eines zur Durchführung des erfindungsgemäßen Verfahrens ausgebildeten Computersystems, 1 a schematic view of a trained for carrying out the method according to the invention computer system,

2 eine Darstellung von Verfahrensschritten zur Erstellung einer Sequenz von Prozessorbefehlen und 2 a representation of method steps for creating a sequence of processor commands and

3 eine Darstellung der Erstellung mehrerer Sequenzen durch den ersten Prozessor und deren Verteilung auf mehrere zweite Prozessoren. 3 a representation of the creation of multiple sequences by the first processor and their distribution to multiple second processors.

Die Abbildung der Figur zeigt eine schematische Darstellung eines als Hardware-in-the-Loop-Simulators, kurz HIL, ausgestalteten Computersystems HIL. Das Computersystem HIL weist einen ersten Prozessor CN und eine als steckbare I/O-Karte ausgestaltete Schnittstelleneinheit IO auf, und zwischen dem ersten Prozessor CN und der Schnittstelleneinheit IO ist eine serielle erste Datenverbindung DL1 eingerichtet. Das Computersystem HIL ist eingerichtet, um mittels des ersten Prozessors CN ein Computerprogramm zur Simulation einer Umgebung eines elektronischen Steuergerätes ECU, beispielsweise eines automotiven Steuergerätes zum Testen der Software des Steuergerätes ECU, in harter Echtzeit abzuarbeiten. The figure of the figure shows a schematic representation of a hardware-in-the-loop simulator, short HIL, designed computer system HIL. The computer system HIL has a first processor CN and an interface unit IO designed as a pluggable I / O card, and a serial first data connection DL1 is set up between the first processor CN and the interface unit IO. The computer system HIL is set up to process in hard real time by means of the first processor CN a computer program for simulating an environment of an electronic control unit ECU, for example an automotive control unit for testing the software of the control unit ECU.

Auf der Schnittstelleneinheit IO ist ein FPGA verbaut, und die Schnittstelleneinheit weist acht Datenkanäle auf, davon vier Eingangsdatenkanäle IN1, ..., IN4 und vier Ausgangsdatenkanäle OUT1, ..., OUT4. Auf dem FPGA sind als zweite Prozessoren fünf Schnittstellenprozessoren ION1, ..., ION5 hinterlegt, die als sogenannte Softcores in die logische Schaltung des FPGAs programmiert sind. An FPGA is installed on the interface unit IO, and the interface unit has eight data channels, of which four input data channels IN1,..., IN4 and four output data channels OUT1,..., OUT4. On the FPGA, five interface processors ION1, ..., ION5 are stored as second processors, which are programmed as so-called softcores into the logic circuit of the FPGA.

Der Begriff Schnittstellenprozessor wird im Folgenden synonym zu dem Begriff „zweiter Prozessor“ gemäß den Patentansprüchen verwendet. Der Begriff Schnittstellenprozessor wird ausschließlich zum Zweck der besseren Lesbarkeit der nachfolgenden Erläuterungen verwendet und beinhaltet für sich genommen keine technischen Spezifikationen, sofern diese nicht ausdrücklich angegeben sind. The term interface processor is used below synonymously with the term "second processor" according to the patent claims. The term interface processor is used solely for the purpose of facilitating the readability of the following explanations and, taken as such, does not include any technical specifications, unless expressly stated.

Die Implementierung eines Softcores in einer programmierbaren logischen Schaltung, beispielsweise eines FPGAs, ist dem Fachmann aus dem Stand der Technik bekannt. Die fünf Schnittstellenprozessoren ION1, ..., ION5 sind identisch implementiert und als Flow-Control-Prozessoren (FCPs) ausgestaltet, d.h. ihre Bauweise und ihr Befehlssatz sind für die Weiterleitung, Aufbereitung und Verarbeitung von Eingangsdaten und Ausgangsdaten optimiert. Jeder einzelne der Schnittstellenprozessoren ION1, ..., ION5 verfügt nur über einen Rechenkern und ist ausgestaltet und vorgesehen, um eine Sequenz von Prozessorbefehlen sukzessive abzuarbeiten. Insbesondere verfügen die Schnittstellenprozessoren ION1, ..., ION5 über keine Vorrichtungen zur Beschleunigung der Abarbeitung einer Befehlssequenz, wie sie viele Prozessoren aufweisen, beispielsweise Caching oder Parallelisierung durch mehrere Rechenkerne. Untersuchungen haben gezeigt, dass es möglich ist, acht derart einfach ausgestaltete FCPs als Softcores auf einem FPGA zu implementieren. The implementation of a softcore in a programmable logic circuit, such as an FPGA, is well known to those skilled in the art. The five interface processors ION1, ..., ION5 are implemented identically and configured as flow control processors (FCPs), i. Their design and instruction set are optimized for the routing, processing and processing of input data and output data. Each of the interface processors ION1, ..., ION5 has only one arithmetic core and is designed and provided to process a sequence of processor instructions successively. In particular, the interface processors ION1, ..., ION5 have no devices for speeding up the execution of a command sequence, as they have many processors, such as caching or parallelization by multiple cores. Research has shown that it is possible to implement eight FCPs that are so simple in design as softcores on an FPGA.

In einer bevorzugten Ausgestaltung sind die Schnittstellenprozessoren ION1, ..., ION5 nicht persistent auf dem FPGA hinterlegt, sondern sind als Kompilat auf einem Flash-Speicher des Computersystems HIL hinterlegt und werden in einer Konfigurationsphase des Computersystems HIL vor Beginn der Abarbeitung des Computerprogramms in die logische Schaltung des FPGAs programmiert, wobei die Schnittstellenprozessoren ION1, ..., ION5 als unprogrammierte Prozessoren hinterlegt werden, d.h. auf den Schnittstellenprozessoren ION1, ..., ION5 sind zunächst keine Prozessorbefehle hinterlegt. In a preferred embodiment, the interface processors ION1, ..., ION5 are not stored persistently on the FPGA, but are as Kompilat stored on a flash memory of the computer system HIL and are programmed in a configuration phase of the computer system HIL before the start of the processing of the computer program in the logic circuit of the FPGA, the interface processors ION1, ..., ION5 are stored as unprogrammed processors, ie The interface processors ION1, ..., ION5 initially no processor instructions are stored.

Die Schnittstelleneinheit IO ist über eine zweite Datenverbindung DL2 mit einer Peripherie PER verbunden. Die Peripherie PER beinhaltet drei periphere Komponenten: eine Echtlast THR, ein elektronisches Steuergerät ECU und eine Erweiterungsbox XB. Die zweite Datenverbindung DL2 ist als eine Vielzahl von Kabelverbindungen eingerichtet, die zwischen den peripheren Komponenten THR, ECU, XB der Peripherie PER und den Datenkanälen IN1, ..., IN4, OUT1, ..., OUT4 der Schnittstelleneinheit IO verlegt sind. Die Echtlast THR ist beispielsweise eine Drosselklappe eines Automobils. Da das Computerprogramm nicht in der Lage ist, eine Drosselklappe zu simulieren, ist die Drosselklappe als physische Komponente in die Simulation eingebunden. Der erste Prozessor CN erzeugt nach den Vorgaben des Computerprogramms ein Steuersignal für einen Aktor der Echtlast THR, und das Steuersignal wird über einen Datenausgang OUT1 der Schnittstelleneinheit IO an den Aktor übertragen. Ein Sensor der Echtlast THR wird über einen Dateneingang IN1 der Schnittstelleneinheit IO ausgelesen und das ausgelesene Sensorsignal durch den ersten Prozessor CN anhand der Vorgaben des Computerprogramms verwertet. The interface unit IO is connected to a peripheral PER via a second data link DL2. The peripheral PER includes three peripheral components: a real load THR, an electronic control unit ECU and an expansion box XB. The second data connection DL2 is set up as a plurality of cable connections laid between the peripheral components THR, ECU, XB of the peripheral PER and the data channels IN1, ..., IN4, OUT1, ..., OUT4 of the interface unit IO. The real load THR is, for example, a throttle valve of an automobile. Since the computer program is not able to simulate a throttle, the throttle is integrated as a physical component in the simulation. The first processor CN generates according to the specifications of the computer program, a control signal for an actuator of the real load THR, and the control signal is transmitted via a data output OUT1 of the interface unit IO to the actuator. A sensor of the real load THR is read out via a data input IN1 of the interface unit IO and the read-out sensor signal is utilized by the first processor CN on the basis of the specifications of the computer program.

Das elektronische Steuergerät ECU ist ein physisches Steuergerät, beispielsweise ein automotives Steuergerät, das in die Simulation eingebunden ist, um die auf dem elektronischen Steuergerät ECU hinterlegte Software auf korrekte Funktion zu überprüfen. Dazu simuliert der erste Prozessor CN in harter Echtzeit die Umgebung des elektronischen Steuergerätes, insbesondere weitere elektronische Steuergeräte, Sensoren, Aktoren und Fahrmanöver des simulierten Fahrzeugs, und tauscht dazu mit dem elektronischen Steuergerät ECU Daten aus. Das elektronische Steuergerät ist eingerichtet, um aus zwei Ausgangsdatenkanälen OUT2, OUT3 der Schnittstelleneinheit IO durch den ersten Prozessor CN erzeugte Ausgangsdaten einzulesen, und es ist eingerichtet, um in einem Eingangsdatenkanal IN4 durch das elektronische Steuergerät erzeugte Eingangsdaten zur Verwertung durch den ersten Prozessor CN zu hinterlegen, beispielsweise ein Steuersignal für eine durch den ersten Prozessor CN simulierte Komponente. The electronic control unit ECU is a physical control unit, for example an automotive control unit, which is integrated in the simulation in order to check the software stored on the electronic control unit ECU for correct functioning. To this end, the first processor CN simulates in hard real-time the surroundings of the electronic control unit, in particular further electronic control units, sensors, actuators and driving maneuvers of the simulated vehicle, and exchanges data with the electronic control unit ECU. The electronic control unit is set up to read in output data generated from two output data channels OUT2, OUT3 of the interface unit IO by the first processor CN, and is set up to store input data generated in an input data channel IN4 by the electronic control unit for utilization by the first processor CN For example, a control signal for a simulated by the first processor CN component.

Die Erweiterungsbox XB enthält weitere, dem ersten Prozessor CN bei der Abarbeitung des Computerprogramms assistierende Computerkomponenten in Form steckbarer Leiterplatten. Die Erweiterungsbox XB ist eingerichtet, um Ausgangsdaten aus einem Ausgangsdatenkanal OUT4 einzulesen und Eingangsdaten in einem Eingangsdatenkanal IN2 zu hinterlegen. The expansion box XB contains further computer components in the form of plug-in printed circuit boards that assist the first processor CN during the execution of the computer program. The extension box XB is set up to read in output data from an output data channel OUT4 and to store input data in an input data channel IN2.

Die Schnittstellenprozessoren ION1, ..., ION5 sind über einen in die logische Schaltung des FPGAs programmierten, durch einen nicht dargestellten ersten Arbiter angesteuerten ersten Multiplexer MUX1 mit der ersten Datenverbindung DL1 verbunden, und der erste Arbiter ist eingerichtet, mittels des ersten Multiplexers dem ersten Prozessor CN Zugriff auf genau einen Schnittstellenprozessor ION1, ..., ION5 zu gewähren. Die Schnittstellenprozessoren ION1, ..., ION5 sind weiterhin über einen Demultiplexer MUX2 sowie einen zweiten Multiplexer MUX3 mit den Datenkanälen IN1, ..., IN4, OUT1, ..., OUT4 verbunden, und ein nicht dargestellter zweiter Arbiter ist eingerichtet, um einem der Schnittstellenprozessoren ION1, ..., ION5 mittels Ansteuerung des Demultiplexers MUX2 und des zweiten Multiplexers MUX3 Zugriff auf einen der Datenkanäle IN1, ..., IN4, OUT1, ..., OUT4 zu gewähren. The interface processors ION1, ..., ION5 are connected to the first data connection DL1 via a first multiplexer MUX1 programmed into the logic circuit of the FPGA and driven by a first arbiter, not shown, and the first arbiter is set up to the first one by means of the first multiplexer To grant processor CN access to exactly one interface processor ION1, ..., ION5. The interface processors ION1,..., ION5 are furthermore connected to the data channels IN1,..., IN4, OUT1,..., OUT4 via a demultiplexer MUX2 and a second multiplexer MUX3, and a second arbiter (not shown) is arranged to to grant access to one of the data channels IN1, ..., IN4, OUT1, ..., OUT4 to one of the interface processors ION1,..., ION5 by driving the demultiplexer MUX2 and the second multiplexer MUX3.

In jedem der vier Eingangsdatenkanäle IN1, ..., IN4 ist ein nicht dargestellter Prozessor hinterlegt, der eingerichtet ist, um ein Eingangsdatum von einer peripheren Komponente der Peripherie PER aufzunehmen und das Eingangsdatum einem der Schnittstellenprozessoren ION1, ..., ION4 zum Auslesen zur Verfügung zu stellen. In jedem der vier Ausgangsdatenkanäle OUT1, ..., OUT4 ist ein nicht dargestellter Prozessor hinterlegt, der eingerichtet ist, um ein Ausgangsdatum von einem der Schnittstellenprozessoren ION1, ..., ION5 aufzunehmen und einer peripheren Komponente der Peripherie PER zum Auslesen zur Verfügung zu stellen. In each of the four input data channels IN1,..., IN4 there is deposited an unillustrated processor arranged to receive an input data from a peripheral component of the peripheral PER and to read the input data to one of the interface processors ION1,..., ION4 for reading out To make available. In each of the four output data channels OUT1, ..., OUT4, there is stored an unillustrated processor adapted to receive an output data from one of the interface processors ION1, ..., ION5 and to a peripheral component of the peripheral PER for reading out put.

Die Abbildung der 2 zeigt Verfahrensschritte zur Erstellung einer Sequenz von Prozessorbefehlen für einen Schnittstellenprozessor ION1 in einer bevorzugten Ausführung des erfindungsgemäßen Verfahrens. Eine erste Task TSK1 des auf dem ersten Prozessor CN hinterlegten Computerprogramms beinhaltet einen ersten I/O-Treiber IOD1, einen zweiten I/O-Treiber IOD2 und einen dritten I/O-Treiber IOD3. In einem ersten Verfahrensschritt S1 erstellt jeder I/O-Treiber IOD1, IOD2, IOD3 der ersten Task TSK1 eine Subsequenz zur Abarbeitung durch den Schnittstellenprozessor ION1. Der erste I/O-Treiber IOD1 erstellt eine erste Subsequenz SUB1, der zweite I/O-Treiber IOD2 erstellt eine zweite Subsequenz SUB2, und der dritte I/O-Treiber IOD3 erstellt eine dritte Subsequenz SUB3. The picture of the 2 shows method steps for creating a sequence of processor instructions for an interface processor ION1 in a preferred embodiment of the method according to the invention. A first task TSK1 of the computer program stored on the first processor CN includes a first I / O driver IOD1, a second I / O driver IOD2 and a third I / O driver IOD3. In a first method step S1, each I / O driver IOD1, IOD2, IOD3 of the first task TSK1 generates a subsequence for execution by the interface processor ION1. The first I / O driver IOD1 creates a first subsequence SUB1, the second I / O driver IOD2 creates a second subsequence SUB2, and the third I / O driver IOD3 creates a third subsequence SUB3.

Die erste Subsequenz SUB1, die zweite Subsequenz SUB2 und die dritte Subsequenz SUB3 stellen jeweils eine Routine zur Weiterleitung von in einem Eingangsdatenkanal hinterlegten Eingangsdaten zur Hinterlegung an einer durch den ersten Prozessor CN auslesbaren Speicheradresse oder zur Weiterleitung von durch den ersten Prozessor CN erzeugten Ausgangsdaten zur Hinterlegung in einem Ausgangsdatenkanal dar. Die Subsequenzen SUB1, SUB2, SUB3 enthalten keine Funktionsaufrufe. The first subsequence SUB1, the second subsequence SUB2 and the third subsequence SUB3 each provide a routine for forwarding data stored in an input data channel Input data for storage at a memory address which can be read out by the first processor CN or for transmission of output data generated by the first processor CN for storage in an output data channel. The subsequences SUB1, SUB2, SUB3 contain no function calls.

Die erste Subsequenz SUB1, die zweite Subsequenz SUB2 und die dritte Subsequenz SUB3 liegen nach Durchführung des ersten Verfahrensschritts in Form einer Abfolge von in einer Hochsprache formulierten Programmbefehlen vor, beispielsweise einer Abfolge von C++-Befehlen. Jede Subsequenz SUB1, SUB2, SUB3 enthält mindestens einen Programmbefehl zur Weiterleitung eines Eingangsdatums oder eines Ausgangsdatums, beispielsweise einen Befehl aus der Familie der memcpy-Befehle, wie sie in der Sprache C++ definiert sind. Ein Beispiel ist der Befehl memcpy32, dessen Syntax in der einfachsten Form wie folgt ist:
memcpy32(add2, add1, n);
After performing the first method step, the first subsequence SUB1, the second subsequence SUB2 and the third subsequence SUB3 are in the form of a sequence of program instructions formulated in a high-level language, for example a sequence of C ++ commands. Each subsequence SUB1, SUB2, SUB3 contains at least one program instruction for forwarding an input datum or an output datum, for example a command from the family of memcpy commands, as defined in the C ++ language. An example is the command memcpy32, whose syntax in the simplest form is as follows:
memcpy32 (add2, add1, n);

Der Befehl liest, beginnend an der Speicheradresse add1, eine Anzahl von n Daten der Wortlänge 32 Bit ein und schreibt die Daten an die Speicheradresse add2. Wenn der Befehl zur Weiterleitung eines Eingangsdatums vorgesehen ist, dann ist add1 eine Speicheradresse in einem Eingangsdatenkanal, also eine Speicheradresse, die durch den in einem Eingangsdatenkanal hinterlegten Prozessor beschreibbar und auslesbar ist, und add2 ist eine durch den ersten Prozessor CN auslesbare Speicheradresse. Wenn der Befehl zur Weiterleitung eines Ausgangsdatums vorgesehen ist, dann ist add1 eine durch den ersten Prozessor CN beschreibbare Speicheradresse, und add2 ist eine Speicheradresse in einem Ausgangsdatenkanal, also eine Speicheradresse, die durch den in einem Ausgangsdatenkanal hinterlegten Prozessor beschreibbar und auslesbar ist. Jeder I/O-Treiber IOD1, ..., IOD3 erstellt die memcpy32-Befehle mit relativen Speicheradressen als Werte für add1 und add2 in Relation zu einer innerhalb des jeweiligen I/O-Treibers IOD1, ..., IOD3 als null definierten Speicheradresse. The instruction reads, starting at the memory address add1, a number of n data of the word length 32 bits and writes the data to the memory address add2. If the command is for forwarding an input data, then add1 is a memory address in an input data channel, that is, a memory address writable and readable by the processor stored in an input data channel, and add2 is a memory address readable by the first processor CN. If the command is for forwarding an output data, then add1 is a memory address writable by the first processor CN, and add2 is a memory address in an output data channel, that is, a memory address writable and readable by the processor stored in an output data channel. Each I / O driver IOD1, ..., IOD3 creates the memcpy32 relative memory address instructions as values for add1 and add2 in relation to a memory address defined as zero within the respective I / O driver IOD1, ..., IOD3 ,

Jede Subsequenz SUB1, SUB2, SUB3 wird anhand der Anforderungen der Task TSK1, in die der jeweilige I/O-Treiber eingebunden ist, sowie anhand von durch einen Anwender definierten Konfigurationsdaten automatisch erstellt und ist jeweils an die individuellen Anforderungen der Task TSK1 angepasst. In einer beispielhaften Anwendung ist der erste I/O-Treiber IOD1 vorgesehen, um an einem Eingangsdatenkanal IN1 ein Steuersignal für eine Pulsweitenmodulation eines Aktorsignals auszulesen, und ein Anwender kann mittels einer Konfigurationssoftware festlegen, ob nur der Tastgrad des Aktorsignals moduliert werden soll oder ob der Tastgrad und die Frequenz des Aktorsignals moduliert werden sollen. Im ersten Fall schreibt der erste I/O-Treiber IOD1 nur einen memcpy32-Befehl zur Weiterleitung eines Sollwerts für den Tastgrad in die erste Subsequenz SUB1. Im zweiten Fall schreibt der erste I/O-Treiber IOD1 zwei memcpy32-Befehle in die erste Subsequenz SUB1, einen zur Weiterleitung eines Sollwerts für den Tastgrad und einen zur Weiterleitung eines Sollwerts für die Frequenz. Der erste I/O-Treiber IOD1 kann eine Subsequenz SUB1 derart erstellen, dass sie ausschließlich einen oder mehrere memcpy32-Befehle enthält. Der erste I/O-Treiber IOD1 kann optional neben einer Anzahl von memcpy32-Befehlen auch weitere Programmbefehle zur Aufbereitung oder Verarbeitung der Eingangsdaten in die erste Subsequenz SUB1 schreiben. Each subsequence SUB1, SUB2, SUB3 is automatically created based on the requirements of the task TSK1, in which the respective I / O driver is integrated, as well as on the basis of user-defined configuration data and is adapted to the individual requirements of the task TSK1. In an exemplary application, the first I / O driver IOD1 is provided to read out on a input data channel IN1 a control signal for pulse width modulation of an actuator signal, and a user can set by means of a configuration software, whether only the duty cycle of the actuator signal is to be modulated or the Duty cycle and the frequency of the actuator signal to be modulated. In the first case, the first I / O driver IOD1 only writes a memcpy32 command for forwarding a duty setpoint to the first subsequence SUB1. In the second case, the first I / O driver IOD1 writes two memcpy32 instructions into the first subsequence SUB1, one for passing a reference for the duty cycle and one for forwarding a reference for the frequency. The first I / O driver IOD1 may create a subsequence SUB1 such that it contains only one or more memcpy32 instructions. The first I / O driver IOD1 can optionally also write, in addition to a number of memcpy32 instructions, further program instructions for processing or processing the input data into the first subsequence SUB1.

Analog besteht jede Subsequenz SUB1, ..., SUB3 zumindest aus einer Anzahl von memcpy32-Befehlen, kann aber optional weitere Programmbefehle zur Aufbereitung oder Verarbeitung von Eingangsdaten oder Ausgangsdaten aufweisen, beispielsweise Programmbefehle, um Eingangsdaten oder Ausgangsdaten zu skalieren oder mit einem Gleichanteil zu versehen. Similarly, each subsequence SUB1, ..., SUB3 consists of at least a number of memcpy32 instructions, but may optionally include other program instructions for conditioning or processing input data or output data, such as program instructions to scale or equalize input data or output data ,

In einem zweiten Verfahrensschritt S2 werden die Subsequenzen SUB1, SUB2, SUB3 zu einer Sequenz SEQ1 zusammengefügt. Dazu erstellt eine Softwareinstanz zunächst ein Softwareobjekt SEQO. Das Softwareobjekt SEQO enthält ein Kopfdatenfeld H mit Informationen über den ersten I/O-Treiber IOD1, den zweiten I/O-Treiber IOD2 und den dritten I/O-Treiber IOD3, und das Softwareobjekt SEQO ist eingerichtet, um eine Anzahl von in einer Hochsprache formulierten Subsequenzen SUB1, ..., SUB3 aufzunehmen und zu speichern. Die I/O-Treiber der ersten Task TSK1 schreiben dann nacheinander ihre jeweiligen Subsequenzen SUB1, ..., SUB3 in das Softwareobjekt SEQO, d.h. zuerst schreibt der erste I/O-Treiber IOD1 die erste Subsequenz SUB1 in das Softwareobjekt SEQO, danach schreibt der zweite I/O-Treiber IOD2 die zweite Subsequenz SUB2 in das Softwareobjekt SEQO hinter die erste Subsequenz SUB1, danach schreibt der dritte I/O-Treiber IOD3 die dritte Subsequenz SUB3 in das Softwareobjekt SEQO hinter die zweite Subsequenz SUB2. Das Softwareobjekt SEQO beinhaltet jetzt das Kopfdatenfeld H und eine erste Sequenz SEQ1, zusammengefügt aus der ersten Subsequenz SUB1, der zweiten Subsequenz SUB2 und der dritten Subsequenz SUB3. In a second method step S2, the subsequences SUB1, SUB2, SUB3 are combined to form a sequence SEQ1. To do this, a software instance first creates a software object SEQO. The software object SEQO contains a header field H with information about the first I / O driver IOD1, the second I / O driver IOD2 and the third I / O driver IOD3, and the software object SEQO is arranged to store a number in one High-level language formulated sub-sequences SUB1, ..., SUB3 record and save. The I / O drivers of the first task TSK1 then successively write their respective subsequences SUB1, ..., SUB3 into the software object SEQ0, i. First, the first I / O driver IOD1 writes the first subsequence SUB1 into the software object SEQO, then the second I / O driver IOD2 writes the second subsequence SUB2 into the software object SEQO after the first subsequence SUB1, then writes the third I / O Driver IOD3, the third sub-sequence SUB3 in the software object SEQO after the second sub-sequence SUB2. The software object SEQO now includes the header field H and a first sequence SEQ1, composed of the first subsequence SUB1, the second subsequence SUB2 and the third subsequence SUB3.

In einem dritten Verfahrensschritt S3 wird die Sequenz SEQ1 aufbereitet, um auf einen Schnittstellenprozessor ION1 geladen zu werden. In einer ersten Optimierung werden die relativen Speicheradressen in den memcpy32-Befehlen durch absolute Speicheradressen ersetzt, wobei die dazu nötigen Informationen dem Kopfdatenfeld H entnommen werden, und die erste Sequenz SEQ1 wird um einen Befehl zur Ausführung eines Strobes ergänzt. Nach Abschluss der ersten Optimierung wird die erste Sequenz SEQ1 in eine durch einen Schnittstellenprozessor ION1 lesbare und ausführbare Sequenz von Prozessorbefehlen übersetzt. In einer zweiten Optimierung werden redundante Prozessorbefehle aus der ersten Sequenz SEQ1 entfernt. In a third method step S3, the sequence SEQ1 is processed in order to be loaded onto an interface processor ION1. In a first optimization, the relative memory addresses in the memcpy32 instructions are replaced by absolute memory addresses, with the information necessary for this being taken from header field H, and the first sequence SEQ1 is supplemented with a command to execute a strobe. After completion of the first optimization will be the first Sequence SEQ1 translated into an executable by an interface processor ION1 executable sequence of processor commands. In a second optimization, redundant processor instructions are removed from the first sequence SEQ1.

Nach Abschluss des dritten Verfahrensschrittes S3 liegt die erste Sequenz SEQ1 als eine Abfolge von zwölf Prozessorbefehlen COM1, ..., COM12 vor, wobei die erste Subsequenz SUB1, die zweite Subsequenz SUB2 und die dritte Subsequenz SUB3 jeweils als zusammenhängende Abfolge von Prozessorbefehlen enthalten sind. Drei aufeinander folgende Prozessorbefehle COM1, ..., COM3 bilden die Funktionalität der ersten Subsequenz SUB1 ab, vier aufeinander folgende Prozessorbefehle COM4, ..., COM7 die Funktionalität der zweiten Subsequenz SUB2 und vier weitere aufeinander folgende Prozessorbefehle COM8, ..., COM11 die Funktionalität der dritten Subsequenz SUB3. Ein die erste Sequenz SEQ1 abschließender Strobe-Befehl COM12 bewirkt die synchrone Ausgabe der Daten der ersten Subsequenz SUB1, der zweiten Subsequenz SUB2 und der dritten Subsequenz SUB3. Die sukzessive Abarbeitung der ersten Sequenz SEQ1 durch einen zweiten Prozessor ION1 entspricht also einer sukzessiven Ausführung der ersten Subsequenz SUB1, der zweiten Subsequenz SUB2 und der dritten Subsequenz SUB3. Die erste Sequenz SEQ1 beinhaltet keine Funktionsaufrufe und keine Sprunganweisungen. After completion of the third method step S3, the first sequence SEQ1 is present as a sequence of twelve processor instructions COM1,..., COM12, wherein the first subsequence SUB1, the second subsequence SUB2 and the third subsequence SUB3 are each contained as a contiguous sequence of processor instructions. Three consecutive processor instructions COM1, ..., COM3 map the functionality of the first subsequence SUB1, four successive processor instructions COM4, ..., COM7 the functionality of the second subsequence SUB2 and four further successive processor instructions COM8, ..., COM11 the functionality of the third subsequence SUB3. A strobe command COM12 terminating the first sequence SEQ1 effects the synchronous output of the data of the first subsequence SUB1, the second subsequence SUB2 and the third subsequence SUB3. The successive execution of the first sequence SEQ1 by a second processor ION1 thus corresponds to a successive execution of the first subsequence SUB1, the second subsequence SUB2 and the third subsequence SUB3. The first sequence SEQ1 contains no function calls and no jump instructions.

In einem vierten Verfahrensschritt S4 wird die optimierte Sequenz SEQ1 auf einen der Task TSK1 zugeordneten Schnittstellenprozessor ION1 geladen. In a fourth method step S4, the optimized sequence SEQ1 is loaded onto an interface processor ION1 assigned to the task TSK1.

Die Abbildung der 3 zeigt die erfindungsgemäße Erstellung mehrerer Sequenzen SEQ1, ..., SEQ5 und die Verteilung der Sequenzen SEQ1, ..., SEQ5 auf mehrere Schnittstellenprozessoren ION1, ..., ION5. Die Erstellung jeder Sequenz SEQ1, ..., SEQ5 erfolgt auf gleiche Weise wie die Erstellung der ersten Sequenz SEQ1, wie in der Beschreibung der 2 beschrieben. In dem dargestellten Ausführungsbeispiel beinhaltet das auf dem ersten Prozessor CN hinterlegte Computerprogramm eine erste Task TSK1 mit einem ersten I/O-Treiber IOD1, einem zweiten I/O-Treiber IOD2 und einem dritten I/O-Treiber IOD3, eine zweite Task TSK2 mit einem vierten I/O-Treiber IOD4 und einem fünften I/O-Treiber IOD5, und eine dritte Task TSK3 mit einem sechsten I/O-Treiber IOD6, einem siebten I/O-Treiber IOD7 und einem achten I/O-Treiber IOD8. Der ersten Task TSK1, der zweiten Task TSK2 und der dritten Task TSK3 ist jeweils eine durch einen Parameter PRIO definierte Priorität zugewiesen, wobei der Wert von PRIO eine natürliche Zahl ist und der Wert PRIO = 1 eine Task mit geringstmöglicher Priorität kennzeichnet. Eine Softwareinstanz weist während der Konfigurationsphase jeder Task TSK1, TSK2, TSK3, die mindestens einen I/O-Treiber IOD1, ..., IOD8 aufweist, mindestens einen Schnittstellenprozessor ION1, ..., ION5 zu. Die Anzahl der auf der Schnittstelleneinheit IO hinterlegten Schnittstellenprozessoren ION1, ..., ION5 ist demnach eine obere Grenze für die Anzahl an Tasks TSK1, ..., TSK3 auf dem ersten Prozessor CN, die einrichtbar sind, um mit der Peripherie PER Daten auszutauschen, also Ausgangsdaten in einem Ausgangsdatenkanal OUT1, ..., OUT4 zu hinterlegen oder Eingangsdaten aus einem Eingangsdatenkanal IN1, ..., IN4 einzulesen. Die Softwareinstanz ist eigerichtet, hoch priorisierte Tasks bei der Zuweisung von Schnittstellenprozessoren ION1, ..., ION5 zu bevorzugen, also noch nicht zugeordnete Schnittstellenprozessoren ION1, ..., ION5 bevorzugt einer Task mit hoher Priorität zuzuweisen. Nach Abschluss der Konfigurationsphase ist jeder Schnittstellenprozessor ION1, ..., ION5 eindeutig einer Task TSK1, ..., TSK3 zugewiesen. The picture of the 3 shows the creation according to the invention of several sequences SEQ1, ..., SEQ5 and the distribution of the sequences SEQ1, ..., SEQ5 on several interface processors ION1, ..., ION5. The creation of each sequence SEQ1, ..., SEQ5 is carried out in the same way as the creation of the first sequence SEQ1, as in the description of FIG 2 described. In the illustrated embodiment, the computer program stored on the first processor CN includes a first task TSK1 with a first I / O driver IOD1, a second I / O driver IOD2 and a third I / O driver IOD3, a second task TSK2 with a fourth I / O driver IOD4 and a fifth I / O driver IOD5, and a third task TSK3 with a sixth I / O driver IOD6, a seventh I / O driver IOD7, and an eighth I / O driver IOD8 , The first task TSK1, the second task TSK2 and the third task TSK3 are each assigned a priority defined by a parameter PRIO, the value of PRIO being a natural number and the value PRIO = 1 indicating a task with the lowest possible priority. A software instance assigns at least one interface processor ION1, ..., ION5 during the configuration phase of each task TSK1, TSK2, TSK3, which has at least one I / O driver IOD1,..., IOD8. The number of interface processors ION1,..., ION5 stored on the interface unit IO is accordingly an upper limit for the number of tasks TSK1,..., TSK3 on the first processor CN which can be set up to exchange data with the peripheral PER , ie to store output data in an output data channel OUT1, ..., OUT4 or to read input data from an input data channel IN1, ..., IN4. The software instance is adapted to prefer highly prioritized tasks in the allocation of interface processors ION1,..., ION5, ie to allocate interface processors ION1,..., ION5 not yet assigned to a task with high priority. Upon completion of the configuration phase, each interface processor ION1, ..., ION5 is uniquely assigned to a task TSK1, ..., TSK3.

Der ersten Task TSK1 und der zweiten Task TSK2 ist jeweils die niedrigste Priorität zugeordnet (PRIO = 1), und beiden ist deshalb nur ein Schnittstellenprozessor ION1, ..., ION5 zugewiesen. Ein erster Schnittstellenprozessor ION1 ist der ersten Task TSK1 zugewiesen. Die I/O-Treiber der ersten Task TSK1, also der erste I/O-Treiber IOD1, der zweite I/O-Treiber IOD2 und der dritte I/O-Treiber IOD3, erstellen gemeinsam eine erste Sequenz SEQ1, d.h. die erste Sequenz SEQ1 enthält die von dem ersten I/O-Treiber IOD1, dem zweiten I/O-Treiber IOD2 und dem dritten I/O-Treiber IOD3 erstellten Subsequenzen. Ein zweiter Schnittstellenprozessor ION2 ist der zweiten Task TSK2 zugewiesen. Die I/O-Treiber der zweiten Task TSK2, also der vierte I/O-Treiber IOD4 und der fünfte I/O-Treiber IOD5, erstellen gemeinsam eine zweite Sequenz SEQ2, d.h. die zweite Sequenz SEQ2 enthält die von dem vierten I/O-Treiber IOD4 und dem fünften I/O-Treiber IOD5 erstellten Subsequenzen. The first task TSK1 and the second task TSK2 are each assigned the lowest priority (PRIO = 1), and therefore only one interface processor ION1,..., ION5 is assigned to both. A first interface processor ION1 is assigned to the first task TSK1. The I / O drivers of the first task TSK1, that is, the first I / O driver IOD1, the second I / O driver IOD2, and the third I / O driver IOD3, jointly create a first sequence SEQ1, i. the first sequence SEQ1 contains the subsequences created by the first I / O driver IOD1, the second I / O driver IOD2 and the third I / O driver IOD3. A second interface processor ION2 is assigned to the second task TSK2. The I / O drivers of the second task TSK2, that is, the fourth I / O driver IOD4 and the fifth I / O driver IOD5, jointly create a second sequence SEQ2, i. the second sequence SEQ2 contains the subsequences created by the fourth I / O driver IOD4 and the fifth I / O driver IOD5.

Die dritte Task TSK3 ist höher priorisiert als die erste Task TSK1 und die zweite Task TSK2, beispielsweise weil die schnelle Verarbeitung der von der dritten Task TSK3 eingelesenen Eingangsdaten von besonderer Wichtigkeit ist oder weil die dritte Task TSK3 große Mengen von Eingangsdaten verarbeitet und deshalb viele Rechenresourcen benötigt, um die von der dritten Task TSK3 eingelesenen Eingangsdaten in harter Echtzeit zu verarbeiten. Die der dritten Task zugewiesene Priorität ist PRIO = 5. Der dritten Task TSK3 sind deshalb drei Schnittstellenprozessoren ION3, ION4, ION5 zugewiesen, sodass den I/O-Treibern der dritten Task TSK3, also dem sechsten I/O-Treiber IOD6, dem siebten I/O-Treiber IOD7 und dem achten I/O-Treiber IOD8, jeweils ein eigener Schnittstellenprozessor ION1, ..., ION5 zur Hinterlegung einer Sequenz SEQ3, ..., SEQ5 zur Verfügung steht, und für jeden I/O-Treiber der dritten Task TSK3 wird eine eigene Sequenz SEQ3, ..., SEQ5 erstellt. Der sechste I/O-Treiber IOD6 erstellt eine Subsequenz und schreibt die Subsequenz in eine dritte Sequenz SEQ3. Der siebte I/O-Treiber erstellt eine Subsequenz und schreibt die Subsequenz in eine vierte Sequenz SEQ4. Der achte I/O-Treiber erstellt eine Subsequenz und schreibt die Subsequenz in eine fünfte Sequenz SEQ5. Die dritte Sequenz SEQ3, die vierte Sequenz SEQ4 und die fünfte Sequenz SEQ5 enthalten jeweils nur eine einzige Subsequenz. The third task TSK3 is prioritized higher than the first task TSK1 and the second task TSK2, for example because the fast processing of the input data read in by the third task TSK3 is of particular importance or because the third task TSK3 processes large amounts of input data and therefore many computation resources required to process the input data read in by the third task TSK3 in hard real time. The priority assigned to the third task is PRIO = 5. The third task TSK3 is therefore assigned three interface processors ION3, ION4, ION5, so that the I / O drivers of the third task TSK3, ie the sixth I / O driver IOD6, the seventh I / O driver IOD7 and the eighth I / O driver IOD8, each have their own interface processor ION1, ..., ION5 for depositing a sequence SEQ3, ..., SEQ5 is available, and for each I / O driver the third task TSK3 a separate sequence SEQ3, ..., SEQ5 is created. The sixth I / O driver IOD6 created a subsequence and writes the subsequence into a third sequence SEQ3. The seventh I / O driver creates a subsequence and writes the subsequence into a fourth sequence SEQ4. The eighth I / O driver creates a subsequence and writes the subsequence into a fifth sequence SEQ5. The third sequence SEQ3, the fourth sequence SEQ4 and the fifth sequence SEQ5 each contain only a single subsequence.

Die erstellten Sequenzen SEQ1, ..., SEQ5 werden, wie in der Beschreibung der 2 beschrieben, in eine für einen Schnittstellenprozessor ION1, ..., ION5 lesbare und ausführbare Sequenz von Prozessorbefehlen umgewandelt und optimiert, und die umgewandelten und optimierten Sequenzen SEQ1, ..., SEQ5 werden auf die Schnittstellenprozessoren ION1, ..., ION5 geladen. Der erste Schnittstellenprozessor ION1 ist der ersten Task TSK1 zugewiesen, die erste Sequenz SEQ1 wird deshalb auf den ersten Schnittstellenprozessor ION1 geladen. Der zweite Schnittstellenprozessor ION2 ist der zweiten Task TSK2 zugewiesen, die zweite Sequenz SEQ2 wird deshalb auf den zweiten Schnittstellenprozessor ION2 geladen. Der dritte Schnittstellenprozessor ION3, der vierte Schnittstellenprozessor ION4 und der fünfte Schnittstellenprozessor ION5 sind jeweils der dritten Task TSK3 zugewiesen. Die dritte Sequenz SEQ3 wird auf den dritten Schnittstellenprozessor ION3, die vierte Sequenz SEQ4 auf den vierten Schnittstellenprozessor ION4 und die fünfte Sequenz SEQ5 auf den fünften Schnittstellenprozessor ION5 geladen. The generated sequences SEQ1, ..., SEQ5 are, as in the description of 2 are converted and optimized into an executable sequence of processor instructions readable and executable for an interface processor ION1, ..., ION5, and the converted and optimized sequences SEQ1, ..., SEQ5 are loaded onto the interface processors ION1, ..., ION5. The first interface processor ION1 is assigned to the first task TSK1, the first sequence SEQ1 is therefore loaded onto the first interface processor ION1. The second interface processor ION2 is assigned to the second task TSK2, the second sequence SEQ2 is therefore loaded onto the second interface processor ION2. The third interface processor ION3, the fourth interface processor ION4 and the fifth interface processor ION5 are each assigned to the third task TSK3. The third sequence SEQ3 is loaded on the third interface processor ION3, the fourth sequence SEQ4 on the fourth interface processor ION4 and the fifth sequence SEQ5 on the fifth interface processor ION5.

Nach Abschluss der Konfigurationsphase wird die Abarbeitung des Computerprogramms durch den ersten Prozessor CN und die Abarbeitung der Sequenzen SEQ1, ..., SEQ5 durch die Schnittstellenprozessoren ION1, ..., ION5 gestartet. Die Sequenzen SEQ1, ..., SEQ5 enthalten Prozessorbefehle, um Eingangsdaten aus einem Eingangsdatenkanal IN1, ..., IN4 auszulesen, zu verarbeiten und ein Ergebnis der Verarbeitung der Eingangsdaten an eine von dem ersten Prozessor CN auslesbare Speicheradresse zu schreiben, und eine Task TSK1, ..., TSK3 liest den an der Speicheradresse hinterlegten Wert aus und weist einer Variablen des Computerprogramms anhand des an der Speicheradresse hinterlegten Wertes einen Wert zu. Die Sequenzen SEQ1, ..., SEQ5 enthalten weiterhin Prozessorbefehle, um Werte von einer durch den ersten Prozessor CN beschreibbaren Speicheradresse auszulesen, die ausgelesenen Wert zu verarbeiten und die Ergebnisse der Verarbeitung als Ausgangsdaten in einem Ausgangsdatenkanal OUT1, ..., OUT4 zu hinterlegen. Jede Sequenz SEQ1, ..., SEQ5 ist individuell und an die Erfordernisse der jeweiligen Task TSK1, ..., TSK3 angepasst, und jeder Schnittstellenprozessor ION1, ..., ION5 arbeitet die auf ihm hinterlegte Sequenz SEQ1, ..., SEQ5 sukzessive ab. Durch die parallele Abarbeitung der Sequenzen SEQ1, ..., SEQ5 auf mehreren Schnittstellenprozessoren ION1, ..., ION5 ist es zudem ausgeschlossen, dass die Abarbeitung einer Sequenz SEQ1, ..., SEQ5 zugunsten der Abarbeitung einer anderen Sequenz SEQ1, ..., SEQ5 einer höher priorisierten Task TSK1, ..., TSK3 unterbrochen wird. Auf diese Weise ist eine schnelle, d.h. zeitoptimierte, und jitterarme Abarbeitung der Sequenzen SEQ1, ..., SEQ5 sichergestellt. After completion of the configuration phase, the processing of the computer program by the first processor CN and the processing of the sequences SEQ1, ..., SEQ5 by the interface processors ION1, ..., ION5 is started. The sequences SEQ1, ..., SEQ5 contain processor instructions to read input data from an input data channel IN1, ..., IN4, process and write a result of the processing of the input data to a memory address readable by the first processor CN, and a task TSK1, ..., TSK3 reads out the value stored at the memory address and assigns a value to a variable of the computer program based on the value stored at the memory address. The sequences SEQ1, ..., SEQ5 further contain processor instructions to read values from a memory address writable by the first processor CN, to process the read-out value and to store the results of the processing as output data in an output data channel OUT1, ..., OUT4 , Each sequence SEQ1, ..., SEQ5 is adapted individually and to the requirements of the respective task TSK1, ..., TSK3, and each interface processor ION1, ..., ION5 operates on the sequence SEQ1, ..., SEQ5 stored on it successively from. Due to the parallel processing of the sequences SEQ1, ..., SEQ5 on several interface processors ION1, ..., ION5, it is also excluded that the processing of a sequence SEQ1, ..., SEQ5 in favor of the processing of another sequence SEQ1, .. ., SEQ5 a higher priority task TSK1, ..., TSK3 is interrupted. In this way, a fast, i. Time-optimized, and low-jitter processing of the sequences SEQ1, ..., SEQ5 ensured.

ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturCited patent literature

  • US 6189052 B2 [0003] US 6189052 B2 [0003]

Claims (16)

Verfahren zum Konfigurieren einer Schnittstelleneinheit (IO) eines Computersystems (HIL), wobei das Computersystem (HIL) einen ersten Prozessor (CN) und eine erste Datenverbindung (DL1) zwischen dem ersten Prozessor (CN) und der Schnittstelleneinheit (IO) aufweist und auf der Schnittstelleneinheit (IO) ein zweiter Prozessor (ION1, ..., ION5) hinterlegt ist oder hinterlegt wird, wobei die Schnittstelleneinheit (IO) mindestens zwei Datenkanäle (IN1, ..., IN4, OUT1, ..., OUT4) aufweist, wobei ein erster Eingangsdatenkanal (IN1, ..., IN4) als Datenkanal zum Hinterlegen von Eingangsdaten ausgestaltet ist und ein erster Ausgangsdatenkanal (OUT1, ..., OUT4) als Datenkanal zum Hinterlegen von Ausgangsdaten ausgestaltet ist, wobei eine Peripherie (PER) des Computersystems (HIL) derart eingerichtet wird, dass die Peripherie (PER) eine Anzahl peripherer Geräte (THR, ECU, XB) umfasst und die Peripherie (PER) ausgestaltet ist, um mittels einer zweiten Datenverbindung (DL2) Eingangsdaten in dem ersten Eingangsdatenkanal (IN1, ..., IN4) zu hinterlegen oder Ausgangsdaten aus dem ersten Ausgangsdatenkanal (OUT1, ..., OUT4) auszulesen, wobei die Schnittstelleneinheit (IO) ausgestaltet ist, um eine Datenverbindung zum Auslesen der in dem ersten Eingangsdatenkanal (IN1, ..., IN4) hinterlegten Eingangsdaten durch den zweiten Prozessor (ION1, ..., ION5) bereitzustellen und um eine Datenverbindung zum Hinterlegen von Ausgangsdaten in dem ersten Ausgangsdatenkanal (OUT1, ..., OUT4) durch den zweiten Prozessor (ION1, ..., ION5) bereitzustellen, wobei auf dem Computersystem (HIL) ein Computerprogramm hinterlegt wird und der erste Prozessor (CN) programmiert wird, um das Computerprogramm abzuarbeiten und während der Abarbeitung des Computerprogramms einer Variablen des Computerprogramms einen Wert zuzuweisen, der durch die im ersten Eingangsdatenkanal (IN1, ..., IN4) hinterlegten Eingangsdaten definiert ist, wobei eine Sequenz (SEQ1, ..., SEQ5) von Prozessorbefehlen erstellt und auf den zweiten Prozessor (ION1, ..., ION5) geladen wird, nach dem Laden der Sequenz (SEQ1, ..., SEQ5) auf den zweiten Prozessor (ION1, ..., ION5) die Abarbeitung des Computerprogramms durch den ersten Prozessor (CN) und die Abarbeitung der Sequenz (SEQ1, ..., SEQ5) durch den zweiten Prozessor (ION1, ..., ION5) gestartet wird und während der Abarbeitung der Sequenz (SEQ1, ..., SEQ5) der durch die im ersten Eingangsdatenkanal (IN1, ..., IN4) hinterlegten Daten definierte Wert an eine erste Speicheradresse geschrieben wird, dadurch gekennzeichnet, dass eine Anzahl von Subsequenzen (SUB1, ..., SUB3) von Prozessorbefehlen erstellt wird, wobei eine erste Subsequenz (SUB1, ... SUB5) eine Routine zum Einlesen und Verarbeiten zumindest der in dem ersten Eingangsdatenkanal (IN1, ..., IN4) hinterlegten Daten darstellt und eine zweite Subsequenz (SUB1, ..., SUB5) eine Routine zum Einlesen und Verarbeiten zumindest der in einem zweiten Eingangsdatenkanal (IN1, ..., IN4) hinterlegten Daten darstellt oder eine Routine zur Verarbeitung von durch den ersten Prozessor erzeugten Daten und zur Hinterlegung der verarbeiteten Daten in dem ersten Ausgangsdatenkanal (OUT1, ..., OUT4) darstellt, und durch Zusammenfügen der Subsequenzen (SUB1, ..., SUB5) die Sequenz (SEQ1, ..., SEQ5s) erstellt wird. Method for configuring an interface unit (IO) of a computer system (HIL), wherein the computer system (HIL) has a first processor (CN) and a first data connection (DL1) between the first processor (CN) and the interface unit (IO) and on the Interface unit (IO) a second processor (ION1, ..., ION5) is deposited or deposited, wherein the interface unit (IO) at least two data channels (IN1, ..., IN4, OUT1, ..., OUT4), wherein a first input data channel (IN1, ..., IN4) is configured as a data channel for storing input data, and a first output data channel (OUT1, ..., OUT4) is configured as a data channel for storing output data, wherein a periphery (PER) of the Computer system (HIL) is set up such that the periphery (PER) comprises a number of peripheral devices (THR, ECU, XB) and the periphery (PER) is designed to receive data by means of a second data link (DL2) input data channel (IN1,..., IN4) or to read out output data from the first output data channel (OUT1,..., OUT4), wherein the interface unit (IO) is designed to provide a data connection for reading out data in the first input data channel (IN1,..., OUT4). IN1, ..., IN4) provided by the second processor (ION1, ..., ION5) and a data connection for storing output data in the first output data channel (OUT1, ..., OUT4) by the second processor ( ION1, ..., ION5), wherein a computer program is stored on the computer system (HIL) and the first processor (CN) is programmed to execute the computer program and assign a value to a variable of the computer program during the execution of the computer program is defined by the input data stored in the first input data channel (IN1, ..., IN4), wherein a sequence (SEQ1, ..., SEQ5) is created by processor instructions and stored on the zw After loading the sequence (SEQ1, ..., SEQ5) onto the second processor (ION1,..., ION5), the processing of the computer program by the first processor (FIG. CN) and the processing of the sequence (SEQ1, ..., SEQ5) by the second processor (ION1, ..., ION5) is started and during the execution of the sequence (SEQ1, ..., SEQ5) by the in the first input data channel (IN1, ..., IN4) data written to a first memory address is written, characterized in that a number of sub-sequences (SUB1, ..., SUB3) of processor commands is created, wherein a first sub-sequence (SUB1 , ... SUB5) represents a routine for reading in and processing at least the data stored in the first input data channel (IN1, ..., IN4) and a second subsequence (SUB1, ..., IN5) representing a routine for reading in and processing at least the data stored in a second input data channel (IN1, ..., IN4) or ei 3 is a routine for processing data generated by the first processor and storing the processed data in the first output data channel (OUT1, ..., OUT4), and by assembling the subsequences (SUB1, ..., SUB5), the sequence (SEQ , ..., SEQ5s) is created. Verfahren nach Anspruch 1, wobei das Computerprogramm mindestens einen ersten I/O-Treiber (IOD1, ..., IOD8) und einen zweiten I/O-Treiber (IOD1, ..., IOD8) beinhaltet, wobei der erste I/O-Treiber (IOD1, ..., IOD8) die erste Subsequenz (SUB1, ..., SUB3) erstellt und der zweite I/O-Treiber (IOD1, ..., IOD8) die zweite Subsequenz (SUB1, ..., SUB3) erstellt.  The method of claim 1, wherein the computer program includes at least a first I / O driver (IOD1, ..., IOD8) and a second I / O driver (IOD1, ..., IOD8), the first I / O Driver (IOD1, ..., IOD8) creates the first subsequence (SUB1, ..., SUB3) and the second I / O driver (IOD1, ..., IOD8) creates the second subsequence (SUB1, ... , SUB3). Verfahren nach Anspruch 2, wobei vor Beginn der Abarbeitung des Computerprogramms eine Konfigurationsphase gestartet wird, während der Konfigurationsphase eine Softwareinstanz die Sequenz (SEQ1, ..., SEQ5) erzeugt, wobei die Sequenz (SEQ1, ..., SEQ5) unmittelbar nach Erzeugung durch die Softwareinstanz leer ist und der erste I/O-Treiber (IOD1, ..., IOD8) die erste Subsequenz (SUB1, ..., SUB3) in die Sequenz (SEQ1, ..., SEQ5) schreibt und der zweite I/O-Treiber (IOD1, ..., IOD8) die zweite Subsequenz (SUB1, ..., SUB3) in die Sequenz (SEQ1, ..., SEQ5) schreibt.  Method according to Claim 2, wherein a configuration phase is started before the start of the processing of the computer program, during the configuration phase, a software instance generates the sequence (SEQ1, ..., SEQ5), the sequence (SEQ1, ..., SEQ5) being empty immediately after being generated by the software entity and the first I / O driver (IOD1, ..., IOD8) writes the first subsequence (SUB1, ..., IUB3) in the sequence (SEQ1, ..., SEQ5) and the second I / O driver (IOD1, ..., IOD8) writes the second subsequence (SUB1, ..., SUB3) into the sequence (SEQ1, ..., SEQ5). Verfahren nach einem der bisherigen Ansprüche, wobei die Sequenz (SEQ1, ..., SEQ5) vor dem Laden der Sequenz (SEQ1, ..., SEQ5) auf den zweiten Prozessor (ION1, ..., ION5) optimiert wird, insbesondere, dass redundante Befehle aus der Sequenz entfernt werden oder redundante Speicherzugriffe aus der Sequenz entfernt werden oder der Sequenz ein Prozessorbefehl zur Ausführung eines Strobes hinzugefügt wird.  Method according to one of the preceding claims, wherein the sequence (SEQ1, ..., SEQ5) before the loading of the sequence (SEQ1, ..., SEQ5) on the second processor (ION1, ..., ION5) is optimized, in particular in that redundant instructions are removed from the sequence or redundant memory accesses are removed from the sequence or a processor instruction is added to the sequence to execute a strobe. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Sequenz (SEQ1, ..., SEQ5) eine minimierte Anzahl an Sprunganweisungen, insbesondere keine Sprunganweisungen, beinhaltet oder die Sequenz (SEQ1, ..., SEQ5) keine Funktionsaufrufe beinhaltet.  Method according to one of the preceding claims, wherein the sequence (SEQ1, ..., SEQ5) contains a minimized number of jump instructions, in particular no jump instructions, or the sequence (SEQ1, ..., SEQ5) contains no function calls. Verfahren nach einem der vorhergehenden Ansprüche, wobei der zweite Prozessor (ION1, ..., ION5) eingerichtet ist oder eingerichtet wird, bei der Abarbeitung der Sequenz (SEQ1, ..., SEQ5) kein Caching anzuwenden. Method according to one of the preceding claims, wherein the second processor (ION1, ..., ION5) is set up or is set up to not use caching during the execution of the sequence (SEQ1, ..., SEQ5). Verfahren nach einem der vorhergehenden Ansprüche, wobei die Schnittstelleneinheit (IO) mindestens zwei zweite Prozessoren (ION1, ..., ION5) aufweist und für jeden zweiten Prozessor (ION1, ..., ION5) eine individuelle Sequenz (SEQ1, ..., SEQ5) erstellt wird.  Method according to one of the preceding claims, wherein the interface unit (IO) has at least two second processors (ION1, ..., ION5) and for each second processor (ION1, ..., ION5) an individual sequence (SEQ1, ... , SEQ5) is created. Verfahren nach Anspruch 7, wobei die Schnittstelleneinheit (IO) ein FPGA aufweist und die zweiten Prozessoren (ION1, ..., ION5) als Softcores auf dem FPGA implementiert sind oder implementiert werden, insbesondere wobei die Softcores als Flow-Control-Prozessoren implementiert sind oder implementiert werden.  The method of claim 7, wherein the interface unit (IO) comprises an FPGA and the second processors (ION1, ..., ION5) are implemented or implemented as softcores on the FPGA, in particular wherein the softcores are implemented as flow control processors or implemented. Verfahren nach einem der Ansprüche 7 oder 8, wobei das Computerprogramm mehr als eine Task (TSK1, ..., TSK3) beinhaltet und jeder zweite Prozessor (ION1, ..., ION5) eindeutig einer Task zugewiesen wird, wobei die auf einen bestimmten zweiten Prozessor (ION1, ..., ION5) geladene Sequenz (SEQ1, ..., SEQ5) nur Subsequenzen (SUB1, ..., SUB3) von I/O-Treibern (IOD1, ..., IOD8) der Task (TSK1, ..., TSK3) enthält, der der bestimmte Prozessor (ION1, ..., ION5) zugewiesen ist.  Method according to one of claims 7 or 8, wherein the computer program includes more than one task (TSK1, ..., TSK3) and each second processor (ION1, ..., ION5) is uniquely assigned to a task, wherein the one to a certain second processor (ION1, ..., ION5) loaded sequence (SEQ1, ..., SEQ5) only subsequences (SUB1, ..., SUB3) of I / O drivers (IOD1, ..., IOD8) of the task (TSK1, ..., TSK3) to which the particular processor (ION1, ..., ION5) is assigned. Verfahren nach Anspruch 9, wobei jeder Task (TSK1, ..., TSK3) mit mindestens einem I/O-Treiber (IOD1, ..., IOD5) eine Priorität zugewiesen wird und die zweiten Prozessoren (ION1, ..., ION5) bevorzugt der Task (TSK1, ..., TSK3) mit der höchsten Priorität zugewiesen werden.  Method according to claim 9, wherein each task (TSK1, ..., TSK3) is assigned a priority with at least one I / O driver (IOD1, ..., IOD5) and the second processors (ION1, ..., ION5 ) preferably the task (TSK1, ..., TSK3) are assigned the highest priority. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Abarbeitung der Sequenz (SEQ1, ..., SEQ3) auf einem zweiten Prozessor (ION1, ..., ION5) durch ein Triggersignal gestartet wird, wobei das Triggersignal durch einen I/O-Treiber (IOD1, ..., ION8) oder durch einen Zeitgeber erzeugt wird.  Method according to one of the preceding claims, wherein the processing of the sequence (SEQ1, ..., SEQ3) on a second processor (ION1, ..., ION5) is started by a trigger signal, wherein the trigger signal by an I / O driver (IOD1, ..., ION8) or generated by a timer. Computersystem (HIL) mit einem ersten Prozessor (CN) und einer Schnittstelleneinheit (IO), wobei die Schnittstelleneinheit (IO) mindestens zwei Datenkanäle (IN1, ..., IN4, OUT1, ..., OUT4) aufweist, wobei ein erster Eingangsdatenkanal (IN1, ..., IN4) als Datenkanal zur Hinterlegung von Eingangsdaten in dem Eingangsdatenkanal (IN1, ..., IN4) durch eine Peripherie (PER) eingerichtet ist und ein erster Ausgangsdatenkanal (OUT1, ..., OUT4) zur Hinterlegung von Ausgangsdaten für eine Peripherie (PER) eingerichtet ist, wobei die Schnittstelleneinheit (IO) einen zweiten Prozessor (ION1, ..., ION5) aufweist und die Schnittstelleneinheit (IO) ausgestaltet ist, um eine Datenverbindung zum Auslesen der in dem ersten Eingangsdatenkanal (IN1, ..., IN4) hinterlegten Eingangsdaten durch den zweiten Prozessor (ION1, ..., ION5) bereitzustellen und um eine Datenverbindung zum Hinterlegen von Ausgangsdaten in dem ersten Ausgangsdatenkanal (OUT1, ..., OUT4) durch den zweiten Prozessor (ION1, ..., ION5) bereitzustellen, wobei das Computersystem (HIL) eine Datenverbindung (DL1) zwischen dem ersten Prozessor (CN) und dem zweiten Prozessor (ION1, ..., ION5) aufweist, wobei das Computersystem (HIL) eingerichtet ist, um vor Beginn der Abarbeitung eines Computerprogramms durch den ersten Prozessor (CN) eine Konfigurationsphase zu starten, während der Konfigurationsphase eine Sequenz (SEQ1, ..., SEQ5) von Prozessorbefehlen zu erstellen und die Sequenz (SEQ1, ..., SEQ5) auf den zweiten Prozessor (ION1, ..., ION5) zu laden, wobei auf dem ersten Prozessor (CN) zumindest ein erster I/O-Treiber (IOD1, ..., IOD5) und ein zweiter I/O-Treiber (IOD1, ..., IOD5) hinterlegt sind, dadurch gekennzeichnet, dass das Computersystem (HIL) eingerichtet ist, um während der Konfigurationsphase eine Anzahl von Subsequenzen (SUB1, ..., SUB3) von Prozessorbefehlen zu erstellen, der erste I/O-Treiber (IOD1, ..., IOD8) eingerichtet ist, um während der Konfigurationsphase eine erste Subsequenz (SUB1, ..., SUB3) von Prozessorbefehlen zu erstellen, wobei die erste Subsequenz (SUB1, ..., SUB3) eine Routine zum Einlesen und Verarbeiten zumindest der in einem ersten Eingangsdatenkanal (IN1, ..., IN4) hinterlegten Daten darstellt, der zweite I/O-Treiber (IOD1, ..., IOD8) eingerichtet ist, um während der Konfigurationsphase eine zweite Subsequenz (SUB1, ..., SUB3) von Prozessorbefehlen zu erstellen, wobei die zweite Subsequenz (SUB1, ..., SUB3) eine Routine zum Einlesen und Verarbeiten zumindest der in einem zweiten Eingangsdatenkanal (IN1, ..., IN4) hinterlegten Daten darstellt oder eine Routine zur Verarbeitung von durch den ersten Prozessor (CN) erzeugten Daten und zur Hinterlegung der verarbeiteten Daten in dem ersten Datenausgangskanal (OUT1, ..., OUT4) darstellt, und das Computersystem (HIL) eingerichtet ist, um durch Zusammenfügen der ersten Subsequenz (SUB1, ..., SUB3) und der zweiten Subsequenz (SUB1, ..., SUB3) die Sequenz (SEQ1, ..., SEQ5) zu erstellen. Computer system (HIL) having a first processor (CN) and an interface unit (IO), wherein the interface unit (IO) has at least two data channels (IN1, ..., IN4, OUT1, ..., OUT4), wherein a first input data channel (IN1, ..., IN4) is set as a data channel for storing input data in the input data channel (IN1, ..., IN4) by a peripheral (PER) and a first output data channel (OUT1, ..., OUT4) for storage output data for a peripheral (PER), wherein the interface unit (IO) has a second processor (ION1, ..., ION5) and the interface unit (IO) is designed to provide a data connection for reading out in the first input data channel (PER). IN1, ..., IN4) provided by the second processor (ION1, ..., ION5) and a data connection for storing output data in the first output data channel (OUT1, ..., OUT4) by the second processor ( ION1, ..., ION5) in which the computer system (HIL) has a data connection (DL1) between the first processor (CN) and the second processor (ION1, ..., ION5), the computer system (HIL) being set up in order to start a processing Computer program by the first processor (CN) to start a configuration phase during the configuration phase to create a sequence (SEQ1, ..., SEQ5) of processor commands and the sequence (SEQ1, ..., SEQ5) on the second processor (ION1, ..., ION5), wherein on the first processor (CN) at least a first I / O driver (IOD1, ..., IOD5) and a second I / O driver (IOD1, ..., IOD5 ), characterized in that the computer system (HIL) is arranged to create a number of subsequences (SUB1, ..., SUB3) of processor instructions during the configuration phase, the first I / O driver (IOD1, .. ., IOD8) is set up in order during the configuration phase, a first sub-sequence (SUB1, ..., SUB3) vo n to create processor commands, the first subsequence (SUB1, ..., SUB3) representing a routine for reading in and processing at least the data stored in a first input data channel (IN1, ..., IN4), the second I / O driver (IOD1, ..., IOD8) is set up to create a second subsequence (SUB1, ..., SUB3) of processor instructions during the configuration phase, the second subsequence (SUB1, ..., SUB3) being a read-in routine and processing at least the data stored in a second input data channel (IN1, ..., IN4) or a routine for processing data generated by the first processor (CN) and storing the processed data in the first data output channel (OUT1, .. ., OUT4), and the computer system (HIL) is set up to combine the first subsequence (SUB1, ..., SUB3) and the second subsequence (SUB1, ..., SUB3) to form the sequence (SEQ1, .. ., SEQ5). Computersystem (HIL) nach Anspruch 12, wobei das Computersystem (HIL) ausgestaltet ist, um das Computerprogramm mittels des ersten Prozessors (CN) in harter Echtzeit abzuarbeiten, insbesondere wobei das Computersystem (HIL) als Hardware-in-the-Loop-Simulator oder als Rapid-Control-Prototyping-System ausgestaltet ist.  Computer system (HIL) according to claim 12, wherein the computer system (HIL) is designed to process the computer program by means of the first processor (CN) in hard real time, in particular wherein the computer system (HIL) as a hardware-in-the-loop simulator or designed as a rapid-control prototyping system. Computersystem nach Anspruch 12 oder 13, wobei das Computersystem (HIL) eingerichtet ist, die Sequenz (SEQ1, ..., SEQ5) mit einer minimierten Anzahl an Sprungbefehlen, insbesondere ohne Sprungbefehle, zu erstellen.  Computer system according to claim 12 or 13, wherein the computer system (HIL) is arranged to create the sequence (SEQ1, ..., SEQ5) with a minimized number of branch instructions, in particular without branch instructions. Computersystem nach einem der Ansprüche 12 bis 14, wobei der zweite Prozessor (ION1, ..., ION5) eingerichtet ist, bei der Abarbeitung der Sequenz (SEQ1, ..., SEQ5) kein Caching anzuwenden. A computer system according to any one of claims 12 to 14, wherein the second processor (ION1, ..., ION5) is arranged not to use caching in processing the sequence (SEQ1, ..., SEQ5). Computersystem (HIL) nach einem der Ansprüche 12 bis 15, wobei die Schnittstelleneinheit (IO) mindestens zwei zweite Prozessoren (ION1, ..., ION5) aufweist und das Computersystem (HIL) eingerichtet ist, für jeden zweiten Prozessor (ION1, ..., ION5) eine individuelle Sequenz (SEQ1, ..., SEQ5) zu erstellen und eine individuelle Sequenz (SEQ1, ..., SEQ5) auf jeden zweiten Prozessor (ION1, ..., ION5) zu laden.  Computer system (HIL) according to one of claims 12 to 15, wherein the interface unit (IO) has at least two second processors (ION1, ..., ION5) and the computer system (HIL) is set up for every second processor (ION1, .. ., ION5) to create an individual sequence (SEQ1, ..., SEQ5) and to load an individual sequence (SEQ1, ..., SEQ5) on each second processor (ION1, ..., ION5).
DE102015119201.2A 2015-05-11 2015-11-09 A method of configuring an interface unit of a computer system Withdrawn DE102015119201A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/151,767 US10180917B2 (en) 2015-05-11 2016-05-11 Interface unit for routing prioritized input data to a processor
US15/151,746 US10055363B2 (en) 2015-05-11 2016-05-11 Method for configuring an interface unit of a computer system

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
DE102015107296 2015-05-11
DE102015107299 2015-05-11
DE102015107299.8 2015-05-11
DE102015107296.3 2015-05-11

Publications (1)

Publication Number Publication Date
DE102015119201A1 true DE102015119201A1 (en) 2016-11-17

Family

ID=54541995

Family Applications (2)

Application Number Title Priority Date Filing Date
DE102015119202.0A Withdrawn DE102015119202A1 (en) 2015-05-11 2015-11-09 Interface unit for forwarding prioritized input data to a processor
DE102015119201.2A Withdrawn DE102015119201A1 (en) 2015-05-11 2015-11-09 A method of configuring an interface unit of a computer system

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE102015119202.0A Withdrawn DE102015119202A1 (en) 2015-05-11 2015-11-09 Interface unit for forwarding prioritized input data to a processor

Country Status (3)

Country Link
US (2) US10055363B2 (en)
EP (2) EP3015995B1 (en)
DE (2) DE102015119202A1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017112208A1 (en) 2017-06-02 2018-12-06 Dspace Digital Signal Processing And Control Engineering Gmbh Method for transmitting metrologically recorded and digitized measurement data and test device suitable for carrying out the method
EP3413204B1 (en) 2017-06-09 2019-05-08 dSPACE digital signal processing and control engineering GmbH Method for parallel administration of continuous and task-synchronous input data of a real-time system
CN107844447B (en) * 2017-09-29 2019-06-28 北京计算机技术及应用研究所 Multi-channel serial bus high speed data sampling and processing system and method
US10915317B2 (en) * 2017-12-22 2021-02-09 Alibaba Group Holding Limited Multiple-pipeline architecture with special number detection

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6189052B1 (en) 1997-12-11 2001-02-13 Axis Ab On-chip i/o processor supporting different protocols having on-chip controller for reading and setting pins, starting timers, and generating interrupts at well defined points of time

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4129614C2 (en) * 1990-09-07 2002-03-21 Hitachi Ltd System and method for data processing
JP3375669B2 (en) 1993-03-23 2003-02-10 富士通株式会社 I / O memory card access method and operation method
WO1996041272A1 (en) 1995-06-07 1996-12-19 Advanced Micro Devices, Inc. Computer system having an improved bus arbiter adapted for real time applications
US6138123A (en) * 1996-07-25 2000-10-24 Rathbun; Kyle R. Method for creating and using parallel data structures
JP3608915B2 (en) * 1997-09-22 2005-01-12 富士通株式会社 Multiprocessing system performance evaluation method and apparatus, and storage medium storing multiprocessing system performance evaluation program
US6192470B1 (en) * 1998-07-29 2001-02-20 Compaq Computer Corporation Configuration sizer for selecting system of computer components based on price/performance normalization
US6539488B1 (en) * 1999-11-30 2003-03-25 Agere Systems Inc. System with a plurality of media access control circuits with a shared memory for storing data and synchronizing data from a clock domain to a host clock domain
IL134424A0 (en) 2000-02-07 2001-04-30 Congruency Inc A switching unit
CN100508493C (en) 2000-11-17 2009-07-01 因芬尼昂技术北美公司 Priority handling of voice over data in voice-over-internet protocol processor
US7450579B2 (en) * 2003-09-09 2008-11-11 Broadcom Corporation Downstream synchronous multichannels for a communications management system
JP2005092780A (en) * 2003-09-19 2005-04-07 Matsushita Electric Ind Co Ltd Real time processor system and control method
US20050278720A1 (en) 2004-05-27 2005-12-15 Samsung Electronics Co., Ltd. Distribution of operating system functions for increased data processing performance in a multi-processor architecture
US7664041B2 (en) * 2005-05-26 2010-02-16 Dale Trenton Smith Distributed stream analysis using general purpose processors
US7478179B2 (en) 2005-11-04 2009-01-13 Sun Microsystems, Inc. Input/output priority inheritance wherein first I/O request is executed based on higher priority
CN101098527B (en) 2006-06-27 2012-06-13 雅斯拓(北京)智能卡科技有限公司 Thread controller for processing simultaneously data transmission conversation of individual token
US8239158B2 (en) * 2008-08-04 2012-08-07 National Instruments Corporation Synchronizing a loop performed by a measurement device with a measurement and control loop performed by a processor of a host computer
DE102013104320A1 (en) * 2013-04-29 2014-10-30 Dspace Digital Signal Processing And Control Engineering Gmbh Flexible distribution of the I / O channels of a hardware component
DE102015010167B4 (en) * 2015-08-11 2017-12-07 Dspace Digital Signal Processing And Control Engineering Gmbh Calculation of a desired trajectory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6189052B1 (en) 1997-12-11 2001-02-13 Axis Ab On-chip i/o processor supporting different protocols having on-chip controller for reading and setting pins, starting timers, and generating interrupts at well defined points of time

Also Published As

Publication number Publication date
EP3015995B1 (en) 2017-03-08
US20160335101A1 (en) 2016-11-17
US20160335203A1 (en) 2016-11-17
US10055363B2 (en) 2018-08-21
EP3015992A1 (en) 2016-05-04
EP3015992B1 (en) 2017-03-22
DE102015119202A1 (en) 2016-11-17
EP3015995A1 (en) 2016-05-04
US10180917B2 (en) 2019-01-15

Similar Documents

Publication Publication Date Title
EP2009525B1 (en) Test device and method for testing at least one electronic control system
EP3015995B1 (en) Method for configuring an interface unit of a computer system
DE102004027033B4 (en) Influence device for control devices and method for influencing a control device
EP2799983B1 (en) Flexible distribution of I/O channels of a hardware component
DE102018206188A1 (en) System for performing XiL tests on components of self-driving motor vehicles
DE102012211981A1 (en) Method and apparatus for creating and testing a controller program
DE102017211433B4 (en) Procedure for performing a function test of a control unit in a hardware-in-the-loop test, HIL test, and HIL test bench and control unit
DE102017120016A1 (en) A method of configuring a test device set up to test an electronic controller and a configuration system
DE102018110018A1 (en) A method for providing an integrated process for the ECU development and simulation device for the ECU development
DE102019134053A1 (en) Process for the continuous validation of automated driving functions applied in driving tests
EP3832517A1 (en) Computer-implemented method for integrating at least one signal value in a virtual control device
WO2019211122A1 (en) Feature development framework and feature integration framework for implementing physical functional features in a target device
EP1758001A2 (en) Method and system for mapping the structure of an automation system on a computer
EP2899652B1 (en) Method for optimising the operation of programmable logic modules in control devices for vehicles
EP2191338B1 (en) System for writing a simulation program
EP2642359A1 (en) Device for developing and method for creating a programm for an electronical control unit
DE102020119853B3 (en) Method for controlling an automation system with visualization of program objects of a control program of the automation system and automation system
EP3572956A1 (en) Creation of an interdisciplinary simulation model
EP4179395A1 (en) Control of a technical system by means of a computing unit for artificial intelligence
DE112011105402T5 (en) Symbol table creation method; Communication method with peripheral equipment and programmable logic controller
EP3696621A1 (en) Computer-implemented method and device for controlling a modular technical system
DE102018207172A1 (en) Method and apparatus for simulating a cyber-physical system
DE102009054137A1 (en) Method for testing application utilized to develop functionalities of e.g. dynamic traction control of motor vehicle, involves considering characteristics of software components to simulate expected temporal characteristics of application
DE102016121788A1 (en) Configuration of an automation system
DE102018105724A1 (en) Method for configuring control units

Legal Events

Date Code Title Description
R081 Change of applicant/patentee

Owner name: DSPACE GMBH, DE

Free format text: FORMER OWNER: DSPACE DIGITAL SIGNAL PROCESSING AND CONTROL ENGINEERING GMBH, 33102 PADERBORN, DE

R005 Application deemed withdrawn due to failure to request examination