DE102015108005A1 - Mechanisms and devices for newly configurable interprocessor communications with embedded controller - Google Patents

Mechanisms and devices for newly configurable interprocessor communications with embedded controller Download PDF

Info

Publication number
DE102015108005A1
DE102015108005A1 DE102015108005.2A DE102015108005A DE102015108005A1 DE 102015108005 A1 DE102015108005 A1 DE 102015108005A1 DE 102015108005 A DE102015108005 A DE 102015108005A DE 102015108005 A1 DE102015108005 A1 DE 102015108005A1
Authority
DE
Germany
Prior art keywords
message
buffer
processor
processors
messages
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.)
Pending
Application number
DE102015108005.2A
Other languages
German (de)
Inventor
Shige Wang
Chang Liu
James Thomas
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.)
GM Global Technology Operations LLC
Original Assignee
GM Global Technology Operations LLC
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 GM Global Technology Operations LLC filed Critical GM Global Technology Operations LLC
Publication of DE102015108005A1 publication Critical patent/DE102015108005A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • 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/82Architectures of general purpose stored program computers data or demand driven

Abstract

Ein System und Verfahren für neu konfigurierbare Interprozessor-Kommunikationen in einem Controller. Das System und Verfahren umfassen das Bereitstellen mehrerer Prozessoren in dem Controller und das Generieren eines Sendepuffers und eines Empfangspuffers für jeden der Prozessoren. Das System und Verfahren umfassen ferner das Generieren einer Sendetabelle und einer Empfangstabelle für jeden der Prozessoren, wobei die Sendetabelle Identifizierungsinformationen über Nachrichten, die gesendet werden, speichert, und wobei die Empfangstabelle Identifizierungsinformationen über Nachrichten, die empfangen werden, speichert, und das Bereitstellen von Infrastrukturdiensten, die Protokolle zum Senden und Empfangen von Nachrichten zwischen mehreren Prozessoren in dem Controller umfassen.A system and method for reconfigurable interprocessor communications in a controller. The system and method include providing a plurality of processors in the controller and generating a transmit buffer and a receive buffer for each of the processors. The system and method further comprises generating a transmit table and a receive table for each of the processors, wherein the transmit table stores identification information about messages being sent, and wherein the receive table stores identification information about messages received, and providing infrastructure services comprising protocols for sending and receiving messages between multiple processors in the controller.

Description

HINTERGRUND DER ERFINDUNGBACKGROUND OF THE INVENTION

Gebiet der ErfindungField of the invention

Die vorliegende Erfindung betrifft im Allgemeinen ein System und Verfahren zum Neukonfigurieren von Interprozessor-Kommunikationen und genauer gesagt ein System und Verfahren, die mehrere Prozessoren bereitstellen, die einen Sende- und Empfangspuffer, eine Sende- und Empfangstabelle und Infrastruktur-Software-Dienste, wozu Protokolle zum Senden und Empfangen von Nachrichten zwischen den Prozessoren in einem Controller gehören, bereitstellen.The present invention relates generally to a system and method for reconfiguring inter-processor communications and, more particularly, to a system and method that provides multiple processors including a transmit and receive buffer, a transmit and receive table, and infrastructure software services, including protocols to send and receive messages between processors in a controller.

Beschreibung der verwandten TechnikDescription of the Related Art

Moderne Fahrzeuge verwenden diverse eingebettete elektronische Controller, welche die Leistung, den Komfort, die Sicherheit usw. des Fahrzeugs verbessern. Derartige Controller umfassen Motor-Controller, Federungs-Controller, Lenkungs-Controller, Antriebsstrang-Controller, Klimaregelungs-Controller, Infotainment-Anlagen-Controller, Fahrgestellsystem-Controller usw. Diese Controller benötigen typischerweise spezielle Software und Algorithmen, um ihre Steuerfunktionen auszuführen.Modern vehicles use various embedded electronic controllers that improve the performance, comfort, safety, etc. of the vehicle. Such controllers include motor controllers, suspension controllers, steering controllers, powertrain controllers, climate control controllers, infotainment system controllers, chassis system controllers, etc. These controllers typically require specialized software and algorithms to perform their control functions.

Die aktuelle Tendenz für elektronische Fahrzeug-Controller geht dahin, mehrere Software-Anwendungen für verschiedene Funktionen bereitzustellen, die auf einem gemeinsamen Controller funktionieren. Beispielsweise sind Abstandsregeltempomat-(ACC)Systeme, Spurzentrierungssysteme, Spurhaltesysteme, Stabilitätssteuersysteme usw. alle in der Technik bekannt und steuern alle die Fahrzeuglenkung und/oder Bremsung gewissermaßen automatisch. Diese Systeme verwenden häufig die gleichen Sensoreingaben und andere Variablen, die manchmal als globale Variablen bezeichnet werden, die, wenn sie im Speicher abgelegt werden, von mehr als einer Software-Anwendung verwendet werden können. Beispielsweise kann das ACC-System während seines Betriebs auf dem Prozessor Sensordaten in den Controller-Speicher schreiben, und das Spurzentrierungssystem kann diese Daten in seine Software schreiben, wenn sie auf dem Prozessor läuft. Somit ist es in Fällen wie diesen häufig sinnvoll, mehrere Software-Anwendungen auf dem gleichen Prozessor laufen zu lassen.The current trend for electronic vehicle controllers is to provide multiple software applications for various functions that operate on a common controller. For example, cruise control (ACC) systems, lane centering systems, lane keeping systems, stability control systems, etc., are all well known in the art and, to a certain extent, automatically control vehicle steering and / or braking. These systems often use the same sensor inputs and other variables, sometimes referred to as global variables, which, when stored in memory, can be used by more than one software application. For example, while operating on the processor, the ACC system may write sensor data to the controller memory, and the lane centering system may write that data into its software as it runs on the processor. Thus, in cases like these, it often makes sense to run multiple software applications on the same processor.

Das Bereitstellen von mehreren verwandten Software-Anwendungen, die auf einem gemeinsamen Controller ablaufen, hat offensichtliche Vorteile zum Reduzieren der System-Hardware und Kosten. Das Betreiben verschiedener Software-Anwendungen auf dem gleichen Prozessor erhöht jedoch die Komplexität des Controllers auf Grund der Planung, die notwendig ist, um die verschiedenen Software-Anwendungen laufen zu lassen und zu verhindern, dass sich die Software-Anwendungen gegenseitig stören. Derartige Anwendungen gemischter Nutzung, die auf einem einzigen Prozessor funktionieren, werden noch komplizierter, wenn ein Fahrzeug-OEM zusätzliche Software auf einem Controller bereitstellt, der bereits über Software verfügt, die von einem Anbieter bereitgestellt wird. Ferner weist ein einziger Prozessor nur begrenzte Ressourcen, wie etwa Speicher, CPU-Durchsatz usw. auf. Die Ressourcen, die benötigt werden, um mehrere Anwendungen auszuführen, überschreiten häufig die Kapazität eines einzigen Prozessors.Providing several related software applications running on a common controller has obvious advantages of reducing system hardware and costs. However, running different software applications on the same processor increases the complexity of the controller due to the design necessary to run the various software applications and prevent the software applications from interfering with each other. Such mixed-use applications operating on a single processor become even more complicated when a vehicle OEM provides additional software on a controller that already has software provided by a vendor. Furthermore, a single processor has only limited resources, such as memory, CPU throughput, and so on. The resources needed to run multiple applications often exceed the capacity of a single processor.

Die Interprozessor-Kommunikation (IPC) ist ein Satz von Verfahren zum Austauschen von Daten zwischen mehreren Threads in einem oder mehreren Prozessen. Der eine oder die mehreren Prozesse oder ablauffähigen Elemente kann bzw. können auf einem oder mehreren Prozessoren ablaufen, die durch ein Netzwerk verbunden sind. Wie er hier verwendet wird, umfasst der Begriff „ablauffähiges Element” eine kleine ausführbare Software-Komponente oder Software-Funktion, die mit einer bestimmten Arbeitsschrittfrequenz des Betriebssystems abläuft. Bei Interprozessor-Kommunikationen können ablauffähige Elemente verschiedenen Prozessoren zugeteilt werden. Die ablauffähigen Elemente können auch in verschiedenen Threads mit verschiedenen Frequenzen ablaufen. Die Zuteilung von ablauffähigen Elementen benötigt eine häufige Änderung, die mit Bezug auf den Durchsatz der Kerne/Prozessoren sowie mit Bezug auf die Bandbreite eines Busses/Speichers belastend sein kann. Die aktuelle Praxis, die davon ausgeht, dass ablauffähige Elemente während des Entwurfs nicht neu zugeteilt werden können, ist unhaltbar. Nachrichten bei bekannten Controller-Umsetzungen umfassen knotenspezifische Syntax, d. h. fest verdrahtete Quell-/Zielinformationen. Das Bewegen von ablauffähigen Elementen von einem Kern zum andern erfordert nicht unerhebliche Bemühungen, um die IPC-Nachrichten zu identifizieren und zu ändern. Somit besteht in der Technik ein Bedarf an Mechanismen, die eine Neukonfiguration der Interprozessor-Kommunikation gemäß diversen Funktionsaufstellungen, Funktionsausführungsfrequenzen und Kommunikationsverbindungen auf niedriger Ebene.Interprocessor communication (IPC) is a set of techniques for exchanging data between multiple threads in one or more processes. The one or more processes or executable elements may run on one or more processors connected by a network. As used herein, the term "executable element" includes a small executable software component or software function that operates at a particular operating system frequency of the operating system. In interprocessor communications, executable elements may be assigned to different processors. The executable elements can also run in different threads with different frequencies. The dispatching of executable elements requires a frequent change, which can be burdensome with regard to the throughput of the cores / processors as well as with respect to the bandwidth of a bus / memory. The current practice, which assumes that executable elements can not be reallocated during the design, is untenable. Messages in known controller implementations include node-specific syntax, i. H. Hardwired source / destination information. Moving executable elements from one core to another requires considerable effort to identify and change the IPC messages. Thus, there is a need in the art for mechanisms that require reconfiguration of the inter-processor communication according to various low level feature sets, functional execution frequencies, and communication links.

KURZDARSTELLUNG DER ERFINDUNG BRIEF SUMMARY OF THE INVENTION

Die nachstehende Offenbarung beschreibt ein System und Verfahren für neu konfigurierbare Interprozessor-Kommunikationen in einem Controller. Das System und Verfahren umfassen das Bereitstellen mehrerer Prozessoren in dem Controller und das Generieren eines Sendepuffers und eines Empfangspuffers für jeden der Prozessoren. Das System und Verfahren umfassen ferner das Generieren einer Sendetabelle und einer Empfangstabelle für jeden der Prozessoren, wobei die Sendetabelle Identifizierungsinformationen über Nachrichten, die gesendet werden, speichert, und wobei die Empfangstabelle Identifizierungsinformationen über Nachrichten, die empfangen werden, speichert, und das Bereitstellen von Infrastrukturdiensten, die Protokolle zum Senden und Empfangen von Nachrichten zwischen mehreren Prozessoren in dem Controller umfassen.The following disclosure describes a system and method for reconfigurable interprocessor communications in a controller. The system and method include providing a plurality of processors in the controller and generating a transmit buffer and a receive buffer for each of the processors. The system and method further comprises generating a transmit table and a receive table for each of the processors, wherein the transmit table stores identification information about messages being sent, and wherein the receive table stores identification information about messages received, and providing infrastructure services comprising protocols for sending and receiving messages between multiple processors in the controller.

Zusätzliche Merkmale der vorliegenden Erfindung werden aus der nachstehenden Beschreibung und den beiliegenden Ansprüchen hervorgehen, die zusammen mit den beiliegenden Zeichnungen zu sehen sind.Additional features of the present invention will become apparent from the following description and the appended claims, taken in conjunction with the accompanying drawings.

KURZE BESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS

Es zeigen:Show it:

1a bis 1c einen Controller mit ablauffähigen Elementen, die auf ersten und zweiten Prozessoren gemäß zwei verschiedenen Konfigurationen konfiguriert sind; 1a to 1c a controller with executable elements configured on first and second processors according to two different configurations;

2 eine Abbildung von Nachrichtenpuffern, die Teil jedes Prozessors sind; 2 an illustration of message buffers that are part of each processor;

3 ein Ablaufdiagramm einer Funktion, die Teil eines Sendeprozessors ist; 3 a flow chart of a function that is part of a transmit processor;

4 ein Ablaufdiagramm eines Arbeitsschritts, der Nachrichten an einen Puffer des sendenden Kerns/Prozessors sendet; 4 a flowchart of a step that sends messages to a buffer of the sending core / processor;

5 ein Ablaufdiagramm einer Funktion, die gesendete Nachrichten in einen Puffer des empfangenden Kerns/Prozessors kopiert; 5 a flowchart of a function that copies sent messages into a buffer of the receiving core / processor;

6 ein Ablaufdiagramm eines Arbeitsschritts, der Signaldaten in einer Nachricht in eine geeignete Variable kopiert; 6 a flowchart of a process that copies signal data in a message into an appropriate variable;

7 eine Abbildung eines Beispiels davon, wie vier ablauffähige Elemente R1, R2, R3 und R4 miteinander kommunizieren; 7 Figure 4 illustrates an example of how four executable elements R1, R2, R3, and R4 communicate with each other;

8 eine Abbildung eines Controllers, der die ablauffähigen Elemente R1, R2, R3 und R4 umfasst, die auf drei Kerne/Prozessoren verteilt sind; und 8th an illustration of a controller comprising the executable elements R1, R2, R3 and R4, which are distributed on three cores / processors; and

9 eine Abbildung eines Controllers, der die ablauffähigen Elemente R1, R2, R3 und R4 umfasst, die auf zwei Kerne/Prozessoren verteilt sind. 9 an illustration of a controller comprising the executable elements R1, R2, R3 and R4, which are distributed on two cores / processors.

AUSFÜHRLICHE BESCHREIBUNG DER AUSFÜHRUNGSFORMENDETAILED DESCRIPTION OF THE EMBODIMENTS

Die folgende Diskussion der Ausführungsformen der Erfindung, die ein System und Verfahren zum Neukonfigurieren von Interprozessor-Kommunikationen betrifft, ist rein beispielhafter Art und keineswegs dazu gedacht, die Erfindung oder ihre Anwendungen oder Verwendungen einzuschränken.The following discussion of embodiments of the invention, which relates to a system and method for reconfiguring interprocessor communications, is merely exemplary in nature and is in no way intended to limit the invention or its applications or uses.

1a bildet einen Controller 10 ab, wie etwa einen Controller in einem Fahrzeug, der die ablauffähigen Elemente 34, 36 und 38 umfasst. 1b und 1c bilden die ablauffähigen Elemente 34, 36 und 38 ab, die jeweils auf den Prozessoren 30 und 32 gemäß zwei unterschiedlichen Konfigurationen angeordnet sind. 1a bildet ab, wie die Datensignale zwischen den ablauffähigen Elementen 34, 36 und 38 gemeinsam genutzt werden. Wie in 1a gezeigt, sendet das ablauffähige Element 34 Signaldaten an das ablauffähige Element 36 auf der Leitung 40 und sendet auch Signaldaten an das ablauffähige Element 38 auf der Leitung 42. Das ablauffähige Element 36 sendet Signaldaten an das ablauffähige Element 38 auf der Leitung 44. Das ablauffähige Element 34 kann beispielsweise Fahrzeugsensor-Eingabedaten entsprechen. Das ablauffähige Element 36 kann ein Fahrzeugbahn-Vorhersagefilter sein, und das ablauffähige Element 38 kann ein Prozess zum Ermitteln eines Zusammenstoßrisikos sein. 1a forms a controller 10 off, such as a controller in a vehicle that has the executable elements 34 . 36 and 38 includes. 1b and 1c form the executable elements 34 . 36 and 38 off, each on the processors 30 and 32 arranged in two different configurations. 1a depicts how the data signals between the executable elements 34 . 36 and 38 be shared. As in 1a shown, sends the executable element 34 Signal data to the executable element 36 on the line 40 and also sends signal data to the executable element 38 on the line 42 , The executable element 36 sends signal data to the executable element 38 on the line 44 , The executable element 34 For example, it may correspond to vehicle sensor input data. The executable element 36 may be a vehicle path prediction filter and the executable element 38 may be a process for determining a risk of collision.

1b bildet die ablauffähigen Elemente 34, 36 und 38 ab, die auf die Prozessoren 30 und 32 verteilt sind. Gemäß dieser Konfiguration werden zwei Nachrichten 52 und 54 auf einer Kommunikationsverbindung 50, wie etwa einem Bus, gesendet. 1c bildet die ablauffähigen Elemente 34, 36 und 38 ab, die anders auf die Prozessoren 30 und 32 verteilt sind, so dass nur eine Nachricht auf der Kommunikationsverbindung 50 gesendet werden muss. Somit kann das Variieren der Konfiguration der ablauffähigen Elemente, wie etwa der ablauffähigen Elemente 34, 36 und 38, wünschenswert sein, um den Durchsatz der Prozessoren, wie etwa der Prozessoren 30 und 32, zu optimieren und auch die Bandbreite der Kommunikationsverbindung 50 sowie den Speicher des Controllers 10 wirksam zu verwenden. 1b forms the executable elements 34 . 36 and 38 starting on the processors 30 and 32 are distributed. According to this configuration will be two messages 52 and 54 on a communication link 50 , such as a bus, sent. 1c forms the executable elements 34 . 36 and 38 different on the processors 30 and 32 are distributed, leaving only a message on the communication link 50 must be sent. Thus, varying the configuration of the executable elements, such as the executable elements 34 . 36 and 38 , be desirable to the throughput of processors, such as processors 30 and 32 , optimize and also the bandwidth of the communication link 50 as well as the memory of the controller 10 to use effectively.

Um eine Möglichkeit zu erstellen, Interprozessor-Konfigurationen neu zu konfigurieren, werden ein Protokoll, das in einer statischen Nachrichtenstruktur codiert ist, Ringpuffer für die Nachrichtenspeicherung und Infrastrukturdienste verwendet, wie es nachstehend ausführlich beschrieben wird. Das Protokoll zum Senden und Empfangen von Nachrichten ist in einer Nachrichtenstruktur mit reduzierten Verwaltungsdaten eingebaut, d. h. es ist ein Protokoll höherer Ebene, das anders als ein Netzwerkprotokoll ist. Das Protokoll zum Senden und Empfangen von Nachrichten ist in der Lage, mehrere Nachrichtenfrequenzen basierend auf den Bedürfnissen eines Verbrauchers an Bandbreite und Durchsatzoptimierung zu unterstützen, was anders als die bestehenden Lösungen mit festgelegter Frequenz ist, da diese Lösungen wie zuvor erwähnt, unnötig zusätzliche Bandbreite und Durchsatz verbrauchen. Somit ermöglicht das Protokoll zum Senden und Empfangen von Nachrichten, wie es hier beschrieben wird, robuste Kommunikationen und erlaubt die Umsetzung diverser Diagnose- und fehlertoleranter Strategien. Die Nachrichtenstruktur für das Protokoll zum Senden und Empfangen von Nachrichten umfasst ein führendes Byte, das hier mit _sync bezeichnet wird und den Anfang einer Nachricht angibt. Das Byte _sync wird verwendet, um für den Fall einer Header-Verfälschung eine neue Nachricht zu identifizieren. Die Nachrichtenstruktur umfasst auch systemweite, einzigartige Codierungssignale/Aktionen, die hier mit _id bezeichnet werden und eine vorbestimmte Frequenz aufweisen, die komprimiert ist, um zwischen einem Sendestandort und einem Zielort zu übertragen, was nachstehend ausführlicher beschrieben wird. Der Sendestandort, der hier mit _src bezeichnet wird, ist der Kern/Prozessor, der die Signale/Nachrichten empfängt. Ebenfalls in der Nachrichtenstruktur enthalten ist eine laufende Nachrichtenzählung, die hier mit _cnt bezeichnet wird und eine Seriennummer der bestimmten Nachrichtenstruktur ist, die für jedes _id, _src und _dst einzigartig ist. Beispielsweise kann _cnt ein Paket von mehreren Nachrichten darstellen, so dass eine Nachricht, die in der Mitte des Pakets fehlt, ermittelt wird, wie es nachstehend näher besprochen wird.To create a way to reconfigure interprocessor configurations, a protocol encoded in a static message structure, message storage ring buffers, and infrastructure services are used, as described in detail below. The protocol for sending and receiving messages is built into a message structure with reduced administrative data, i. H. it is a higher-level protocol that is different than a network protocol. The message sending and receiving protocol is capable of supporting multiple message frequencies based on a consumer's needs for bandwidth and throughput optimization, unlike existing fixed frequency solutions, as these solutions add unnecessary bandwidth and overhead Consuming throughput. Thus, the protocol for sending and receiving messages, as described herein, enables robust communications and allows the implementation of various diagnostic and fault tolerant policies. The message structure for the message sending and receiving protocol includes a leading byte, here called _sync, which indicates the beginning of a message. The _sync byte is used to identify a new message in the event of header corruption. The message structure also includes system-wide unique coding signals / actions, herein denoted _id, having a predetermined frequency compressed to transmit between a sending site and a destination, as described in more detail below. The sender location, denoted here by _src, is the core / processor that receives the signals / messages. Also included in the message structure is a running message count, here designated _cnt, which is a serial number of the particular message structure unique to each _id, _src, and _dst. For example, _cnt may represent a packet of multiple messages, such that a message missing in the middle of the packet is detected, as discussed in more detail below.

Die Nachrichtenstruktur des Protokolls zum Senden und Empfangen von Nachrichten umfasst auch Informationen über die Länge der Nachricht, die hier mit _size bezeichnet wird. Das Byte _size wird statisch bestimmt und verwendet, um den richtigen Empfang einer Nachricht sicherzustellen, weil _size angibt, wann die Nachricht beendet ist oder zu Ende gehen soll. Die Ermittlung einer Header-Datenverfälschung, die hier mit _hdr_chksum bezeichnet wird, ist ebenfalls Teil der Nachrichtenstruktur des Protokolls. Die Überprüfung, dass die Daten in der Nachricht aus der gleichen Quelle stammen, die gleiche Bestimmung aufweisen, die gleiche Frequenz aufweisen, was hier mit _data bezeichnet wird, ist ebenfalls Teil der Nachrichtenstruktur. Ferner umfasst die Nachrichtenstruktur, was hier mit _data_checksum bezeichnet wird und von einem Kern/Prozessor verwendet wird, der die Signale empfängt, wie etwa der Prozessor 32, um eine Datenverfälschung zu ermitteln. Falls eine Datenverfälschung ermittelt wird, werden die Daten verworfen, um Speicherplatz zu sparen, wie es nachstehend beschrieben wird. msg_id dst cnt size V-Liste m1 p2 5 10 V1, V3, V8 m2 p2 3 10 V1, V2, V8 m3 p3 1 8 V3, V4 ... ... ... ... Tabelle 1 The message structure of the message sending and receiving protocol also includes information about the length of the message, referred to here as _size. The _size byte is statically determined and used to ensure the correct receipt of a message, because _size indicates when the message is finished or should finish. The detection of a header data corruption, here referred to as _hdr_chksum, is also part of the message structure of the protocol. Checking that the data in the message comes from the same source, having the same destination, having the same frequency, which is referred to herein as _data, is also part of the message structure. Further, the message structure includes what is referred to herein as _data_checksum and is used by a core / processor that receives the signals, such as the processor 32 to detect a data corruption. If data corruption is detected, the data is discarded to save memory as described below. msg_id dst cnt size V-List m1 p2 5 10 V1, V3, V8 m2 p2 3 10 V1, V2, V8 m3 p3 1 8th V3, V4 ... ... ... ... Table 1

Die Tabelle 1 bildet ab, wie Signaldaten in einer Sendetabelle des sendenden Kerns/Prozessors, wie etwa des Prozessors 30, organisiert sind. Jeder Prozessor umfasst eine Sendetabelle und eine Empfangstabelle, wie es nachstehend ausführlicher beschrieben wird. Jede Reihe der Tabelle 1 umfasst _id, _dst, _size und eine Variablenliste mit Referenzen und Positionen von Variablen. Die Daten sind in einer Nachricht statisch organisiert, wobei die Position eines Signals in der Nachricht festgelegt ist und zum Zeitpunkt der Konfiguration bestimmt wird. Wie in Tabelle 1 gezeigt, wird eine Nachricht m1 an einen empfangenden Kern/Prozessor p2 gesendet und weist eine Zählung von 5 und eine Größe von 10 auf. Die Variablensequenz für m1 ist V1 gefolgt von V3 gefolgt von V8. Eine zweite Nachricht in der Tabelle 1, m2, wird ebenfalls an den empfangenden Kern/Prozessor p2 gesendet und weist eine Zählung von 3 und eine Größe von 10 und eine Variablensequenz von V1 gefolgt von V2 gefolgt von V8 auf. Eine dritte Nachricht, die in Tabelle 1 als m3 gezeigt wird, wird an einen empfangenden Kern/Prozessor p3 gesendet und weist eine Zählung von 1 und eine Größe von 8 auf, und die Variablensequenz ist V3 gefolgt von V4. msg_id Src cnt size V-Liste m1 p1 5 10 V1, V3, V8 m2 p1 2 10 V1, V2, V8 m5 p3 2 6 V7, V5 ... ... ... ... Tabelle 2 Table 1 depicts how signal data is in a transmitting core / processor transmission table, such as the processor 30 , are organized. Each processor includes a transmit table and a receive table, as described in more detail below. Each row of Table 1 comprises _id, _dst, _size and a variable list with references and positions of variables. The data is statically organized in a message, with the position of a signal being specified in the message and being determined at the time of configuration. As shown in Table 1, a message m1 is sent to a receiving core / processor p2 and has a count of 5 and a size of 10. The variable sequence for m1 is followed by V1 from V3 followed by V8. A second message in Table 1, m2, is also sent to the receiving core / processor p2 and has a count of 3 and a size of 10 and a variable sequence of V1 followed by V2 followed by V8. A third message, shown as m3 in Table 1, is sent to a receiving core / processor p3 and has a count of 1 and a size of 8, and the variable sequence is V3 followed by V4. msg_id src cnt size V-List m1 p1 5 10 V1, V3, V8 m2 p1 2 10 V1, V2, V8 m5 p3 2 6 V7, V5 ... ... ... ... Table 2

Die Tabelle 2 bildet eine Empfangstabelle des empfangenden Kerns/Prozessors, wie etwa des Prozessors 32, ab. Jede Reihe der Tabelle 2 umfasst _id, _src, _size und eine Variablenliste mit Referenzen und Positionen von Variablen. Wie zuvor erwähnt, werden _id, _src und _size verwendet, um Nachrichten im Fall von Header-Verfälschung richtig zu empfangen. Beispielsweise wird die Größe der Nachricht m1 mit 10 erwartet; falls somit die tatsächliche Größe nicht 10 ist, wird die Nachricht verworfen, wie es nachstehend weiter besprochen wird. Von der Nachricht m1 der Tabelle 1 wird erwartet, dass sie mit der Nachricht m1 der Tabelle 2 übereinstimmt. Unter Verwendung der Informationen in den Reihen der Tabellen 1 und 2 ist der empfangende Kern/Prozessor 32 in der Lage zu bestimmen, ob die empfangene Nachricht richtig ist, d. h. nicht verfälscht wurde. Wie zuvor angegeben, pflegt jeder Kern/Prozessor zwei Tabellen, eine zum Senden und eine zum Empfangen. Beide Tabellen werden zum Zeitpunkt der Aufstellung generiert, d. h. zum Zeitpunkt des Entwurfs, und die Zählung _cnt der Nachrichtenstruktur wird auf der Empfangsseite verwendet, um zu bestimmen, ob eine Nachricht zu verwerfen ist.Table 2 forms a receive table of the receiving core / processor, such as the processor 32 , from. Each row of Table 2 includes _id, _src, _size, and a variable list of references and locations of variables. As previously mentioned, _id, _src, and _size are used to properly receive messages in the event of header corruption. For example, the size of message m1 is expected to be 10; Thus, if the actual size is not 10, the message is discarded, as discussed further below. The message m1 of Table 1 is expected to match the message m1 of Table 2. Using the information in the rows of Tables 1 and 2, the receiving core / processor 32 able to determine if the received message is correct, ie not corrupted. As indicated previously, each core / processor maintains two tables, one for sending and one for receiving. Both tables are generated at the time of setup, at design time, and the _cnt count of the message structure is used on the receive side to determine if a message is to be discarded.

2 bildet die Nachrichtenpuffer 60 und 62 ab, die Teil jedes Kerns/Prozessors, wie etwa der Prozessoren 30 und 32, sind. Der Nachrichtenpuffer 60 ist ein Sendepuffer, der verwendet wird, um eine gesendete Nachricht zu speichern, bevor die gesendete Nachricht verarbeitet wird, indem er die Nachricht beispielsweise über einen Bus liefert, wie es nachstehend ausführlicher beschrieben wird. Der Puffer 62 ist ein Empfangspuffer, der verwendet wird, um eine empfangene Nachricht zu speichern, bevor die empfangene Nachricht verarbeitet wird, wie nachstehend ausführlich beschrieben. Jeder der Puffer 60 und 62 ist ein Ringpuffer, wobei jeder der Puffer 60 und 62 zwei Zeiger umfasst. Ein erster Zeiger 64 zeigt auf die Stelle, an welcher in den Puffer geschrieben wird, und der andere Zeiger 66 zeigt auf die Stelle, an welcher aus dem Puffer gelesen wird. Um die Größe zu bestimmen, die der Sendepuffer 60 haben muss, wird die folgende Gleichung verwendet: Bsend = Σ∀j∊rateΣ∀i∊dstsizeof(mi,j) (1) Wobei Bsend die zugeteilte Größe für den Sendepuffer ist, ∀j ∊ rate die Summe aller möglichen Frequenzen ist, mit denen die zu übertragenden Daten generiert werden, ∀i ∊ dst die Summe aller möglichen Zielprozessoren/Kerne ist, und sizeof(mi,j) die Größe der Nachricht ist, die den Header und die Daten umfasst. 2 forms the message buffers 60 and 62 which are part of every core / processor, such as the processors 30 and 32 , are. The message buffer 60 is a send buffer that is used to store a sent message before the sent message is processed by, for example, delivering the message over a bus, as described in more detail below. The buffer 62 is a receive buffer used to store a received message before the received message is processed, as described in detail below. Each of the buffers 60 and 62 is a ring buffer, with each of the buffers 60 and 62 includes two hands. A first pointer 64 points to the location where the buffer is written and the other pointer 66 points to the location where the buffer is read. To determine the size of the send buffer 60 must have, the following equation is used: B send = Σ ∀jεrate Σ ∀iεdst sizeof (m i, j ) (1) Where B send is the allocated size for the transmit buffer, ∀j ε rate is the sum of all possible frequencies used to generate the data to be transmitted, ∀i ε dst is the sum of all possible target processors / cores, and sizeof (m i, j ) is the size of the message that includes the header and the data.

Unter Verwendung der Gleichung (1) berechnet ein Algorithmus die Größe, _size, oder die Länge jeder Nachricht, um sicherzustellen, dass der Puffer 60 in der Lage ist, alle Datenkommunikationen zu enthalten, die er zwischen jedem Arbeitsschritt Tx_task, d. h. zwischen jedem Schreibbefehl-Arbeitsschritt, der Datenkommunikationen in den Puffer 30 schreibt, empfangen soll. Beispielsweise kann von dem Puffer 60 erwartet werden, dass er 20 Datenkommunikationen von dem ablauffähigen Element R1 und 1 Datenkommunikation von dem ablauffähigen Element R2 empfängt. Falls die Größe jeder Datenkommunikation gleich 1 ist und die Größe des Nachrichten-Headers gleich 10 ist, kann die Puffergröße mit 20·(10 + 1) + (10 + 1) = 231 berechnet werden. Um ähnlich die Größe zu bestimmen, die der Empfangspuffer 32 haben muss, wird die folgende Gleichung verwendet: Breceive = Σ∀j∊rateΣ∀i∊srcsizeof(mi,j) (2) Wobei Breceive die zugeteilte Größe für den Empfangspuffer ist, ∀j ∊ rate die Summe aller möglichen Frequenzen ist, mit denen die zu übertragenden Daten generiert werden, und ∀i ∊ src die Summe aller Nachrichten ist, die von verschiedenen Quellprozessoren stammen, und die Größe der Nachricht einschließlich des Headers und der Daten ist.Using equation (1), an algorithm calculates the size, _size, or length of each message to ensure that the buffer 60 is able to contain all the data communications it receives between each Tx_task step, ie between each write command step, the data communications to the buffer 30 writes, should receive. For example, from the buffer 60 It is expected to receive 20 data communications from the executable element R1 and 1 data communication from the executable element R2. If the size of each data communication is equal to 1 and the size of the message header is equal to 10, the buffer size may be calculated as 20 * (10 + 1) + (10 + 1) = 231. To similarly determine the size of the receive buffer 32 must have, the following equation is used: B receive = Σ ∀jεrate Σ ∀iεsrc sizeof (m i, j ) (2) Where B receive is the allocated size for the receive buffer, ∀j ε rate is the sum of all possible frequencies at which the data to be transmitted is generated, and ∀i ε src is the sum of all messages, which comes from different source processors, and is the size of the message including the header and the data.

Die Gleichung (2) wird verwendet, um die Größe, _size, oder die Länge jeder Nachricht zu berechnen, um sicherzustellen, dass der Ringpuffer 32 in der Lage ist, alle Datenkommunikationen zu enthalten, die er zwischen jedem Arbeitsschritt Rx_task, z. B. jedem Lesebefehl-Arbeitsschritt, der etwas aus dem Puffer 30 entnimmt, um es auf den Bus 50 zu setzen, empfangen soll. Unter Verwendung des Zeigers 66 zum Lesen und des Zeigers 64 zum Schreiben schreibt eine Funktion, die nachstehend ausführlich beschrieben wird, die Daten sequenziell ausgehend von einem Schreibindex, d. h. ausgehend von dem Zeiger 64. Eine getrennte Arbeitsschritt-Funktion, die nachstehend ausführlicher beschrieben wird, wird mit der höchsten Frequenz der gesendeten Nachrichten aufgerufen, um eine zu sendende Nachricht aus dem Lesezeiger 66 des zweiten Puffers 62 zu lesen, formuliert die Nachricht und sendet die Nachricht an die Kommunikationsverbindung, z. B. einen Bus, auf eine Art und Weise, die nachstehend beschrieben wird. Auf der Empfangsseite wird ein Unterbrechungsdienst, der nachstehend ausführlicher beschrieben wird, bei der Ankunft einer Nachricht derart aufgerufen, dass der Unterbrechungsdienst sie mit Informationen vergleicht, die in einer Empfangstabelle, wie etwa der Tabelle 2, verfügbar sind. Eine gültige Nachricht wird in den Empfangspuffer 62 gesetzt und ein Empfangs-Arbeitsschritt, der mit der höchsten Frequenz der empfangenen Nachrichten aufgerufen wird, dekomprimiert die Signaldaten der Nachricht und kopiert die Signaldaten in geeignete Variablen auf eine Art und Weise, die nachstehend ausführlicher beschrieben wird. Die Größe der Puffer 60 und 62 wird unter Verwendung der zuvor beschriebenen Gleichungen (1) und (2) berechnet, um sicherzustellen, dass kein Überlauf der Signaldaten erfolgt.Equation (2) is used to calculate the size, _size, or length of each message to ensure that the circular buffer 32 is able to contain all the data communications it has between each Rx_task step, e.g. For example, any read command operation that is something from the buffer 30 takes it to the bus 50 to set, to receive. Using the pointer 66 for reading and the pointer 64 For writing, a function, which will be described in detail below, writes the data sequentially from a writing index, that is, from the pointer 64 , A separate operation step, which will be described in more detail below, is called with the highest frequency of the transmitted messages to retrieve a message to be sent from the read pointer 66 of the second buffer 62 to read formulates the message and sends the message to the communication link, z. A bus, in a manner that will be described below. At the receiving end, an interrupt service, which will be described in more detail below, is called on arrival of a message such that the interrupt service compares it with information available in a receive table, such as Table 2. A valid message is placed in the receive buffer 62 and a receive operation called with the highest frequency of received messages decompresses the signal data of the message and copies the signal data into appropriate variables in a manner which will be described in more detail below. The size of the buffers 60 and 62 is calculated using the equations (1) and (2) described above to ensure that there is no overflow of the signal data.

Die Infrastrukturdienste zur Nachrichtenverarbeitung auf jedem Kern/Prozessor 30, 32 umfassen eine Tx_func() 70, einen Tx_task() 90, eine Rx_interrupt() 112 und einen Rx_task() 134, wie es nachstehend mit Bezug auf 3 bis 6 ausführlicher beschrieben wird.The infrastructure services for message processing on each core / processor 30 . 32 include a Tx_func () 70 , a Tx_task () 90 , a Rx_interrupt () 112 and a Rx_task () 134 as related below 3 to 6 will be described in more detail.

3 ist ein Ablaufdiagramm der Tx_func() 70, wobei es sich um eine Funktion des sendenden Kerns/Prozessors 30 handelt. Wenn eine Nachricht vorliegt, die von dem ablauffähigen Element generiert wird, das mit einer bestimmten Frequenz läuft und von dem sendenden Kern/Prozessor 30 über Interprozess-Kommunikationen zu senden ist, wie etwa die Nachricht ml aus Tabelle 1, beginnt die Tx_func() 70 in dem Kästchen 72. In dem Kästchen 74 verwendet die Tx_func() 70 die Nachrichtenkennung, _id, und die Bestimmung, _dst, um eine Signalliste und eine Zählung, _cnt, zu erfassen. Der Windex (d. h. der Schreib-Index) des Sendepuffers 60 wird erfasst und verwendet, um die Nachrichtenkennung und die Zählung in dem Kästchen 76 zu schreiben. In dem Kästchen 78 werden die Signaldaten von den Variablen, bei dem Beispiel der Nachricht m1 den Variablen V1, V3 und V8, in den Sendepuffer 60 kopiert. An der Entscheidungsraute 80 bestimmt die Tx_func() 70, ob alle Signaldaten von den Variablen V1, V2 und V8 erfolgreich kopiert wurden. Wenn ja, werden der Windex und die Zählung in dem Kästchen 82 aktualisiert. Wenn nein, kehrt die Tx_func() 70 zu dem Kästchen 78 zurück, um die Daten der Variablen neu zu kopieren. Sobald der Windex und die Zählung in dem Kästchen 82 aktualisiert wurden, endet die Tx_func() 70 in dem Kästchen 84. Die Tx_func() 70 wird jedes Mal aufgerufen, wenn das ablauffähige Element ausgeführt wird. 3 is a flowchart of Tx_func () 70 , which is a function of the sending core / processor 30 is. If there is a message generated by the executable element running at a particular frequency and by the sending core / processor 30 via interprocess communications, such as the ml message from Table 1, the Tx_func () begins 70 in the box 72 , In the box 74 uses the Tx_func () 70 the message identifier, _id, and the determination, _dst, to capture a signal list and a count, _cnt. The Windex (ie the write index) of the send buffer 60 is captured and used to identify the message identifier and count in the box 76 to write. In the box 78 the signal data from the variables, in the example of the message m1 the variables V1, V3 and V8, in the send buffer 60 copied. At the decision diamond 80 determines the Tx_func () 70 whether all signal data from variables V1, V2 and V8 have been successfully copied. If so, the Windex and the count will be in the box 82 updated. If not, the Tx_func () returns 70 to the box 78 back to re-copy the data of the variable. Once the Windex and the count in the box 82 were updated, the Tx_func () ends 70 in the box 84 , The Tx_func () 70 is called every time the executable is executed.

4 ist ein Ablaufdiagramm der Tx_task()-Funktion 90. Der Tx_task() 90 ist ein periodischer Arbeitsschritt, der die Nachrichten aus dem Sendepuffer entnimmt und sie auf der Kommunikationsverbindung 50, wie etwa einem Bus, sendet. In dem Kästchen 92 beginnt der Tx_task() 90. Der Rindex (d. h. der Lese-Index) des Sendepuffers 60 wird in dem Kästchen 94 erfasst. Der Tx_task() 90 bestimmt an der Entscheidungsraute 96, ob eine neue Nachricht in dem Puffer 60 vorliegt. Wenn nein, endet der Tx_task() 90 in dem Kästchen 110. Falls eine neue Nachricht in dem Puffer 60 vorliegt, wird die Nachricht zusammengestellt, um den Header und die _chksum hinzuzufügen, und die Nachricht wird über eine Interprozessor-Kommunikation in dem Kästchen 98 gesendet. Sobald die Nachricht gesendet wurde, wird der Rindex des Puffers 60 in dem Kästchen 100 aktualisiert, und der Tx_task() 90 kehrt zur Entscheidungsraute 96 zurück, um zu bestimmen, ob sich eine andere neue Nachricht in dem Puffer 60 befindet. 4 is a flow chart of the Tx_task () function 90 , The Tx_task () 90 is a periodic step that extracts the messages from the send buffer and them on the communication link 50 , such as a bus, sends. In the box 92 starts the Tx_task () 90 , The Rindex (ie the read index) of the send buffer 60 will be in the box 94 detected. The Tx_task () 90 determined at the decision diamond 96 whether a new message in the buffer 60 is present. If not, the Tx_task () ends 90 in the box 110 , If there is a new message in the buffer 60 If the message is present, the message is put together to add the header and the _chksum, and the message is sent through an interprocessor communication box 98 Posted. Once the message has been sent, the Rindex of the buffer becomes 60 in the box 100 updated, and the Tx_task () 90 returns to the decision diamond 96 back to determine if there is another new message in the buffer 60 located.

5 ist ein Ablaufdiagramm einer Rx_interrupt() 112, die Nachrichten von der physischen Interprozessor-Kommunikationsverbindung 50 in den Empfangspuffer des Zielprozessors kopiert. In dem Kästchen 114 wird die Rx_interrupt() 112 durch die Ankunft einer Nachricht ausgelöst. In dem Kästchen 116 wird der Nachrichten-Header gelesen. Die Rx_interrupt 112 bestimmt an der Entscheidungsraute 118, ob dies eine gültige Nachricht ist, basierend auf der lokal gespeicherten Empfangstabelle. Die Überprüfung der gültigen Nachricht umfasst das Bestimmen, ob eventuelle nicht übereinstimmende Header-Informationen (_sync, _id, _src, _dst, _cnt, _hdr_chksum) eine gewisse Verfälschung angeben, die zu einem Verwerfen der Nachricht führt, wenn nicht übereinstimmende Header-Informationen vorhanden sind. Falls eine gültige Nachricht vorliegt, wird der Windex (d. h. der Schreib-Index) des Empfangspuffers 62 in dem Kästchen 120 erfasst und die Nachricht wird in dem Kästchen 122 mit den Nachrichtenkennungsinformationen in den Puffer 62 geschrieben. An der Entscheidungsraute 124 bestimmt die Rx_interrupt 112, ob die Daten verfälscht sind. Falls die Daten verfälscht sind, oder falls es sich nicht um eine gültige Nachricht handelte, die in der Empfangstabelle konfiguriert ist, an der Entscheidungsraute 118, wird die Nachricht in dem Kästchen 126 verworfen und die Anwendung wird benachrichtigt, so dass die Anwendung kann bestimmen, welche Maßnahmen zu treffen sind. Falls die Daten an der Entscheidungsraute 124 nicht verfälscht sind, wird der Windex des Empfangspuffers 62 in dem Kästchen 128 aktualisiert. An der Entscheidungsraute 130 bestimmt die Rx_interrupt 112, ob eine andere Nachricht über Interprozessor-Kommunikationen empfangen wurde. Wenn ja, kehrt die Rx_interrupt 112 zu dem Kästchen 116 zurück, um den Nachrichten-Header dieser Nachricht zu lesen. Falls keine andere Nachricht empfangen wurde, endet die Rx_interrupt 112 in dem Kästchen 132. 5 is a flow chart of a Rx_interrupt () 112 receiving messages from the physical interprocessor communication link 50 copied to the receive buffer of the destination processor. In the box 114 will the Rx_interrupt () 112 triggered by the arrival of a message. In the box 116 the message header is read. The Rx_interrupt 112 determined at the decision diamond 118 whether this is a valid message based on the locally stored receive table. Verification of the valid message includes determining whether any mismatched header information (_sync, _id, _src, _dst, _cnt, _hdr_chksum) indicates some corruption that results in discarding the message if there is mismatched header information , If there is a valid message, then Windex (ie the write index) of the receive buffer 62 in the box 120 recorded and the message is in the box 122 with the message ID information in the buffer 62 written. At the decision diamond 124 determines the Rx_interrupt 112 whether the data is corrupted. If the data is corrupted, or if it was not a valid message configured in the receive table, at the decision diamond 118 , the message will be in the box 126 Discarded and the application is notified so that the application can determine what action to take. If the data at the decision diamond 124 are not distorted, the Windex of the receiving buffer 62 in the box 128 updated. At the decision diamond 130 determines the Rx_interrupt 112 whether another message about interprocessor communications has been received. If so, the Rx_interrupt returns 112 to the box 116 back to read the message header of this message. If no other message has been received, the Rx_interrupt ends 112 in the box 132 ,

6 ist ein Ablaufdiagramm der Rx_task()-Funktion 134, welche die Nachrichten parst, die in dem Empfangspuffer empfangen werden, und die Signaldaten in eine Nachricht für die geeignete Variable kopiert. Der Rx_task() 134 ist ein periodischer Arbeitsschritt, der abläuft. Der Rx_task() 134 beginnt in dem Kästchen 136 und erfasst den Rindex (d. h. den Lese-Index) des Empfangspuffers 62 in dem Kästchen 138. Der Rx_task() 134 bestimmt an der Entscheidungsraute 140, ob eine neue Nachricht in dem Puffer 62 vorliegt. Wenn nein, endet der Rx_task() 134 in dem Kästchen 148. Wenn ja, wird eine Signalliste aus einer Empfangstabelle, wie etwa der Tabelle 2, in dem Kästchen 142 erfasst, und die Nachricht wird decodiert, und die Signaldaten werden in dem Kästchen 144 in die geeigneten Variablen kopiert. Sobald das Kopieren der Signaldaten in dem Kästchen 144 beendet ist, wird der Rindex des Puffers 62 aktualisiert und der Rx_task() 134 kehrt zur Entscheidungsraute 140 zurück, um zu bestimmen, ob sich eine andere neue Nachricht in dem Puffer 62 befindet. 6 is a flow chart of the Rx_task () function 134 which parses the messages received in the receive buffer and copies the signal data into a message for the appropriate variable. The Rx_task () 134 is a periodic step that expires. The Rx_task () 134 starts in the box 136 and detects the Rindex (ie the read index) of the receive buffer 62 in the box 138 , The Rx_task () 134 determined at the decision diamond 140 whether a new message in the buffer 62 is present. If not, the Rx_task () ends 134 in the box 148 , If so, a signal list from a reception table, such as Table 2, in the box 142 and the message is decoded, and the signal data is in the box 144 copied into the appropriate variables. Once copying the signal data in the box 144 is finished, the Rindex of the buffer 62 updated and the Rx_task () 134 returns to the decision diamond 140 back to determine if there is another new message in the buffer 62 located.

7 ist eine Abbildung eines Beispiels 200, wie vier ablauffähige Elemente, ein ablauffähiges Element R1 in dem Kästchen 202, ein ablauffähiges Element R2 in dem Kästchen 204, ein ablauffähiges Element R3 in dem Kästchen 206 und ein ablauffähiges Element R4 in dem Kästchen 208 miteinander kommunizieren. Jeder Kreis in 7 ist eine Datenkommunikation, die von einem ablauffähigen Element zum anderen gesendet wird. Jede Datenkommunikation umfasst Variablen, die von einem ablauffähigen Sende-Element geschrieben werden und von einem ablauffähigen Empfangs-Element gelesen werden. Die Datenkommunikationen 210 und 212 sind Kommunikationen, die jeweils die Variablen V12a und V12b umfassen, die jeweils eine Größe 6 und 4 aufweisen, und die von dem ablauffähigen Element R1 alle 5 Millisekunden geschrieben werden und an das ablauffähige Element R2 gesendet werden. Die Datenkommunikation 214 ist eine Datenkommunikation, welche die Variable V13 umfasst, die eine Größe von 4 aufweist und die von dem ablauffähigen Element R1 alle 5 Millisekunden geschrieben und an das ablauffähige Element R3 als Nachricht m1 gesendet wird. Die Datenkommunikationen 216 und 218 sind Kommunikationen, die jeweils die Variablen V23a und V23b umfassen, die jeweils eine Größe 6 und 4 aufweisen, und die von dem ablauffähigen Element R2 alle 10 Millisekunden geschrieben werden und an das ablauffähige Element R3 als Nachricht m2 gesendet werden. Die Datenkommunikation 220 ist eine Datenkommunikation, welche die Variable V24 umfasst, die eine Größe von 2 aufweist und die von dem ablauffähigen Element R2 alle 10 Millisekunden geschrieben und an das ablauffähige Element R4 als Nachricht m3 gesendet wird. 7 is a picture of an example 200 like four drainable elements, a drainable element R1 in the box 202 , an executable element R2 in the box 204 , an executable element R3 in the box 206 and an executable element R4 in the box 208 communicate with each other. Each circle in 7 is a data communication that is sent from one executable element to another. Each data communication includes variables that are written by an executable transmit element and read by an executable receive element. The data communications 210 and 212 are communications each comprising variables V12a and V12b, each having a size of 6 and 4, which are written by the executable element R1 every 5 milliseconds and sent to the executable element R2. The data communication 214 is a data communication comprising the variable V13 which has a size of 4 and which is written by the executable element R1 every 5 milliseconds and sent to the executable element R3 as message m1. The data communications 216 and 218 are communications each comprising the variables V23a and V23b, each having a size of 6 and 4, and written by the executable element R2 every 10 milliseconds and sent to the executable element R3 as message m2. The data communication 220 is a data communication comprising the variable V24 which has a size of 2 and which is written by the executable element R2 every 10 milliseconds and sent to the executable element R4 as message m3.

8 eine Abbildung eines Controllers 230, der die ablauffähigen Elemente R1, R2, R3 und R4 umfasst, die zuvor in 7 beschrieben wurden. Die ablauffähigen Elemente R1, R2, R3 und R4 sind auf drei Kerne/Prozessoren verteilt, wobei die Bezugszeichen von 7 verwendet werden, um sich auf die gleichen Elemente in 8 zu beziehen. Ein erster Prozessor 232 umfasst das ablauffähige Element R1 in dem Kästchen 202 und das ablauffähige Element R2 in dem Kästchen 204. Ein zweiter Prozessor 234 umfasst das ablauffähige Element R3 in dem Kästchen 206, und ein dritter Prozessor 236 umfasst das ablauffähige Element R4 in dem Kästchen 208. Tabellen und Puffer für jeden der Prozessoren 232, 234 und 236 werden zum Zeitpunkt der Konfiguration des Controllers 230 generiert. Gemäß diesem Beispiel ist eine Empfangstabelle 240 des ersten Prozessors 232 leer, weil keine Nachrichten an den ersten Prozessor 232 gesendet werden. Ähnlich ist die Größe eines Empfangspuffers 242 gleich null, weil keine Nachrichten empfangen werden. 8th an illustration of a controller 230 comprising the executable elements R1, R2, R3 and R4 previously described in U.S. Pat 7 have been described. The executable elements R1, R2, R3 and R4 are distributed on three cores / processors, wherein the reference numerals of 7 used to refer to the same elements in 8th to acquire. A first processor 232 includes the executable element R1 in the box 202 and the executable element R2 in the box 204 , A second processor 234 includes the drainable element R3 in the box 206 , and a third processor 236 includes the drainable element R4 in the box 208 , Tables and buffers for each of the processors 232 . 234 and 236 be at the time of configuring the controller 230 generated. According to this example, there is a reception table 240 of the first processor 232 empty, because no messages to the first processor 232 be sent. Similarly, the size of a receive buffer 242 zero, because no messages are received.

Eine Sendetabelle 244 umfasst alle Nachrichten, die von einem Sendepuffer 246 aus dem Prozessor 232 gesendet werden. Somit enthält die Sendetabelle 244 die Informationen der Tabelle 3: msg_id dst cnt size V-Liste m1 p2 1 4 V13 m2 P2 1 6 + 4 V23_a, V23_b m3 p3 1 2 V24 Tabelle 3 Wie in Tabelle 3 gezeigt, sendet der Sendepuffer 246 die Datenkommunikation 214 von dem ablauffähigen Element R1 als m1 und sendet auch die Datenkommunikationen 216, 218 als m2 und die Datenkommunikation 220 von dem ablauffähigen Element R2 als m3. Die Periode von Tx_task des Sendepuffers 246 ist alle 10 Millisekunden, und die Nachrichten-Header-Größe ist 10, d. h. die Gesamtgröße der Felder neben der Datennutzlast ist 10. Unter Verwendung der obigen Gleichung (1) wird die Größe des Sendepuffers 246 mit 2·(10 + 4) + (10 + 6 + 4) + (10 + 2) = 60 berechnet. Sobald der Sendepuffer 246 die Nachrichten m1, m2 und m3 schreibt, welche die geeigneten Datenkommunikationen enthalten, werden die Nachrichten m1 und m2 an den zweiten Prozessor 234 gesendet, und die Nachricht m3 wird an den dritten Prozessor 236 gesendet. Da die Nachricht m1 von dem ablauffähigen Element R2 stammt, werden zwei Nachrichten m1 erstellt (eine alle 5 Millisekunden), wenn der Sendepuffer 246 schreibt (was alle 10 Millisekunden erfolgt).A transmission table 244 includes all messages coming from a send buffer 246 from the processor 232 be sent. Thus, the transmission table contains 244 the information in Table 3: msg_id dst cnt size V-List m1 p2 1 4 V13 m2 P2 1 6 + 4 V23_a, V23_b m3 p3 1 2 V24 Table 3 As shown in Table 3, the send buffer sends 246 the data communication 214 from the executable element R1 as m1 and also sends the data communications 216 . 218 as m2 and the data communication 220 from the executable element R2 as m3. The period of Tx_task of the send buffer 246 is every 10 milliseconds, and the message header size is 10, ie the total size of the fields next to the data payload is 10. Using equation (1) above, the size of the send buffer becomes 246 calculated as 2 x (10 + 4) + (10 + 6 + 4) + (10 + 2) = 60. Once the send buffer 246 When the messages m1, m2 and m3 which contain the appropriate data communications are written, the messages m1 and m2 are sent to the second processor 234 sent, and the message m3 is sent to the third processor 236 Posted. Since the message m1 is from the executable element R2, two messages m1 are created (one every 5 milliseconds) when the send buffer 246 writes (which is done every 10 milliseconds).

Der zweite Prozessor 234 umfasst einen Empfangspuffer 250, der ankommende Datenkommunikationen empfängt, und eine Empfangstabelle 252, welche die Informationen der Tabelle 4 enthält: msg_id src cnt size V-Liste m1 P1 1 4 V13 m2 P1 1 6 + 4 V23_a, V23_b Tabelle 4 Gemäß diesem Beispiel weist ein Sendepuffer 254 des zweiten Prozessors 234 eine Größe von null auf, und eine Sendetabelle 256 ist leer, weil der zweite Prozessor 234 keine Datenkommunikationen sendet. Der Lesearbeitsschritt Rx_task des Empfangspuffers 250 erfolgt alle 10 Millisekunden. Unter Verwendung der obigen Gleichung (2) wird somit die Größe des Empfangspuffers 250 mit 2·(10 + 4) + (10 + 6 + 4) = 48 berechnet, wobei man wieder davon ausgeht, dass die Header-Größe 10 ist.The second processor 234 includes a receive buffer 250 receiving incoming data communications and a receive table 252 containing the information in Table 4: msg_id src cnt size V-List m1 P1 1 4 V13 m2 P1 1 6 + 4 V23_a, V23_b Table 4 According to this example, a send buffer 254 of the second processor 234 a size of zero, and a send table 256 is empty, because the second processor 234 does not send any data communications. The read operation step Rx_task of the receive buffer 250 occurs every 10 milliseconds. Thus, using the above equation (2), the size of the receiving buffer becomes 250 Calculated with 2 · (10 + 4) + (10 + 6 + 4) = 48, again assuming that the header size 10 is.

Der dritte Prozessor 236 empfängt die Nachricht m3, welche die Datenkommunikation 220 von dem ablauffähigen Element R2 des ersten Prozessors 232 umfasst. Ein Empfangspuffer 260 empfängt die Nachricht m1, und eine Empfangstabelle 262 enthält die Informationen, die in Tabelle 5 gezeigt werden: msg_id src cnt size V-Liste m3 p1 1 2 V24 Tabelle 5 Ein Sendepuffer 264 des dritten Prozessors 236 weist eine Größe von null auf, und eine Sendetabelle 266 ist leer, weil der dritte Prozessor 236 gemäß diesem Beispiel keine Datenkommunikationen sendet.The third processor 236 receives the message m3 indicating the data communication 220 from the executable element R2 of the first processor 232 includes. A receive buffer 260 receives the message m1, and a reception table 262 contains the information shown in Table 5: msg_id src cnt size V-List m3 p1 1 2 V24 Table 5 A send buffer 264 of the third processor 236 has a size of zero, and a send table 266 is empty, because the third processor 236 according to this example does not send any data communications.

Die zuvor beschriebene 8 bildet vier ablauffähige Elemente auf drei Prozessoren ab. Diese Konfiguration ist eine Option, die auf Wunsch geändert werden kann.The previously described 8th maps four executable elements on three processors. This configuration is an option that can be changed if desired.

9 ist eine Abbildung eines Controllers 300, der die ablauffähigen Elemente R1, R2, R3 und R4, die zuvor in 7 beschrieben wurden, in einer anderen Konfiguration umfasst, so dass die ablauffähigen Elemente R1, R2, R3 und R4 auf zwei statt auf drei Prozessoren verteilt sind, wie in 8 gezeigt. Die Bezugszeichen sind die gleichen für ähnliche Elemente, die in 7 und 8 gezeigt werden. Ein erster Prozessor 302 umfasst das ablauffähige Element R1 in dem Kästchen 202 und das ablauffähige Element R4 in dem Kästchen 208. Ein zweiter Prozessor 304 umfasst das ablauffähige Element R2 in dem Kästchen 204 und das ablauffähige Element R3 in dem Kästchen 206. Gemäß diesem Beispiel empfängt ein Empfangspuffer 306 die Datenkommunikationen 210, 212 und 214 von dem ablauffähigen Element R1 in einer Nachricht m1, und ein Sendepuffer 310 sendet die Datenkommunikation 220 von dem zweiten Prozessor 304 an den ersten Prozessor 302 in einer Nachricht m3. Ein Empfangspuffer 318 des ersten Prozessors weist eine Periode von Rx_task von 30 Millisekunden auf und empfängt die Datenkommunikationen 220 der Nachricht m1. 9 is an illustration of a controller 300 containing the executable elements R1, R2, R3 and R4, previously described in U.S. Pat 7 in another configuration, such that the executable elements R1, R2, R3 and R4 are distributed on two instead of three processors, as in FIG 8th shown. The reference numerals are the same for similar elements shown in FIG 7 and 8th to be shown. A first processor 302 includes the executable element R1 in the box 202 and the drainable element R4 in the box 208 , A second processor 304 includes the executable element R2 in the box 204 and the drainable element R3 in the box 206 , According to this example, a receive buffer receives 306 the data communications 210 . 212 and 214 from the executable element R1 in a message m1, and a send buffer 310 sends the data communication 220 from the second processor 304 to the first processor 302 in a message m3. A receive buffer 318 of the first processor has a period of Rx_task of 30 milliseconds and receives the data communications 220 the message m1.

Die Sendetabelle 316 des ersten Prozessors 302 enthält die Informationen, die in der Tabelle 6 gezeigt werden: msg_id dst cnt size V-Liste m1 p2 1 4 + 2 + 4 V13, V12_a, V12_b Tabelle 6 The transmission table 316 of the first processor 302 contains the information shown in Table 6: msg_id dst cnt size V-List m1 p2 1 4 + 2 + 4 V13, V12_a, V12_b Table 6

Basierend auf den Informationen über die Nachrichtengröße, wie in der Tabelle 6 gezeigt, und unter der Annahme, dass die Header-Größe 10 ist, so dass die obige Gleichung (1) verwendet wird, wird die Größe des Sendepuffers 314 berechnet, um = (10 + 10) = 20 zu sein, weil bei diesem Beispiel das ablauffähige Element R1 alle 5 ms läuft und der Tx_task ebenfalls alle 5 ms läuft.Based on the message size information as shown in Table 6, and assuming that the header size 10 is, so that the above equation (1) is used, the size of the transmission buffer 314 calculated to be = (10 + 10) = 20, because in this example the executable element R1 runs every 5 ms and the Tx_task also runs every 5 ms.

Da bei diesem Beispiel der erste Prozessor 302 Nachrichten empfängt, ist der Empfangspuffer 318 nicht gleich null und die Empfangstabelle 320 ist nicht leer. Stattdessen enthält die Empfangstabelle 320 die Informationen, die in der Tabelle 7 gezeigt werden: msg_id src cnt size V-Liste m3 p2 1 2 v24 Tabelle 7 As in this example, the first processor 302 Receive messages is the receive buffer 318 not equal to zero and the reception table 320 is not empty. Instead, the reception table contains 320 the information shown in Table 7: msg_id src cnt size V-List m3 p2 1 2 v24 Table 7

Wie in der Tabelle 7 gezeigt, ist die Nachrichtengröße gleich 2. Die Arbeitsschrittfrequenz des Empfangspuffers 318 beträgt 30 Millisekunden, wohingegen die Arbeitsschrittfrequenz des Sendepuffers 310 10 Millisekunden beträgt. Somit werden in dem Empfangspuffer 318 3 Nachrichten eingerichtet, bevor die Nachrichten gelesen werden. Wenn man wieder davon ausgeht, dass die Header-Größe 10 ist, wird die Größe des Empfangspuffers 318 unter Verwendung der obigen Gleichung (2) mit = 3·(10 + 2) = 36 berechnet.As shown in Table 7, the message size is equal to 2. The processing frequency of the receive buffer 318 is 30 milliseconds, whereas the processing frequency of the send buffer 310 10 milliseconds. Thus, in the receive buffer 318 3 messages set up before the messages are read. If one again assumes that the header size 10 is, the size of the receiving buffer becomes 318 calculated using the above equation (2) with = 3 * (10 + 2) = 36.

In dem zweiten Prozessor 304 enthält die Empfangstabelle 308 des zweiten Prozessors 304 die Informationen, die in der Tabelle 8 gezeigt werden. Die Größe des Empfangspuffers 306 wird unter Verwendung der obigen Gleichung (2) berechnet, d. h. = 2·(10 + 10) = 40, weil die Nachricht m1 von der Kommunikationsverbindung 50 alle 5 ms ankommt, wohingegen der Rx_task auf dem zweiten Prozessor 304 alle 10 ms läuft. Somit umfasst die Tabelle 8: msg_id src cnt size V-Liste m1 p1 1 10 V13, V12_a, V12_b Tabelle 8 In the second processor 304 contains the reception table 308 of the second processor 304 the information shown in Table 8. The size of the receive buffer 306 is calculated using equation (2) above, ie = 2 * (10 + 10) = 40, because the message m1 is from the communication link 50 The Rx_task arrives on the second processor every 5 ms 304 every 10 ms is running. Thus, Table 8 comprises: msg_id src cnt size V-List m1 p1 1 10 V13, V12_a, V12_b Table 8

Der zweite Prozessor 304 sendet eine Nachricht m3 an den ersten Prozessor 302, wie zuvor angegeben. Somit enthält die Sendetabelle 312 des zweiten Prozessors 304 die Informationen, die in der Tabelle 9 gezeigt werden: msg_id dst cnt size V-Liste m3 p1 1 2 V24 Tabelle 9 The second processor 304 sends a message m3 to the first processor 302 as previously stated. Thus, the transmission table contains 312 of the second processor 304 the information shown in Table 9: msg_id dst cnt size V-List m3 p1 1 2 V24 Table 9

Wie zuvor angegeben, geht man davon aus, dass die Header-Größe gleich 10 ist. Somit wird die Größe des Sendepuffers 310 unter Verwendung der obigen Gleichung (1) berechnet, d. h. = 10 + 2 = 12, weil das ablauffähige Element R2 und der Tx_task auf dem zweiten Prozessor 304 beide alle 10 ms laufen.As indicated previously, it is assumed that the header size is equal to 10. Thus, the size of the send buffer becomes 310 calculated using the above equation (1), ie = 10 + 2 = 12, because the executable element R2 and the Tx_task on the second processor 304 both run every 10 ms.

9 bildet die gleichen ablauffähigen Elemente R1, R2, R3 und R4 gemäß einer anderen Konfiguration ab. Die in 8 gezeigte Konfiguration kann neu konfiguriert werden, um zugeteilt zu werden, wie in 9 gezeigt, indem Tabellen, Puffergrößen und SW-Komponenten ausgetauscht werden, die alle vordefiniert und vorgespeichert sind. Falls beispielsweise der dritte Prozessor 236 in 8 versagt, kann der Controller 232 neu konfiguriert werden, um der Controller 300 zu sein, indem die Tabellen und Puffer derart geändert werden, dass das ablauffähige Element R4 von dem dritten Prozessor 236 zu dem ersten Prozessor 302 verschoben wird und das ablauffähige Element R2 von dem ersten Prozessor 232 zu dem zweiten Prozessor 304 verschoben wird. Das so genannte Verschieben wird dadurch erreicht, dass der Inhalt der Sende- und Empfangstabellen der Prozessoren gegenüber ihrem Inhalt in 8 auf die Sende- und Empfangstabellen aus 9 geändert werden, und indem die Größe der Puffer gegenüber ihrer Beschaffenheit in 8 auf die Größe der Puffer in 9 geändert werden. 9 maps the same executable elements R1, R2, R3 and R4 according to another configuration. In the 8th Configuration shown can be reconfigured to be assigned, as in 9 by exchanging tables, buffer sizes, and SW components, all of which are predefined and pre-stored. For example, if the third processor 236 in 8th failed, the controller can 232 be reconfigured to the controller 300 by changing the tables and buffers so that the executable element R4 from the third processor 236 to the first processor 302 is moved and the executable element R2 from the first processor 232 to the second processor 304 is moved. The so-called shifting is achieved in that the content of the transmit and receive tables of the processors compared to their content in 8th to the send and receive tables 9 be changed, and by changing the size of the buffer against its nature 8th on the size of the buffer in 9 be changed.

Das zuvor beschriebene neu konfigurierbare System und Verfahren ermöglichen eine wirklich parallele Umsetzung von Anwendungen und Komponenten, ohne die Aufstellung kennen zu müssen. Die Bandbreite und der Durchsatz der Zentraleinheit werden dadurch verbessert, dass eine flexible Neuzuteilung des Standorts der Funktionsausführung und der Kommunikationsfrequenz unterstützt wird. Wie zuvor angegeben, erfordern existierende Interprozessor-Kommunikationen in Anbietersystemen einen festen Standort von Anwendungen und übertragen Nachrichten nur mit einer festen Frequenz, die unnötig zusätzliche Bandbreite und Durchsatz verbraucht. Das obige Protokoll stellt eine robuste Kommunikation bereit und ermöglicht eine Unabhängigkeit von Kommunikationsumsetzungen auf niedriger Ebene, die von Anbietern angeschafft werden können.The above-described reconfigurable system and method enable truly parallel implementation of applications and components without having to know the setup. The bandwidth and throughput of the central processing unit are improved by supporting a flexible reallocation of the location of the function execution and the communication frequency. As stated previously, existing interprocessor communications in vendor systems require a fixed location of applications and transmit only fixed frequency messages that unnecessarily consume additional bandwidth and throughput. The above protocol provides robust communication and allows for low level communication implementation independence from vendors.

Wie es der Fachmann sehr wohl verstehen wird, können sich die mehreren und diversen Schritte und Prozesse, die hier besprochen wurden, um die Erfindung zu beschreiben, auf Arbeitsabläufe beziehen, die von einem Computer, einem Prozessor oder einer anderen elektronischen Rechenvorrichtung ausgeführt werden, die Daten unter Verwendung eines elektrischen Phänomens manipuliert und/oder umformt. Derartige Computer und elektronische Vorrichtungen können diverse flüchtige und/oder nicht flüchtige Speicher verwenden, wozu ein nicht vorübergehendes computerlesbares Medium gehört, auf dem ein ausführbares Programm gespeichert ist, das diversen Code oder ausführbare Anweisungen umfasst, die von dem Computer oder Prozessor ausgeführt werden können, wobei der Speicher und/oder das computerlesbare Medium alle Formen und Arten von Speichern und anderen computerlesbaren Medien umfassen kann bzw. können.As those skilled in the art will readily appreciate, the several and various steps and processes discussed herein to describe the invention may refer to operations performed by a computer, processor, or other electronic computing device Data manipulated and / or transformed using an electrical phenomenon. Such computers and electronic devices may utilize various volatile and / or non-volatile memory, including a non-transitory computer-readable medium having stored thereon an executable program comprising various code or executable instructions that may be executed by the computer or processor. wherein the memory and / or the computer-readable medium may comprise all forms and types of memories and other computer-readable media.

Die vorstehende Diskussion offenbart und beschreibt rein beispielhafte Ausführungsformen der vorliegenden Erfindung. Der Fachmann wird aus dieser Diskussion und aus den beiliegenden Zeichnungen und Ansprüchen ohne Weiteres erkennen, dass diverse Änderungen, Modifikationen und Variationen daran vorgenommen werden können, ohne Geist und Umfang der Erfindung, wie sie in den nachstehenden Ansprüchen definiert wird, zu verlassen.The foregoing discussion discloses and describes purely exemplary embodiments of the present invention. One skilled in the art will readily recognize from such discussion and from the accompanying drawings and claims that various changes, modifications and variations can be made therein without departing from the spirit and scope of the invention as defined in the following claims.

Claims (10)

Verfahren für neu konfigurierbare Interprozessor-Kommunikationen in einem Controller, wobei das Verfahren folgende Schritte umfasst: – Bereitstellen mehrerer Prozessoren in dem Controller, wobei die mehreren Prozessoren ablauffähige Elemente des Controllers ausführen; – Codieren eines Protokolls in jeder Nachricht, die von den Prozessoren erstellt wird, wobei das Protokoll zum Senden und Empfangen von Nachrichten von einem Prozessor zum anderen dient; – Bereitstellen eines Sendepuffers für zu sendende Nachrichten und Bereitstellen eines Empfangspuffers für zu empfangende Nachrichten in jedem der Prozessoren; – Bereitstellen einer Sendetabelle und einer Empfangstabelle, die Informationen über Nachrichten in jedem der Prozessoren umfassen; und – Bereitstellen von Infrastrukturdiensten für jeden Prozessor, die das Bestimmen, ob eine Nachricht in einem Empfangspuffer vorliegt, das Vergleichen der empfangenen Nachrichtendaten in der Nachricht mit Daten in der Empfangstabelle, falls eine Nachricht vorliegt, um sicherzustellen, dass die Nachricht richtig empfangen wird, und das Decodieren der Nachricht und das Kopieren der Signaldaten der Nachricht in Variablen auf dem Prozessor, der die Nachricht empfängt, umfassen.A method for reconfigurable interprocessor communications in a controller, the method comprising the steps of: Providing a plurality of processors in the controller, the plurality of processors executing executable elements of the controller; Encoding a protocol in each message created by the processors, the protocol for sending and receiving messages from one processor to another; Providing a send buffer for messages to be sent and providing a receive buffer for messages to be received in each of the processors; Providing a transmit table and a receive table comprising information about messages in each of the processors; and Providing infrastructure services to each processor that determine whether a message is in a receive buffer, comparing the received message data in the message with data in the receive table if there is a message to ensure that the message is received correctly, and decoding the message and copying the message signal data into variables on the processor receiving the message. Verfahren nach Anspruch 1, wobei jeder der Prozessoren mindestens ein ablauffähiges Element umfasst, wobei das ablauffähige Element eine Nachricht generiert und die Nachricht an den Sendepuffer des Prozessors sendet, auf dem das ablauffähige Element funktioniert, wenn das ablauffähige Element eine Datenkommunikation an ein anderes ablauffähiges Element auf einem anderen Prozessor senden muss. The method of claim 1, wherein each of the processors comprises at least one executable element, the executable element generating a message and sending the message to the transmit buffer of the processor on which the executable element operates when the executable element communicates data to another executable element on another processor. Verfahren nach Anspruch 1, wobei jeder von dem Sendepuffer, dem Empfangspuffer, der Sendetabelle und der Empfangstabelle für jeden Prozessor zum Zeitpunkt des Entwurfs des Controllers generiert wird.The method of claim 1, wherein each of the transmit buffer, the receive buffer, the transmit table, and the receive table is generated for each processor at the time of design of the controller. Verfahren nach Anspruch 1, wobei die Größe jedes Puffers unter Verwendung mindestens einer Nachrichten-Header-Größe und einer Nachrichtengröße berechnet wird, so dass jeder Puffer eine geeignete Kapazität aufweist, um Nachrichten zu speichern.The method of claim 1, wherein the size of each buffer is calculated using at least one message header size and a message size such that each buffer has a suitable capacity to store messages. Verfahren nach Anspruch 1, wobei jede Tabelle Informationen über die Nachrichtenidentifizierung, die Nachrichtenbestimmung, die Nachrichtenzählung, die Nachrichtengröße und eine Variablenliste umfasst.The method of claim 1, wherein each table comprises information about message identification, message destination, message count, message size, and a list of variables. Verfahren nach Anspruch 5, ferner umfassend das Neukonfigurieren des Controllers, um die Interprozessor-Kommunikationen dadurch zu ändern, dass der Inhalt von mindestens einer Sendetabelle und einer Empfangstabelle geändert wird.The method of claim 5, further comprising reconfiguring the controller to change the interprocessor communications by changing the contents of at least one of the transmit table and a receive table. Verfahren nach Anspruch 5, ferner umfassend das Vergleichen von Informationen in einer Tabelle mit den Nachrichten-Header-Informationen in einer entsprechenden Nachricht, um zu bestimmen, ob die entsprechende Nachricht verfälscht ist.The method of claim 5, further comprising comparing information in a table with the message header information in a corresponding message to determine if the corresponding message is corrupted. System für neu konfigurierbare Interprozessor-Kommunikationen in einem Controller, wobei das System Folgendes umfasst: – mehrere Prozessoren in dem Controller; – einen Sendepuffer und einen Empfangspuffer, der für jeden der Prozessoren generiert wird, wobei der Sendepuffer verwendet wird, um Nachrichten zu schreiben, zu speichern und zu senden, wobei der Empfangspuffer verwendet wird, um Nachrichten zu lesen, zu speichern und zu kopieren; – eine Sendetabelle und eine Empfangstabelle, die für jeden von den Prozessoren generiert wird, wobei die Sendetabelle Identifizierungsinformationen über Nachrichten speichert, die gesendet werden, und die Empfangstabelle Identifizierungsinformationen über Nachrichten speichert, die empfangen werden; und – Infrastrukturdienste, die in den Controller programmiert sind, wobei die Infrastrukturdienste Protokolle umfassen, um Nachrichten zwischen den Prozessoren in dem Controller zu senden und zu empfangen.A system for reconfigurable interprocessor communications in a controller, the system comprising: Multiple processors in the controller; A send buffer and a receive buffer generated for each of the processors, the send buffer being used to write, store and send messages, the receive buffer being used to read, store and copy messages; A transmission table and a reception table generated for each of the processors, the transmission table storing identification information about messages that are transmitted, and the reception table storing identification information about messages that are received; and Infrastructure services programmed into the controller, the infrastructure services including protocols for sending and receiving messages between the processors in the controller. System nach Anspruch 8, wobei jeder der mehreren Prozessoren mindestens ein ablauffähiges Element umfasst, wobei die ablauffähigen Elemente eine Nachricht generieren und die Nachricht an den Sendepuffer des Prozessors senden, auf dem das ablauffähige Element funktioniert, wenn das ablauffähige Element eine Datenkommunikation an ein anderes ablauffähiges Element auf einem anderen Prozessor senden muss.The system of claim 8, wherein each of the plurality of processors comprises at least one executable element, the executable elements generating a message and sending the message to the transmit buffer of the processor on which the executable element operates when the executable element communicates data to another executable Must send element on another processor. System nach Anspruch 8, wobei jeder von dem Sendepuffer, dem Empfangspuffer, der Sendetabelle und der Empfangstabelle zum Zeitpunkt des Entwurfs generiert wird.The system of claim 8, wherein each of the transmit buffer, the receive buffer, the transmit table, and the receive table is generated at design time.
DE102015108005.2A 2014-05-30 2015-05-20 Mechanisms and devices for newly configurable interprocessor communications with embedded controller Pending DE102015108005A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/291,658 US9378072B2 (en) 2014-05-30 2014-05-30 Mechanisms and apparatus for embedded controller reconfigurable inter-processor communications
US14/291,658 2014-05-30

Publications (1)

Publication Number Publication Date
DE102015108005A1 true DE102015108005A1 (en) 2015-12-03

Family

ID=54481610

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015108005.2A Pending DE102015108005A1 (en) 2014-05-30 2015-05-20 Mechanisms and devices for newly configurable interprocessor communications with embedded controller

Country Status (3)

Country Link
US (1) US9378072B2 (en)
CN (1) CN105302766B (en)
DE (1) DE102015108005A1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9720742B2 (en) * 2014-05-15 2017-08-01 GM Global Technology Operations LLC Service and system supporting coherent data access on multicore controller
CN109299033A (en) * 2017-07-25 2019-02-01 中车株洲电力机车研究所有限公司 A kind of processor interface device and processor data processing method
GB2568806B (en) * 2017-10-02 2022-04-06 Fisher Rosemount Systems Inc I/O virtualization for commissioning
US11456890B2 (en) * 2019-07-16 2022-09-27 Baidu Usa Llc Open and safe monitoring system for autonomous driving platform
US11975714B2 (en) * 2019-11-01 2024-05-07 GM Global Technology Operations LLC Intelligent vehicles with distributed sensor architectures and embedded processing with computation and data sharing

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313578A (en) 1990-12-23 1994-05-17 Motorola, Inc. Portable interprocess communication facility
EP0592080A2 (en) 1992-09-24 1994-04-13 International Business Machines Corporation Method and apparatus for interprocess communication in a multicomputer system
US6601111B1 (en) 1997-01-29 2003-07-29 Palmsource, Inc. Method and apparatus for unified external and interprocess communication
US6226689B1 (en) 1997-01-29 2001-05-01 Microsoft Corporation Method and mechanism for interprocess communication using client and server listening threads
US6874151B1 (en) 1997-07-14 2005-03-29 Microsoft Corp. Interprocess communication mechanism for heterogeneous computer processes
US6334177B1 (en) * 1998-12-18 2001-12-25 International Business Machines Corporation Method and system for supporting software partitions and dynamic reconfiguration within a non-uniform memory access system
US20030208616A1 (en) * 2002-05-01 2003-11-06 Blade Software, Inc. System and method for testing computer network access and traffic control systems
US8001266B1 (en) * 2003-03-31 2011-08-16 Stretch, Inc. Configuring a multi-processor system
US8286188B1 (en) * 2007-04-27 2012-10-09 Marvell Israel (M.I.S.L.) Ltd. Method and apparatus for advanced interprocess communication
EP2017741B1 (en) * 2007-07-06 2017-11-22 Telefonaktiebolaget LM Ericsson (publ) System,processor,apparatus and method for inter-processor communication
US8761190B2 (en) * 2011-01-06 2014-06-24 GM Global Technology Operations LLC Message loss prevention by using sender and receiver buffers in event-triggered distributed embedded real-time systems

Also Published As

Publication number Publication date
CN105302766B (en) 2018-09-25
CN105302766A (en) 2016-02-03
US20150347208A1 (en) 2015-12-03
US9378072B2 (en) 2016-06-28

Similar Documents

Publication Publication Date Title
DE102015108005A1 (en) Mechanisms and devices for newly configurable interprocessor communications with embedded controller
DE102019109672A1 (en) CANCELLATION AFTER PARTIAL FAILURE IN MULTIPLE ELECTRONIC CONTROL UNITS BY OVER THE AIR UPDATE
DE102015117019B4 (en) Serial peripheral interface chain communication with frame-bound response
DE112012006879T5 (en) New Approach to Managing a Controller Area Network Bus-Off
DE112018002334T5 (en) DEVICES AND METHOD FOR TRANSMITTING EVENTS WITH A SAME-SHAPED LATENCY ON SERIAL COMMUNICATION LINKS
DE2747633A1 (en) IT SYSTEM WITH AN INTERRUPTION DEVICE
DE112018003087T5 (en) ON-CHIP NOISE REDUCTION OR REDUCTION OF SUPPLY VOLTAGE USING LOCAL DETECTION LOOPES IN A PROCESSOR CORE
DE112013000812T5 (en) Variable acknowledgment rate for reducing bus conflict in the presence of data transmission errors
DE60305560T2 (en) Embedded system for overload control of broadcast traffic in a communication network
DE102017119065A1 (en) Update a memory
DE10310055A1 (en) Data transfer system used in computer network, interrupts data sector transfer request received from host device, when requested number of data sectors is not evenly divisible by data block size
DE69817852T2 (en) STORAGE PROTECTION SYSTEM FOR A MULTITASKING SYSTEM
DE102020208245A1 (en) Data storage device and data storage program
DE102019217015A1 (en) Communication device
WO2016165683A1 (en) Transmission method and devices for transmitting
DE102016206109A1 (en) Memory direct access control device for at least one memory unit having a memory
DE102016208435A1 (en) In-vehicle network system
DE102018220848A1 (en) relay device
DE102005008778B4 (en) System and method for changing a bus configuration
DE112015007097B4 (en) Transmission control device, vehicle and transmission control method
DE112016005840T9 (en) WIRELESS COMMUNICATION DEVICE, WIRELESS COMMUNICATION PROCESS AND WIRELESS COMMUNICATION PROGRAM
DE102020213323A1 (en) Data processing network for data processing
DE102020214097A1 (en) Device for transmitting data via a bus system and operating method therefor
DE112016004158T5 (en) Buffer control device, communication node and switching device
DE102019218248A1 (en) MEDIATION DEVICE

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: SCHWEIGER, MARTIN, DIPL.-ING. UNIV., DE