DE102018112790A1 - Sichere Doppelpufferung unter Verwendung sicherer verketteter DMA-Listen - Google Patents

Sichere Doppelpufferung unter Verwendung sicherer verketteter DMA-Listen Download PDF

Info

Publication number
DE102018112790A1
DE102018112790A1 DE102018112790.1A DE102018112790A DE102018112790A1 DE 102018112790 A1 DE102018112790 A1 DE 102018112790A1 DE 102018112790 A DE102018112790 A DE 102018112790A DE 102018112790 A1 DE102018112790 A1 DE 102018112790A1
Authority
DE
Germany
Prior art keywords
memory buffer
data
peripheral device
transaction control
dma controller
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
DE102018112790.1A
Other languages
English (en)
Inventor
Simon Cottam
Patrice Woodward
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102018112790A1 publication Critical patent/DE102018112790A1/de
Pending 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

In einigen Ausführungsformen umfasst ein DMA-Controller (224) einen Satz von Transaktionssteuerungsregistern (226), die zum Empfangen einer Folge verketteter Listen von Transaktionssteuerungssätzen (236, 238) konfiguriert sind. Die Transaktionssteuerungssätze (236, 238) beschreiben zusammen eine Datenübertragung, durch welche der DMA-Controller (224) Daten von einem Peripheriegerät (216) abwechselnd zu einem ersten Speicherpuffer (204) und einem zweiten Speicherpuffer (206) verschieben soll, wobei die ersten und zweiten Speicherpuffer (204, 206) an einer Schnittstelle des Peripheriegeräts (216) parallel zueinander angeordnet sind. Der DMA-Controller (224) ist so konfiguriert, dass er einen ersten Satz von Daten vom Peripheriegerät gemäß einem ersten Transaktionssteuerungssatz (236) in der Folge verketteter Listen an den ersten Speicherpuffer (204) überträgt, und so konfiguriert, dass er anschließend einen zweiten Satz von Daten vom Peripheriegerät (216) gemäß einem zweiten Transaktionssteuerungssatz (238) in der Folge verketteter Listen an den zweiten Speicherpuffer (206) überträgt.

Description

  • Für sicherungsbezogene Anwendungen ist es wichtig, zu gewährleisten, dass Mikrocontroller ihre beabsichtigte Funktionalität in allen Phasen der Anwendung korrekt ausführen. Die Ausführung setzt sowohl Korrektheit von Hardware- als auch Softwarekomponenten in Bezug auf ihre Spezifikation und fehlerfreie Ausführung dieser Funktionalität voraus. Im Allgemeinen werden sicherungsbezogene Anwendungen unter Verwendung spezieller Maßnahmen hergestellt, um Systemfehler zu vermeiden und auf mögliche zufällige Hardwarefehler während der Ausführung der Anwendung zu reagieren.
    • 1 stellt ein Blockdiagramm eines Sicherungssystems dar, das einen Aktor, einen Sensor und einen Mikroprozessor umfasst.
    • 2 stellt ein Blockdiagramm eines Sicherungssystems dar, das von einem DMA-Controller mit Doppelpufferung gemäß einigen Ausführungsformen Gebrauch macht.
    • 3 stellt ein Beispiel dessen dar, wie ein DMA-Controller Doppelpufferung während des Betriebs verwenden kann. Der obere Abschnitt von 3 veranschaulicht im Zeitablauf, wie Abtastwerte gespeichert und aus ersten und zweiten Ursprungsspeicherpuffern entleert werden, während der untere Abschnitt von 3 ein entsprechendes Zeitdiagramm darstellt.
    • 4 und 5 veranschaulichen zusammen Datenübertragung in einem Sicherungssystem. 4 veranschaulicht Datenübertragung von einem Ursprungs-Peripheriegerät an erste und zweite Ursprungsspeicherpuffer (4) unter Verwendung sicherer verketteter Listen, und 5 veranschaulicht Datenübertragung von ersten und zweiten Zielspeicherpuffern an ein Ziel-Peripheriegerät unter Verwendung sicherer verketteter Listen.
    • 6 veranschaulicht ein Verfahren zur Datenübertragung in einem Sicherungssystem mit einem DMA-Controller, der Doppelpufferung und sichere verkettete Listen verwendet.
  • Die Beschreibung hierin erfolgt unter Bezugnahme auf die Zeichnungen, wobei im Allgemeinen durchgehend gleiche Bezugszeichen verwendet werden, um gleiche Elemente zu bezeichnen, und wobei die verschiedenen Strukturen nicht unbedingt maßstabsgetreu gezeichnet sind. In der folgenden Beschreibung werden zu Erläuterungszwecken zahlreiche spezifische Details dargelegt, um das Verständnis zu erleichtern. Für einen Durchschnittsfachmann versteht es sich jedoch, dass einer oder mehrere der hierin beschriebenen Aspekte mit einem geringeren Grad dieser spezifischen Details umgesetzt werden können. In anderen Fällen sind bekannte Strukturen und Vorrichtungen in Blockdiagrammform dargestellt, um das Verständnis zu erleichtern.
  • Es versteht sich ferner, dass die Begriffe „erst-“, „zweit-“, „dritt-“ und dergleichen lediglich generische Bezeichnungen sind und weder zeitliche noch räumliche oder andere Beziehungen zwischen verschiedenen Elementen nahelegen. Außerdem können die Begriffe zwischen verschiedenen Ausführungsformen gewechselt werden, derart dass ein „erster“ Speicherpuffer in einer Ausführungsform einem „zweiten“ Speicherpuffer in einer anderen Ausführungsform entsprechen kann, usw.
  • 1 veranschaulicht ein Beispiel eines Sicherungssystems 100, das einen Mikroprozessor 102, einen Aktor 104 und einen Sensor 106 umfasst. Der Mikroprozessor 102 umfasst eine Verarbeitungseinheit 108, erste und zweite Sensor-Speicherpuffer 110, 112 und erste und zweite Aktor-Speicherpuffer 114, 116. Ein Rückführweg 118 koppelt einen Ausgangsanschluss 120 durch den Sensor 106 zurück mit einem Eingangsanschluss 122 eines Komparators oder Addierers 123.
  • Während des Betriebs soll der Aktor 104 eine Bewegungs- oder Steueroperation am Ausgangsanschluss 120 fördern. Idealerweise verfolgt die Bewegungs- oder Steueroperation am Ausgangsanschluss 120 ein an einem zweiten Eingangsanschluss 122 des Addierers 123 bereitgestelltes Referenzeingangssignal genau, derart dass ein Fehlersignal 124, das eine Differenz zwischen dem Referenzeingangssignal und beobachteten Abtastwerten vom Sensor 106 darstellt, Null ist. Solange die Bewegungs- oder Steueroperation am Ausgangsanschluss 120 in Übereinstimmung mit dem Referenzeingangssignal am zweiten Eingangsanschluss 122 bleibt, bleibt demnach die Ausgabe des Aktors 104 konstant, und die beobachteten Abtastwerte vom Sensor 106 entsprechen dem Referenzeingangssignal.
  • Wenn jedoch die beobachteten Abtastwerte zum Beispiel aufgrund einer Störung 126 oder aufgrund einer Änderung des Referenzeingangssignals am zweiten Eingangsanschluss 122 vom Referenzeingangssignal abweichen, wird das Fehlersignal 124 verschieden von Null. Basierend auf diesem von Null verschiedenen Fehlersignal stellt der Mikroprozessor 102 Steuerabtastwerte bereit, die dazu neigen, die Ausgabe des Aktors 104 „abzustimmen“, bis die Ausgabe am Ausgangsanschluss 120 wieder dem Referenzeingangssignal entspricht. Wenn zum Beispiel die Frequenz des Ausgangssignals niedriger als durch das Referenzeingangssignal vorgegeben ist (z. B. aufgrund einer Störung 126 oder einer kürzlichen Änderung des Eingangsreferenzsignals), dann kann das Fehlersignal 124 eine Erhöhung der Frequenz des Ausgangssignals induzieren, bis die Frequenz des Ausgangssignal so ist, wie durch das Referenzeingangssignal vorgegeben. Wenn dagegen die Frequenz des Ausgangssignals höher als durch das Referenzeingangssignal vorgegeben ist, kann das Fehlersignal 124 eine Senkung der Frequenz des Ausgangssignals induzieren.
  • Das System von 1 ist jedoch insofern nicht optimal, als die Verarbeitungseinheit 108 die Speicherpuffer 110 bis 116 fortlaufend verwalten muss, was Systemressourcen verbraucht, die andernfalls anderen Aufgaben gewidmet werden könnten. Wenn die Speicherpuffer „tiefer“ gemacht werden, wird zwar die Dauer der Zeit, während der die Verarbeitungseinheit 108 die Puffer entladen kann, verlängert, aber es ist trotzdem Prozessoraufwand erforderlich. Obwohl tiefere Puffer die Zeit verlängern können, bevor die Speicherpuffer entladen werden können, bedeutet die Tatsache, dass die Speicherpuffer tiefer sind, aber auch, dass, wenn Daten schließlich verschoben werden, die tatsächliche Handlung des Verschiebens der Daten länger dauert, als wenn flachere Speicherpuffer verwendet würden. Wenn der Mikroprozessor 102 überlastet ist, besteht außerdem vielleicht eine gewisse Eventualität, dass ein beobachteter Abtastwert oder ein Steuerabtastwert übersehen werden könnte. Diese Eventualität lässt die Möglichkeit offen, dass vielleicht ein gefährlicher Zustand übersehen werden könnte, und das Sicherungssystem 100 keine geeigneten Sicherungsmaßnahmen gegen solche eine Situation bereitstellt. Somit ist das Sicherungssystem 100 von 1 aus mehreren Gründen nicht ideal.
  • Demgemäß stellen Aspekte der vorliegenden Offenbarung Doppelpuffersysteme und -techniken unter Verwendung sicherer verketteter Direktspeicherzugriffs (DMA)-Listen bereit. In einigen Ausführungsformen umfasst ein DMA-Controller einen Satz von Transaktionssteuerungsregistern, die zum Empfangen einer Folge verketteter Listen von Transaktionssteuerungssätzen konfiguriert sind. Die Transaktionssteuerungssätze beschreiben zusammen eine Datenübertragung, durch welche der DMA-Controller Daten von einem Peripheriegerät abwechselnd zu einem ersten Speicherpuffer und einem zweiten Speicherpuffer verschieben soll, wobei die ersten und zweiten Speicherpuffer an einer Schnittstelle des Peripheriegeräts parallel zueinander angeordnet sind. Der DMA-Controller ist so konfiguriert, dass er einen ersten Teil der Daten vom Peripheriegerät gemäß einem ersten Transaktionssteuerungssatz in der Folge verketteter Listen an den ersten Speicherpuffer überträgt, und so konfiguriert, dass er anschließend einen zweiten Teil der Daten vom Peripheriegerät gemäß einem zweiten Transaktionssteuerungssatz in der Folge verketteter Listen an den zweiten Puffer überträgt. In einigen Ausführungsformen kann ein dritter Transaktionssteuerungssatz, der zwischen den ersten und zweiten Transaktionssteuerungssätzen ist, überprüfen, ob der erste Transaktionssteuerungssatz korrekt ausgeführt wurde. Wenn bestimmt wird, dass der erste Transaktionssteuerungssatz nicht korrekt ausgeführt wurde, stoppt der DMA-Controller die Ausführung der Folge vor der Ausführung des zweiten Transaktionssteuerungssatzes in der Folge. Demnach kann der DMA-Controller zusätzlich dazu, dass der DMA-Controller die Verwaltung der ersten und zweiten Puffer übernimmt, um Ressourcen der Verarbeitungseinheit für andere Aufgaben freizusetzen, auch verbesserte Sicherungsmaßnahmen bereitstellen, welche die Eventualität, dass ein gefährlicher Zustand übersehen wird, begrenzen.
  • 2 veranschaulicht Sicherungssystem 200 gemäß einigen Ausführungsformen. Das Sicherungssystem 200 umfasst einen Mikroprozessor 202, der aus einem ersten und einem zweiten Ursprungsspeicherpuffer (204, 206), einer Verarbeitungseinheit 208 und ersten und zweiten Zielspeicherpuffern (210, 212) besteht. Neben anderen Peripheriegeräten (nicht dargestellt) können auch ein Ursprungs-Peripheriegerät 216, ein Ziel-Peripheriegerät 218, ein Eingabe-/Ausgabe (E-/A)-Modul 220 und ein Interrupt-Controller 222 über einen Systembus 214 mit dem Mikroprozessor 202 gekoppelt sein. In einigen Ausführungsformen kann das Ursprungs-Peripheriegerät 216 als ein Sensor ausgebildet sein, und das Ziel-Peripheriegerät 218 kann als ein Aktor ausgebildet sein, und der Mikroprozessor 202 kann Abtastwerte vom Sensor über die ersten und zweiten Ursprungsspeicherpuffer (204, 206) empfangen und analysieren und ein Steuersignal für den Aktor erzeugen und über die ersten und zweiten Zielspeicherpuffer (210, 212) senden, um in Übereinstimmung mit einem Referenzsignal analog zur Beschreibung in 1 die Kontrolle über den Aktor zu halten.
  • Jeder der Speicherpuffer (204, 206, 210, 212) ist als ein separates Speicherelement, wie beispielsweise ein Schieberegister, ein Durchlauf (FIFO)-Speicher, ein Stapel (LIFO)-Speicher, ein Direktzugriffsspeicher oder eine andere Speichervorrichtung, implementiert. Jeder der Ursprungsspeicherpuffer (204, 206) und Zielspeicherpuffer (210, 212) kann über den Systembus 214 Daten zwischen der Verarbeitungseinheit 208 und einem oder mehreren Peripheriegeräten (z. B. 216, 218, 220) übertragen. Zum Beispiel sind die ersten und zweiten Ursprungsspeicherpuffer (204, 206) parallel zueinander angeordnet und können über den Systembus 214 beobachtete Datenabtastwerte vom Ursprungs-Peripheriegerät 216 empfangen und die beobachteten Datenabtastwerte dann über den Systembus 214 oder über einen ersten internen Mikroprozessorbus 215 an die Verarbeitungseinheit 208 übertragen. Die ersten und zweiten Zielspeicherpuffer (210, 212), die ebenfalls parallel zueinander angeordnet sind, können Steuerabtastwerte von der Verarbeitungseinheit 208 über den Systembus 214 oder über einen zweiten internen Mikroprozessorbus 217 empfangen und die Steuerabtastwerte dann über den Systembus 214 an das Ziel-Peripheriegerät 218 senden.
  • Um effiziente Datenübertragung zwischen jedem der Peripheriegeräte und Speicherpuffer zu bewirken, ist ein DMA-Controller 224 enthalten. Der DMA-Controller 224 umfasst einen Satz von Transaktionssteuerungssatz (TCS - Transaction Control Set)-Registern 226. Der Satz von TCS-Registern 226 umfasst ein Steuerfeld 229, ein Ursprungsadressfeld 230, ein Zieladressfeld 232 und ein Größenfeld 234, die beschreiben, wie ein oder mehr Datenblöcke durch den DMA-Controller 224 übertragen werden sollen. Basierend auf den Informationen im Satz von TCS-Registern 226 kann der DMA-Controller 224 eine oder mehrere Folgen von TCSs aus dem Speicher 228 abrufen, wobei ein Folge von TCSs in einer Struktur verketteter Listen angeordnet ist.
  • Im Beispiel von 2 beschreibt eine erste TCS-Folge 236 insgesamt eine erste Datenübertragung, durch welche der DMA-Controller 224 Daten von einem Ursprungs-Peripheriegerät 216 zu den ersten und zweiten Ursprungsspeicherpuffern (204, 206) verschiebt; und eine zweite TCS-Folge 238 beschreibt insgesamt eine zweite Datenübertragung, durch welche der DMA-Controller 224 Daten von den ersten und zweiten Zielspeicherpuffern (210, 212) zum Ziel-Peripheriegerät 218 verschiebt. Es versteht sich, dass, obwohl das Beispiel von 2 die ersten und zweiten TCS-Folgen (236, 238) so darstellt, dass sie jeweils vier TCSs oder vier „Verkettungen“ enthalten, wobei jede Verkettung auf die nächste nachfolgende Verkettung in der Folge zeigt, eine beliebige Anzahl von TCSs oder „Verkettungen“ in solch einer Folge enthalten sein kann. Es erfolgt nun eine ausführlichere Beschreibung der Funktionsweise der ersten TCS-Folge 236 und der zweiten TCS-Folge 238.
  • In der ersten TCS-Folge 236 spezifiziert jeder im Speicher 228 gespeicherte TCS Steuerinformationen, eine Ursprungsadresse, eine Zieladresse und eine Größe hinsichtlich eines oder mehrerer Datenblöcke, die durch den DMA-Controller 224 übertragen werden sollen. Eine DMA-Operation für die erste TCS-Folge 236 beginnt, wenn die Verarbeitungseinheit 208 den Satz von TCS-Registern 226 mit dem ersten Ursprungs-TCS 240 der ersten TCS-Folge 236 lädt und den DMA-Controller 224 auf die Speicheradresse hinweist, an welcher der erste Ursprungs-TCS-240 gespeichert ist. Im Beispiel von 2 weist der erste Ursprungs-TCS 240 eine Ursprungsadresse, die auf das Ursprungs-Peripheriegerät 216 zeigt, eine Zieladresse, die auf den ersten Ursprungs-Pufferspeicher 204 zeigt, und eine Größe auf, die einer Größe des ersten Ursprungsspeicherpuffers 204 entspricht. Demnach überträgt der DMA-Controller 224 die Größe von Daten von der spezifizierten Ursprungsadresse (z. B. Ursprungs-Peripheriegerät 216) ohne Eingreifen seitens der Verarbeitungsschaltung 208 an die spezifizierte Zieladresse (z. B. den ersten Ursprungsspeicherpuffer 204). Demgemäß überwacht der DMA-Controller 224 bei Laden des ersten Ursprungs-TCSs 240 das Ursprungs-Peripheriegerät 216 und, wenn das Ursprungs-Peripheriegerät 216 Daten aufweist, die bereit sind, liest der DMA-Controller 224 die Daten aus und schreibt die Daten ohne Eingreifen seitens der Verarbeitungseinheit 208 in den ersten Ursprungsspeicherpuffer 204. In einigen Fällen, in welchen die im ersten Ursprungs-TCS 240 spezifizierte Größe gleich wie die des ersten Ursprungsspeicherpuffers 204 ist, verschiebt der DMA-Controller 224 aufeinanderfolgende Datenwörter vom Ursprungs-Peripheriegerät 216 zum ersten Ursprungsspeicherpuffer 204, bis der erste Ursprungsspeicherpuffer 204 voll ist. Wenn der DMA-Controller 224 mit dem Verschieben der Daten, wie im ersten Ursprungs-TCS 240 spezifiziert, fertig ist, identifiziert der DMA-Controller 224 den Speicherort des zweiten Ursprungs-TCSs 242, wobei die Speicheradresse des zweiten Ursprungs-TCSs 242 im ersten Ursprungs-TCS 240 spezifiziert ist.
  • In einigen Fällen kann der zweite Ursprungs-TCS 242 überprüfen, ob der erste Ursprungs-TCS 240 korrekt ausgeführt wurde. Wenn der zweite Ursprungs-TCS bestimmt, dass ein Fehler während der Ausführung des ersten Ursprungs-TCSs 240 auftrat, dann aktiviert der DMA-Controller 224 einen Interrupt, damit die Verarbeitungseinheit 208 eine entsprechende abhilfeschaffende Maßnahme ergreifen kann. Wenn der zweite Ursprungs-TCS 242 dagegen bestätigt, dass der erste Ursprungs-TCS 240 korrekt ausgeführt wurde, dann identifiziert der DMA-Controller 224 den Speicherort des dritten Ursprungs-TCSs 244, wobei der Speicherort des dritten Ursprungs-TCSs 244 im zweiten Ursprungs-TCS 242 spezifiziert ist.
  • Wenn der erste Ursprungs-TCS 240 korrekt ausgeführt wurde (und der zweite Ursprungs-TCS 242 die korrekte Ausführung verifiziert), ist der erste Ursprungsspeicherpuffer 204 voll. Die veranschaulichte erste TCS-Folge 236 sieht dies voraus, und entsprechend spezifiziert der dritte Ursprungs-TCS 244, dass, wenn das Ursprungs-Peripheriegerät 216 nachfolgende Daten aufweist, die zur Auslesung bereit sind, die nachfolgenden Daten aus dem Ursprungs-Peripheriegerät 216 ausgelesen und in den zweiten Ursprungsspeicherpuffer 206 geschrieben werden. Genauer gesagt, lädt der DMA-Controller 224 demnach den dritten Ursprungs-TCS 244, um dadurch eine Ursprungsadresse (hier das Ursprungs-Peripheriegerät 216), eine Zieladresse (hier der zweite Ursprungsspeicherpuffer 206) und eine Datengröße (hier die Größe des zweiten Ursprungsspeicherpuffers 206) zu identifizieren. Der DMA-Controller 224 überwacht wiederum das Ursprungs-Peripheriegerät 216. Wenn das Ursprungs-Peripheriegerät 216 Daten aufweist, die bereit sind, liest der DMA-Controller 224 die Daten aus und schreibt sie ohne Eingreifen seitens der Verarbeitungseinheit 208 in den zweiten Ursprungsspeicherpuffer 206. Während der DMA-Controller 224 Daten vom Ursprungs-Peripheriegerät 216 zum zweiten Ursprungsspeicherpuffer 206 verschiebt, kann die Verarbeitungseinheit 208 Daten vom ersten Ursprungsspeicherpuffer 204 auslesen und analysieren. Während dieser Zeit kann die Verarbeitungseinheit 208 über die ersten und zweiten Zielspeicherpuffer 210, 212 auch Steuerabtastwerte an das Ziel-Peripheriegerät 218 senden, wobei die Steuerabtastwerte auf den analysierten Daten aus dem ersten Ursprungsspeicherpuffer 204 basieren. In einigen Fällen, in welchen die im dritten Ursprungs-TCS 244 spezifizierte Größe gleich wie die des zweiten Ursprungsspeicherpuffers 206 ist, verschiebt der DMA-Controller 224 aufeinanderfolgende Datenwörter vom Ursprungs-Peripheriegerät 216 zum zweiten Ursprungsspeicherpuffer 206, bis der zweite Ursprungsspeicherpuffer 206 voll ist. Wenn der DMA-Controller 224 mit dem Verschieben der Daten, wie im dritten Ursprungs-TCS 244 spezifiziert, fertig ist, identifiziert der DMA-Controller 224 den Speicherort des vierten Ursprungs-TCSs 246, wobei der Speicherort des vierten Ursprungs-TCSs 246 im dritten Ursprungs-TCS 244 spezifiziert ist.
  • In einigen Fällen kann der vierte Ursprungs-TCS 246 überprüfen, ob der dritte Ursprungs-TCS 244 korrekt ausgeführt wurde. Wenn der vierte Ursprungs-TCS 246 bestätigt, dass der dritte Ursprungs-TCS 244 korrekt ausgeführt wurde, dann identifiziert der DMA-Controller 224 den Speicherort des nächsten Ursprungs-TCS (nicht dargestellt), falls vorhanden. Im Beispiel von 2 ist der vierte Ursprungs-TCS 246 die letzte „Verkettung“ in der ersten TCS-Folge 236, und die Steuerinformationen im vierten Ursprungs-TCS 246 geben dies an, und entsprechend kann der DMA-Controller 224 ein erstes Interrupt-Flag setzen, um dem System zu melden, dass die durch die erste TCS-Folge 236 spezifizierte Datenverschiebungsaufgabe abgeschlossen ist. Wenn außerdem der vierte Ursprungs-TCS 246 bestimmt, dass ein Fehler während der Ausführung des dritten Ursprungs-TCSs 244 auftrat, dann aktiviert der DMA-Controller 224 einen zweiten Interrupt, damit die Verarbeitungseinheit 208 eine entsprechende abhilfeschaffende Maßnahme ergreifen kann. Diese Interrupts können separat sein und/oder verschiedene Prioritätsstufen aufweisen, um dem System zu melden, ob der DMA-Controller 224 in einem gültigen Zustand oder einem Fehlerzustand fertiggestellt hat; oder alternativ kann nur ein einziger Interrupt aktiviert werden, aber es können verschiedene Statuswerte in einem Statusregister des DMA-Controllers 224 vorhanden sein, um anzugeben, ob ein Fehlerzustand eintrat oder die Datenübertragung ohne Fehler endete, und der Mikroprozessor 202 bestimmt dies, indem er das Statusregister des DMA-Controllers 224 liest.
  • Es versteht sich, dass, obwohl die erste TCS-Folge 236 vorstehend so veranschaulicht und beschrieben wurde, dass sie vier Ursprungs-TCSs (240-246) enthält, in vielen Fällen wesentlich mehr als vier Ursprungs-TCSs in der ersten TCS-Folge 236 enthalten sein können. In vielen Fällen liest jeder nachfolgende Ursprungs-TCS in der ersten TCS-Folge 236 Daten aus dem Ursprungs-Peripheriegerät 216 aus, aber nachfolgende Ursprungs-TCSs wechseln zwischen dem Schreiben von Daten in den ersten Ursprungsspeicherpuffer 204 und dem zweiten Speicherpuffer 206 ab. Auf diese Weise wird, während der DMA-Controller 224 Daten in einen Ursprungsspeicherpuffer (z. B. 204) schreibt, der andere Ursprungsspeicherpuffer (z. B. 206) eingefroren und/oder von der Verarbeitungsvorrichtung 208 gelesen. Für den nächsten Ursprungs-TCS schreibt der DMA-Controller 224 Daten in den anderen Ursprungsspeicherpuffer (z. B. 206), während der andere Ursprungsspeicherpuffer (z. B. 204) eingefroren und/oder von der Verarbeitungsvorrichtung 208 gelesen wird. Auf diese Weise kann eine Folge von TCSs, die als eine verkettete Liste angeordnet sind, kontinuierlich Daten vom Ursprungs-Peripheriegerät 216 abwechselnd an zwei Ursprungsspeicherpuffer 204, 206 übertragen. In anderen Ausführungsformen können mehr als zwei Ursprungsspeicherpuffer vorhanden sein, und aufeinanderfolgende TCSs oder Verkettungen können reihum in die Ursprungsspeicherpuffer geschrieben werden. Zum Beispiel schreibt ein erster TCS Daten in einen ersten Ursprungsspeicherpuffer, bis der erste Ursprungsspeicher voll ist, dann schreibt ein zweiter TCS Daten in einen zweiten Ursprungsspeicherpuffer, bis der zweite Ursprungsspeicher voll ist, dann schreibt ein dritter TCS Daten in einen dritten Ursprungsspeicherpuffer, bis der dritte Ursprungsspeicher voll ist, und so weiter. Dazwischenliegende TCSs können vor dem Ausführen einer in einem nachfolgenden TCS spezifizierten Datenübertragung wiederum die korrekte Ausführung des vorherigen TCSs verifizieren. Die Funktionalität für Zielspeicherpuffer ist ähnlich.
  • 3 stellt ein detaillierteres Beispiel einiger Ausführungsformen dessen dar, wie der DMA-Controller 224 von 2 während des Betriebs Daten in die ersten und zweiten Ursprungsspeicherpuffer 204, 206 laden kann. Der obere Abschnitt von 3 veranschaulicht im Zeitablauf, wie Abtastwerte gespeichert und aus dem ersten Ursprungsspeicherpuffer 204 und dem zweiten Ursprungsspeicher 206 entfernt werden, während der untere Abschnitt von 3 ein entsprechendes Zeitdiagramm darstellt.
  • Zum Zeitpunkt T0 weist das Ursprungs-Peripheriegerät 216 einen ersten Abtastwert auf, der bereit ist. Um das Verschieben des ersten Abtastwerts aus dem Ursprungs-Peripheriegerät 216 vorzubereiten, lädt der DMA-Controller 224 einen ersten Ursprung-TCS 240 (301) in seinen Satz von TCS-Registern. Im Beispiel von 3 spezifiziert der erste Ursprungs-TCS 240 eine Ursprungsadresse des Ursprungs-Peripheriegeräts 216, eine Zieladresse des ersten Ursprungsspeicherpuffers 204 und eine Größe von vier Abtastwerten (z. B. vier Wörtern, die der Größe des ersten Ursprungsspeicherpuffers entsprechen). Natürlich ist der erste Ursprungsspeicherpuffer 204 in anderen Ausführungsformen häufig wesentlich größer als vier Wörter, zum Beispiel in der Größenordnung von Hunderten von Bytes, Tausenden von Bytes, Millionen von Bytes und so weiter; aber der besseren Verständlichkeit halber sind hier vier Abtastwerte/Wörter veranschaulicht.
  • Zum Zeitpunkt T1 verschiebt der DMA-Controller 224 den ersten Abtastwert vom Ursprungs-Peripheriegerät 216 zum ersten Ursprungsspeicherpuffer 204. Bei jedem Abtastwert, der verschoben wird, behält der DMA-Controller 224 die Gesamtdatengröße im Auge, die für den ersten Ursprungs-TCS 240 verschoben wurde. Demnach wurde zum Zeitpunkt T1 ein Abtastwert verschoben, und die Datengröße von vier Abtastwerten, die verschoben werden sollen, wurde noch nicht erreicht.
  • Nachdem das Ursprungs-Peripheriegerät 216 einen zweiten Abtastwert aufweist, der bereit ist, verschiebt der DMA-Controller 224 zum Zeitpunkt T2 den zweiten Abtastwert zum ersten Ursprungsspeicherpuffer 204. Demnach wurden zum Zeitpunkt T2 zwei Abtastwerte verschoben, und die Datengröße von vier Abtastwerten, die verschoben werden sollen, wurde noch nicht erreicht.
  • Nachdem das Ursprungs-Peripheriegerät 216 einen dritten Abtastwert aufweist, der bereit ist, verschiebt der DMA-Controller 224 zum Zeitpunkt T3 den dritten Abtastwert zum ersten Ursprungsspeicherpuffer 204. Demnach wurden zum Zeitpunkt T3 drei Abtastwerte verschoben, und die Datengröße von vier Abtastwerten, die verschoben werden sollen, wurde noch nicht erreicht.
  • Nachdem das Ursprungs-Peripheriegerät 216 einen vierten Abtastwert aufweist, der bereit ist, verschiebt der DMA-Controller 224 zum Zeitpunkt T4 den vierten Abtastwert zum ersten Ursprungsspeicherpuffer 204. Zu diesem Zeitpunkt bestimmt der DMA-Controller 224, dass die Datengröße von 4 Abtastwerten verschoben wurde, wie durch den ersten Ursprungs-TCS 240 vorgegeben. Daher kann der DMA-Controller 224 zum Zeitpunkt T4 einen Interrupt 302 aktivieren, um der Verarbeitungseinheit 208 zu melden, dass der erste Ursprungsspeicherpuffer 204 voll ist, und die Verarbeitungseinheit 208 kann die im Ursprungsspeicherpuffer 204 gespeicherten Abtastwerte analysieren.
  • Zum Zeitpunkt T5 friert (304) die Verarbeitungseinheit 208 den ersten Ursprungsspeicherpuffer 204 ein und beginnt, auch die im ersten Ursprungsspeicherpuffer 204 gespeicherten Datenabtastwerte zu analysieren (306). Der DMA-Controller 224 kann nun basierend auf den Steuerinformationen im ersten Ursprungs-TCS 240 auch identifizieren, ob die Folge von TCSs einen zweiten TCS umfasst. In diesem Beispiel ist ein zweiter Ursprungs-TCS 242 in der Folge enthalten (wobei durch den ersten Ursprungs-TCS 240 darauf gezeigt wird), so dass der DMA-Controller 224 den zweiten Ursprungs-TCS 242 lädt (308). Im Beispiel von 3 spezifiziert der zweite Ursprungs-TCS 242 eine Ursprungsadresse des Ursprungs-Peripheriegeräts 216 und eine Zieladresse des zweiten Ursprungsspeicherpuffers 206. Der zweite Ursprungsspeicherpuffer 206 weist eine Puffergröße von 4 Abtastwerten auf, und die Datengröße, die im zweiten Ursprungs-TCS 242 spezifiziert ist, beträgt ebenfalls vier Abtastwerte.
  • Zum Zeitpunkt T6 verschiebt der DMA-Controller 224 den fünften Abtastwert vom Ursprungs-Peripheriegerät 216 zum zweiten Ursprungsspeicherpuffer 206. Bei jedem Abtastwert, der verschoben wird, behält der DMA-Controller 224 wieder die Gesamtdatengröße im Auge, die für den zweiten Ursprungs-TCS 242 verschoben wurde. Demnach wurde zum Zeitpunkt T6 ein Abtastwert für den zweiten Ursprungs-TCS 242 verschoben, und die Datengröße von vier Abtastwerten, die verschoben werden sollen, wurde noch nicht erreicht. Die Verarbeitungseinheit 208 fährt während des Zeitpunkts T6 mit dem Analysieren (306) der Abtastwerte im ersten Ursprungsspeicherpuffer 204 fort.
  • Nachdem das Ursprungs-Peripheriegerät 216 einen sechsten Abtastwert aufweist, der bereit ist, verschiebt der DMA-Controller 224 zum Zeitpunkt T7 den sechsten Abtastwert zum zweiten Ursprungsspeicherpuffer 206. Demnach wurden zum Zeitpunkt T7 zwei Abtastwerte für den zweiten Ursprungs-TCS 242 verschoben, und die Datengröße von vier Abtastwerten, die verschoben werden sollen, wurde noch nicht erreicht.
  • Zum Zeitpunkt T8 hat die Verarbeitungseinheit 208 die Analyse der Abtastwerte im ersten Ursprungsspeicherpuffer 204 nun abgeschlossen. Demgemäß richtet die Verarbeitungseinheit 208 den ersten Ursprungsspeicherpuffer 204 zum Beispiel durch Löschen der im ersten Ursprungsspeicherpuffer 204 gespeicherten Abtastwerte für einen anderen Satz von Daten ein (310), die empfangen werden sollen.
  • Nachdem das Ursprungs-Peripheriegerät 216 einen siebten Abtastwert aufweist, der bereit ist, verschiebt der DMA-Controller 224 zum Zeitpunkt T9 den siebten Abtastwert zum zweiten Ursprungsspeicherpuffer 206. Demnach wurden zum Zeitpunkt T9 drei Abtastwerte für den zweiten Ursprungs-TCS 242 verschoben, und die Datengröße von vier Abtastwerten, die verschoben werden sollen, wurde noch nicht erreicht. Demnach fährt der DMA-Controller 224 mit dem Schreiben von Datenabtastwerten in den zweiten Ursprungsspeicherpuffer 206 fort, auch wenn der erste Ursprungsspeicherpuffer 204 wieder zum Beschreiben verfügbar ist.
  • Nachdem das Ursprungs-Peripheriegerät 216 einen vierten Abtastwert aufweist, der bereit ist, verschiebt der DMA-Controller 224 zum Zeitpunkt T10 den vierten Abtastwert zum zweiten Ursprungsspeicherpuffer 206 (nicht dargestellt). Zu diesem Zeitpunkt bestimmt der DMA-Controller 224, dass die Datengröße von 4 Abtastwerten zum zweiten Ursprungsspeicherpuffer 206 verschoben wurde, wie durch den zweiten Ursprungs-TCS 242 vorgegeben. Daher kann der DMA-Controller 224 zum Zeitpunkt T11 einen Interrupt (312) aktivieren, um der Verarbeitungseinheit 208 zu melden, dass der zweite Ursprungsspeicherpuffer 206 voll ist. Der DMA-Controller 224 kann wiederum bestimmen, ob ein anderer Ursprungs-TCS in der Folge vorhanden ist oder ob der zweite Ursprungs-TCS 242 die letzte Verkettung in der Folge war; und mit dem Schreiben von Daten fortfahren, wie im Ursprungs-TCS spezifiziert, und zwischen den ersten und zweiten Ursprungsspeicherpuffern (204, 206) abwechselnd Daten schreiben. Zum Beispiel kann ein dritter Ursprungs-TCS 244 dann Daten vom Ursprungs-Peripheriegerät 216 an den ersten Ursprungsspeicherpuffer 204 übertragen; und anschließend kann ein vierter Ursprungs-TCS Daten vom Ursprungs-Peripheriegerät an den zweiten Ursprungsspeicherpuffer 206 übertragen, wie zuvor in 2 beschrieben.
  • Nunmehr unter Hinwendung zu 4 und 5 sind zusätzliche Darstellungen einiger Ausführungsformen eines Sicherungssystems 400 gemäß der vorliegenden Offenbarung zu sehen. Kurz gesagt stellt 4 das Sicherungssystem 400 dar, während ein DMA-Controller 424 Daten unter Verwendung einer ersten TCS-Folge 436 von einem Ursprungs-Peripheriegerät 416 zu ersten und zweiten Ursprungsspeicherpuffern 404, 406 verschiebt; während 5 das Sicherungssystem 400 darstellt, während der DMA-Controller 424 Daten unter Verwendung einer zweiten TCS-Folge 438 von ersten und zweiten Zielspeicherpuffern 410, 412 zu einem Ziel-Peripheriegerät 418 verschiebt.
  • In 4 und 5 umfasst der DMA-Controller 424 ein Integritätsprüfungsmodul 450, einen Buscontroller 452 und Transaktionssteuerungssatz (TCS)-Register 454. Wie hierin im Einzelnen zu erkennen ist, kann eine DMA-Operation beginnen, wenn die Verarbeitungseinheit 408 TCS-Register 454 mit einem ersten Transaktionssteuerungssatz (TCS) einer Struktur verketteter Listen lädt. Dieser erste TCS spezifiziert eine Ursprungsadresse, eine Zieladresse, eine Größe und Steuerinformation hinsichtlich eines oder mehrerer Blöcke von Daten, die innerhalb eines Speichers 428 übertragen werden sollen, sowie eine Adresse der nächsten Verkettung, falls vorhanden, in der TCS-Folge.
  • In 4 wird der erste Ursprungs-TCS 440 in die TCS-Register 454 geschrieben (siehe Bezugszeichen 1), und der Buscontroller 452 führt dann die durch den ersten Ursprungs-TCS 440 spezifizierte Datenübertragung zum Beispiel durch Auslesen eines oder mehrerer Datenwörter aus dem Ursprungs-Peripheriegerät 416 (siehe Bezugszeichen 2) und Schreiben dieser Wörter in den ersten Ursprungspuffer 404 (siehe Bezugszeichen 3) aus. Während jedes Wort übertragen wird, berechnet das Integritätsprüfungsmodul 450 eine tatsächliche zyklische Redundanzprüfsumme. Diese tatsächliche zyklische Redundanzprüfsumme kann die Form einer tatsächlichen zyklischen Adress-Redundanzprüfsumme (gespeichert in einem Register für tatsächliche Adress-CRC 464) annehmen, die auf den Speicheradressen basiert, auf die durch den DMA-Controller 424 während des Ausführens des ersten Ursprungs-TCS 440 tatsächlich zugegriffen wird. Diese tatsächliche zyklische Redundanzprüfsumme kann auch die Form einer tatsächlichen zyklischen Daten-Redundanzprüfsumme (gespeichert in einem Register für tatsächliche Daten-CRC 466) annehmen, die auf den Daten basiert, die durch den DMA-Controller 424 während des Ausführens des ersten Ursprungs-TCS 440 tatsächlich übertragen werden.
  • Nach dem Übertragen von Daten, die durch den ersten Ursprungs-TCS 440 spezifiziert werden, identifiziert der DMA-Controller 424 den zweiten Ursprungs-TCS 442 (siehe Bezugszeichen 4) basierend auf einem Zeigerfeld 468, das im ersten Ursprungs-TCS 440 enthalten ist. Der DMA-Controller 424 lädt dann den zweiten Ursprungs-TCS 442. Der zweite Ursprungs-TCS 442 definiert eine Operation sicherer verketteter Listen, die verifiziert, dass der erste Ursprungs-TCS 440 korrekt ausgeführt wurde. Konkret umfasst der zweite Ursprungs-TCS 442 eine erwartete zyklische Redundanzprüfsumme 470; und infolgedessen kann Logik 472 im DMA-Controller 424 die erwartete zyklische Redundanzprüfsumme 470 mit der tatsächlichen zyklischen Redundanzprüfsumme (z. B. in 464 oder 466 gespeichert) vergleichen, die für den ersten Ursprungs-TCS 440 berechnet wurde. Wenn die in 464/466 gespeicherte(n) tatsächliche(n) zyklische(n) Redundanzprüfsumme(n) von der bzw. den erwarteten zyklischen Redundanzprüfsumme(n) in 470 verschieden ist/sind, stoppt der DMA-Controller 424 Datenübertragungen und setzt zur Schadensbegrenzung ein Fehler-Flag (z. B. einen Interrupt IRQ). Wenn kein Fehler detektiert wird, identifiziert der DMA-Controller den nächsten Ursprungs-TCS in der ersten TCS-Folge 436 (siehe Bezugszeichen 5) ohne Setzen eines Interrupt-Flags, damit die Verarbeitungseinheit 408 ohne Unterbrechung mit anderen Aufgaben fortfahren kann. Demnach hilft der DMA-Controller 424 durch Vergleichen der tatsächlichen und erwarteten zyklischen Redundanzprüfsummen und Ergreifen entsprechender Sicherungsmaßnahmen, zu gewährleisten, dass der DMA Daten aus der korrekten Ursprungsadresse ausgelesen und Daten in die korrekte Zieladresse geschrieben hat.
  • Der dritte Ursprungs-TCS 444 wird dann in die TCS-Register 454 geschrieben, und der Buscontroller 452 führt die durch den dritten Ursprungs-TCS 444 spezifizierte Datenübertragung zum Beispiel durch Auslesen eines oder mehrerer Datenwörter aus dem Ursprungs-Peripheriegerät 416 (siehe Bezugszeichen 6) und Schreiben dieser Wörter in den zweiten Ursprungspuffer 406 (siehe Bezugszeichen 7) aus. Der erste Ursprungspuffer 404 ist an diesem Punkt typischerweise voll, und wird entsprechend eingefroren, und/oder die Verarbeitungseinheit 408 liest daraus aus. Während jedes Wort vom Ursprungs-Peripheriegerät 416 an den zweiten Ursprungspuffer 406 übertragen wird, berechnet das Integritätsprüfungsmodul 450 eine tatsächliche zyklische Redundanzprüfsumme. Diese tatsächliche zyklische Redundanzprüfsumme kann die Form einer tatsächlichen zyklischen Adress-Redundanzprüfsumme (gespeichert in einem Register für tatsächliche Adress-CRC 464) annehmen, die auf den Speicheradressen basiert, auf die durch den DMA-Controller 424 während des Ausführens des dritten Ursprungs-TCS 444 tatsächlich zugegriffen wird. Diese tatsächliche zyklische Redundanzprüfsumme kann auch die Form einer tatsächlichen zyklischen Daten-Redundanzprüfsumme (gespeichert in einem Register für tatsächliche Daten-CRC 466) annehmen, die auf den Daten basiert, die durch den DMA-Controller 424 während des Ausführens des dritten Ursprungs-TCS 444 tatsächlich übertragen werden.
  • Nach dem Übertragen von Daten, die durch den dritten Ursprungs-TCS 444 spezifiziert werden, identifiziert der DMA-Controller 424 den vierten Ursprungs-TCS 446 (siehe Bezugszeichen 8) basierend auf einem Zeigerfeld, das im dritten Ursprungs-TCS 444 enthalten ist. Der DMA-Controller 424 lädt dann den vierten Ursprungs-TCS 446. Der vierte Ursprungs-TCS 446 definiert eine Operation sicherer verketteter Listen, die verifiziert, dass der dritte Ursprungs-TCS 444 korrekt ausgeführt wurde. Konkret umfasst der vierte Ursprungs-TCS 446 eine erwartete zyklische Redundanzprüfsumme 471; und infolgedessen kann Logik 472 im DMA-Controller 424 die erwartete zyklische Redundanzprüfsumme 471 mit der tatsächlichen zyklischen Redundanzprüfsumme (z. B. in 464 oder 466 gespeichert) vergleichen, die für den dritten Ursprungs-TCS 444 berechnet wurde. Wenn die in 464/466 gespeicherte(n) tatsächliche(n) zyklische(n) Redundanzprüfsumme(n) von der bzw. den erwarteten zyklischen Redundanzprüfsumme(n) in 471 verschieden ist/sind, stoppt der DMA-Controller 424 Datenübertragungen und setzt zur Schadensbegrenzung ein Fehler-Flag (z. B. einen Interrupt IRQ). Wenn kein Fehler detektiert wird, identifiziert der DMA-Controller 424 den nächsten Ursprungs-TCS, falls vorhanden, in der ersten TCS-Folge 436. Demnach hilft der DMA-Controller 424 durch Vergleichen der tatsächlichen und erwarteten zyklischen Redundanzprüfsummen und Ergreifen entsprechender Sicherungsmaßnahmen, zu gewährleisten, dass die Daten exakt verschoben wurden. Wenn der letzte Ursprungs-TCS in der ersten Folge erreicht ist, kann der DMA-Controller 424 einen Interrupt aktivieren, um der Verarbeitungseinheit zu melden, dass die spezifizierte Datenübertragung abgeschlossen ist.
  • In 5 wird der erste Ziel-TCS 441 in die TCS-Register 454 geschrieben (siehe Bezugszeichen 1), und der Buscontroller 452 führt dann die durch den ersten Ziel-TCS 441 spezifizierte Datenübertragung zum Beispiel durch Auslesen eines oder mehrerer Datenwörter aus dem Zielpuffer 410 (siehe Bezugszeichen 2) und Schreiben dieser Wörter in das Ziel-Peripheriegerät 418 (siehe Bezugszeichen 3) aus. Während jedes Wort übertragen wird, berechnet das Integritätsprüfungsmodul 450 eine tatsächliche zyklische Redundanzprüfsumme. Diese tatsächliche zyklische Redundanzprüfsumme kann die Form einer tatsächlichen zyklischen Adress-Redundanzprüfsumme (gespeichert in einem Register für tatsächliche Adress-CRC 464) annehmen, die auf den Speicheradressen basiert, auf die durch den DMA-Controller 424 während des Ausführens des ersten Ziel-TCS 441 tatsächlich zugegriffen wird. Diese tatsächliche zyklische Redundanzprüfsumme kann auch die Form einer tatsächlichen zyklischen Daten-Redundanzprüfsumme (gespeichert in einem Register für tatsächliche Daten-CRC 466) annehmen, die auf den Daten basiert, die durch den DMA-Controller 424 während des Ausführens des ersten Ziel-TCS 441 tatsächlich übertragen werden.
  • Nach dem Übertragen von Daten, die durch den ersten Ziel-TCS 441 spezifiziert werden, identifiziert der DMA-Controller 424 den zweiten Ziel-TCS 443 (siehe Bezugszeichen 4) basierend auf einem Zeigerfeld, das im ersten Ziel-TCS 441 enthalten ist. Der DMA-Controller 424 lädt dann den zweiten Ziel-TCS 443. Der zweite Ziel-TCS 443 definiert eine Operation sicherer verketteter Listen, die verifiziert, dass der erste Ziel-TCS 441 korrekt ausgeführt wurde. Konkret umfasst der zweite Ziel-TCS 443 eine erwartete zyklische Redundanzprüfsumme 473; und infolgedessen kann Logik 472 im DMA-Controller 424 die erwartete zyklische Redundanzprüfsumme 473 mit der tatsächlichen zyklischen Redundanzprüfsumme (z. B. in 464 oder 466 gespeichert) vergleichen, die für den ersten Ziel-TCS 441 berechnet wurde. Wenn die in 464/466 gespeicherte(n) tatsächliche(n) zyklische(n) Redundanzprüfsumme(n) von der bzw. den erwarteten zyklischen Redundanzprüfsumme(n) in 473 verschieden ist/sind, stoppt der DMA-Controller 424 Datenübertragungen und setzt zur Schadensbegrenzung ein Fehler-Flag (z. B. einen Interrupt IRQ). Wenn kein Fehler detektiert wird, identifiziert der DMA-Controller 424 den nächsten Ziel-TCS in der zweiten TCS-Folge 438 (siehe Bezugszeichen 5) ohne Setzen eines Interrupt-Flags, damit die Verarbeitungseinheit 408 ohne Unterbrechung mit anderen Aufgaben fortfahren kann. Zum Beispiel kann die Verarbeitungseinheit mit der Analyse von Daten in den ersten und/oder zweiten Ursprungspuffern 404, 406 fortfahren und/oder Steuerabtastwerte in den zweiten Zielpuffer 412 schreiben, der eingefroren ist. Demnach hilft der DMA-Controller 424 durch Vergleichen der tatsächlichen und erwarteten zyklischen Redundanzprüfsummen und Ergreifen entsprechender Sicherungsmaßnahmen, zu gewährleisten, dass die Daten exakt verschoben wurden.
  • Der dritte Ziel-TCS 445 wird dann in die TCS-Register 454 geschrieben, und der Buscontroller 452 führt die durch den dritten Ziel-TCS 445 spezifizierte Datenübertragung zum Beispiel durch Auslesen eines oder mehrerer Datenwörter aus dem zweiten Zielpuffer 412 (siehe Bezugszeichen 6) und Schreiben dieser Wörter in das Ziel-Peripheriegerät 418 (siehe Bezugszeichen 7) aus. Der erste Zielpuffer 404 wurde an diesem Punkt vollständig ausgelesen oder geleert, und wird entsprechend eingefroren und/oder durch die Verarbeitungseinheit 408 wieder aufgefüllt. Während jedes Wort vom zweiten Zielpuffer 412 an das Ziel-Peripheriegerät 418 übertragen wird, berechnet das Integritätsprüfungsmodul 450 eine tatsächliche zyklische Redundanzprüfsumme. Diese tatsächliche zyklische Redundanzprüfsumme kann die Form einer tatsächlichen zyklischen Adress-Redundanzprüfsumme (gespeichert in einem Register für tatsächliche Adress-CRC 464) annehmen, die auf den Speicheradressen basiert, auf die durch den DMA-Controller 424 während des Ausführens des dritten Ziel-TCSs 445 tatsächlich zugegriffen wird. Diese tatsächliche zyklische Redundanzprüfsumme kann auch die Form einer tatsächlichen zyklischen Daten-Redundanzprüfsumme (gespeichert in einem Register für tatsächliche Daten-CRC 466) annehmen, die auf den Daten basiert, die durch den DMA-Controller 424 während des Ausführens des dritten Ziel-TCSs 445 tatsächlich übertragen werden.
  • Nach dem Übertragen von Daten, die durch den dritten Ziel-TCS 445 spezifiziert werden, identifiziert der DMA-Controller 424 den vierten Ziel-TCS 447 (siehe Bezugszeichen 8) basierend auf einem Zeigerfeld, das im dritten Ziel-TCS 445 enthalten ist. Der DMA-Controller 424 lädt dann den vierten Ziel-TCS 447. Der vierte Ziel-TCS 447 definiert eine Operation sicherer verketteter Listen, die verifiziert, dass der dritte Ziel-TCS 445 korrekt ausgeführt wurde. Konkret umfasst der vierte Ziel-TCS 447 eine erwartete zyklische Redundanzprüfsumme 475; und infolgedessen kann Logik 472 im DMA-Controller 424 die erwartete zyklische Redundanzprüfsumme 475 mit der tatsächlichen zyklischen Redundanzprüfsumme (z. B. in 464 oder 466 gespeichert) vergleichen, die für den dritten Ziel-TCS 445 berechnet wurde. Wenn die in 464/466 gespeicherte(n) tatsächliche(n) zyklische(n) Redundanzprüfsumme(n) von der bzw. den erwarteten zyklischen Redundanzprüfsumme(n) in 475 verschieden ist/sind, stoppt der DMA-Controller 424 Datenübertragungen und setzt zur Schadensbegrenzung ein Fehler-Flag (z. B. einen Interrupt IRQ). Wenn kein Fehler detektiert wird, identifiziert der DMA-Controller 424 den nächsten Ursprungs-TCS, falls vorhanden, in der zweiten TCS-Folge 438. Wenn der letzte Ziel-TCS in der zweiten Folge erreicht ist, kann der DMA-Controller einen Interrupt aktivieren, um der Verarbeitungseinheit zu melden, dass die spezifizierte Datenübertragung abgeschlossen ist.
  • Es versteht sich, dass „zyklische Redundanzprüfsumme“, wie hierin erwähnt, zum Detektieren eines Datenfehlers verwendet werden kann, der in Bits, Wörtern oder anderen Größen von Daten vorhanden sein kann. Der Begriff zyklische Redundanzprüfsumme kann u. a. Fehlerdetektionscodes, Paritätsbit(s) und Hash-Werte umfassen, ohne darauf beschränkt zu sein. In einigen Fällen kann ein Fehlerdetektionscode als ein Fehlerkorrekturcode implementiert sein, wobei die Informationen im Fehlerkorrekturcode nicht nur detektieren, ob ein Fehler vorhanden ist, sondern auch helfen, den Fehler korrigieren.
  • Nunmehr unter Hinwendung zu 6 ist ein Flussdiagramm zu sehen, das ein Verfahren gemäß einigen Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Das Verfahren beginnt bei 602, wenn ein erster DMA-Transaktionssteuerungssatz (TCS1) zum Übertragen beobachteter Abtastwerte von einem Sensor an einen ersten Ursprungsspeicherpuffer verwendet wird. In einigen Fällen spezifiziert der TCS1, dass eine zu übertragende Datengröße gleich wie die Größe des ersten Ursprungsspeicherpuffers ist, derart dass der TCS1 den ersten Ursprungsspeicherpuffer füllt. In einigen Fällen wird ein zweiter Ursprungsspeicherpuffer eingefroren, während der TCS1 ausgeführt wird, und/oder eine Verarbeitungseinheit kann aus dem zweiten Ursprungsspeicherpuffer auslesen, während der TCS1 ausgeführt wird.
  • Bei 604 wird ein zweiter DMA-Transaktionssteuerungssatz (TCS2), auf dessen Basisadresse durch den ersten DMA-Transaktionssteuerungssatz gezeigt wird, verwendet, um zu verifizieren, dass der TCS1 korrekt ausgeführt wurde.
  • Bei 606 wird ein dritter DMA-Transaktionssteuerungssatz (TCS3), auf dessen Basisadresse durch den zweiten DMA-Transaktionssteuerungssatz gezeigt wird, zum Übertragen beobachteter Abtastwerte vom Sensor an einen zweiten Ursprungsspeicherpuffer verwendet. In einigen Fällen spezifiziert der TCS3, dass eine zu übertragende Datengröße gleich wie die Größe des zweiten Ursprungsspeicherpuffers ist, derart dass der TCS3 den zweiten Ursprungsspeicherpuffer füllt. In einigen Fällen wird der erste Ursprungsspeicherpuffer eingefroren, während der TCS3 ausgeführt wird, und/oder eine Verarbeitungseinheit kann aus dem ersten Ursprungsspeicherpuffer auslesen, während der TCS3 ausgeführt wird.
  • Bei 608 wird ein vierter DMA-Transaktionssteuerungssatz (TCS4), auf dessen Basisadresse durch den dritten DMA-Transaktionssteuerungssatz gezeigt wird, verwendet, um zu verifizieren, dass der TCS3 korrekt ausgeführt wurde.
  • Bei 610 wird ein fünfter DMA-Transaktionssteuerungssatz (TCS5) zum Übertragen von Steuerabtastwerten von einem ersten Zielspeicherpuffersensor an ein Ziel-Peripheriegerät verwendet. In einigen Fällen spezifiziert der TCS5, dass eine zu übertragende Datengröße gleich wie die Größe des ersten Zielspeicherpuffers ist, derart dass der TCS5 die gesamten Inhalte des ersten Zielspeicherpuffers zum Ziel-Peripheriegerät verschiebt. In einigen Fällen wird ein zweiter Zielspeicherpuffer eingefroren, während der TCS5 ausgeführt wird, und/oder eine Verarbeitungseinheit kann aus dem zweiten Zielspeicherpuffer auslesen, während der TCS5 ausgeführt wird.
  • Bei 612 wird ein sechster DMA-Transaktionssteuerungssatz (TCS6), auf dessen Basisadresse durch den fünften DMA-Transaktionssteuerungssatz gezeigt wird, verwendet, um zu verifizieren, dass der TCS5 korrekt ausgeführt wurde.
  • Bei 614 wird ein siebter DMA-Transaktionssteuerungssatz (TCS7), auf dessen Basisadresse durch den sechsten DMA-Transaktionssteuerungssatz gezeigt wird, zum Übertragen von Steuerabtastwerten von einem zweiten Zielspeicherpuffer an das Ziel-Peripheriegerät verwendet. In einigen Fällen spezifiziert der TCS7, dass eine zu übertragende Datengröße gleich wie die Größe des zweiten Zielspeicherpuffers ist, derart dass der TCS7 die gesamten Inhalte des zweiten Zielspeicherpuffers zum Ziel-Peripheriegerät verschiebt. In einigen Fällen wird der erste Zielspeicherpuffer eingefroren, während der TCS7 ausgeführt wird, und/oder eine Verarbeitungseinheit kann aus dem ersten Zielspeicherpuffer auslesen, während der TCS7 ausgeführt wird.
  • Bei 616 wird ein achter DMA-Transaktionssteuerungssatz (TCS8), auf dessen Basisadresse durch den siebten DMA-Transaktionssteuerungssatz gezeigt wird, verwendet, um zu verifizieren, dass der TCS7 korrekt ausgeführt wurde.
  • Es versteht sich, dass in der Beschreibung von Ausführungsformen, die hierin enthalten sind, jegliche direkte Verbindung oder Kopplung zwischen Funktionsblöcken, Vorrichtungen, Komponenten, Schaltungselementen oder anderen physikalischen oder funktionellen Einheiten, die in den Zeichnungen dargestellt sind oder hierin beschrieben werden, auch durch eine indirekte Verbindung oder Kopplung, d. h. eine Verbindung oder Kopplung, die eine oder mehrere Zwischenelemente umfasst, implementiert sein könnte. Außerdem versteht es sich, dass Funktionsblöcke oder -einheiten, die in den Zeichnungen dargestellt sind, in einigen Ausführungsformen als separate Schaltungen implementiert sein können, aber in anderen Ausführungsformen auch ganz oder teilweise in einer gemeinsamen Schaltung oder einer gemeinsamen integrierten Schaltung implementiert sein können, oder in einigen Fällen durch entsprechendes Programmieren eines Prozessors auch zusammen implementiert sein können.
  • Es versteht sich, dass die Zeichnungen nur zur Veranschaulichung einiger Aspekte und Merkmale von Ausführungsformen der vorliegenden Erfindung vorgesehen und lediglich als schematisch zu betrachten sind. Insbesondere sind die in den Zeichnungen dargestellten Elemente nicht unbedingt im gleichen Maßstab zueinander, und die Anordnung verschiedener Elemente in den Zeichnungen ist gewählt, um ein klares Verständnis der jeweiligen Ausführungsform zu vermitteln, und soll nicht dahingehend ausgelegt werden, dass sie eine Darstellung der tatsächlichen relativen Position der verschiedenen dargestellten Komponenten und Elemente ist. Die Merkmale der verschiedenen Ausführungsformen, die hierin beschrieben werden, können miteinander kombiniert werden. Andererseits ist die Beschreibung einer Ausführungsform mit einer Mehrzahl von Merkmalen nicht dahingehend auszulegen, dass sie anzeigt, dass alle diese Merkmal zur Umsetzung der vorliegenden Erfindung notwendig sind, da andere Ausführungsformen weniger Merkmale und/oder alternative Merkmale umfassen können.

Claims (20)

  1. Direktspeicherzugriffs (DMA)-Controller (224), umfassend: einen Satz von Transaktionssteuerungsregistern (226), die so konfiguriert sind, dass sie eine Folge von Transaktionssteuerungssätzen (236, 238) empfangen, die in einer verketteten Liste angeordnet sind und die zusammen eine Datenübertragung beschreiben, durch welche der DMA-Controller (224) Daten verschieben soll, wobei die Datenübertragung die Daten von einem Peripheriegerät (216) und abwechselnd zu einem ersten Speicherpuffer (204) und einem zweiten Speicherpuffer (206) verschieben soll, wobei die ersten und zweiten Speicherpuffer (204, 206) an einer Schnittstelle des Peripheriegeräts (216) parallel angeordnet sind; und wobei der DMA-Controller (224) so konfiguriert ist, dass er einen ersten Teil der Daten vom Peripheriegerät (216) gemäß einem ersten Transaktionssteuerungssatz (236) in der Folge (236, 238) an den ersten Speicherpuffer (204) überträgt, und so konfiguriert ist, dass er anschließend einen zweiten Teil der Daten vom Peripheriegerät (216) gemäß einem zweiten Transaktionssteuerungssatz (238) in der Folge (236, 238) an den zweiten Speicherpuffer (206) überträgt.
  2. DMA-Controller (224) nach Anspruch 1, wobei der DMA-Controller (224) so konfiguriert ist, dass er die bei der Datenübertragung zu verschiebenden Daten aus dem Peripheriegerät (216) ausliest und eine erste Anzahl von aufeinanderfolgenden Wörtern der ausgelesenen Daten gemäß dem ersten Transaktionssteuerungssatz in den ersten Speicherpuffer (204) schreibt und anschließend eine zweite Anzahl von aufeinanderfolgenden Wörtern der ausgelesenen Daten gemäß dem zweiten Transaktionssteuerungssatzes in den zweiten Speicherpuffer (206) schreibt.
  3. DMA-Controller (224) nach Anspruch 2, wobei der DMA-Controller (224) so konfiguriert ist, dass er die erste Anzahl von aufeinanderfolgenden Wörtern in den ersten Speicherpuffer (204) schreibt, bis der erste Speicherpuffer (204) voll ist, und nur dann, wenn der erste Speicherpuffer (204) voll ist, zum Schreiben der zweiten Anzahl von aufeinanderfolgenden Wörtern in den zweiten Speicherpuffer (206) wechselt.
  4. DMA-Controller (224) nach einem der Ansprüche 2 oder 3, wobei der DMA-Controller (224) so konfiguriert ist, dass der DMA-Controller (224) nach dem Schreiben der zweiten Anzahl von aufeinanderfolgenden Wörtern in den zweiten Speicherpuffer (206) basierend darauf, ob der zweite Speicherpuffer (206) voll ist, selektiv zum Schreiben zusätzlicher Daten aus dem Peripheriegerät (216) in den ersten Speicherpuffer (204) zurückwechselt.
  5. DMA-Controller (224) nach einem der Ansprüche 1 bis 4, ferner umfassend: eine Integritätsprüfungseinrichtung, die so konfiguriert ist, dass sie basierend auf den ersten und/oder zweiten Sätzen von Daten oder einer Adresse, die durch den DMA-Controller (224) während der Ausführung der ersten und/oder zweiten Transaktionssteuerungssätze (236, 238) tatsächlich verarbeitet werden, einen tatsächlichen Fehlerdetektionscode bestimmt, und ferner so konfiguriert ist, dass sie basierend darauf, ob der tatsächliche Fehlerdetektionscode gleich wie ein erwarteter Fehlerdetektionscode ist, der in einem dritten Transaktionssteuerungssatz in der Folge enthalten ist, selektiv ein Fehler-Flag setzt.
  6. DMA-Controller (224) nach Anspruch 5, wobei der dritte Transaktionssteuerungssatz in einer Position in der Folge zwischen den ersten und zweiten Transaktionssteuerungssätzen (236, 238) angeordnet ist.
  7. System (200), umfassend: ein erstes Peripheriegerät (216, 218); eine Verarbeitungseinheit (208), die funktionell mit dem ersten Peripheriegerät (216, 218) gekoppelt ist; einen ersten Speicherpuffer (204), der zwischen das erste Peripheriegerät (216, 218) und die Verarbeitungseinheit (208) gekoppelt ist; einen zweiten Speicherpuffer (206), der zwischen das erste Peripheriegerät (216, 218) und die Verarbeitungseinheit (208) gekoppelt und parallel zum ersten Speicherpuffer (204) angeordnet ist; und einen Direktspeicherzugriffs (DMA)-Controller (224), der mit dem ersten Peripheriegerät (216, 218), dem ersten Puffer und dem zweiten Puffer gekoppelt ist; wobei der DMA-Controller (224) einen Satz von Transaktionssteuerungsregistern (226) umfasst, die so konfiguriert sind, dass sie eine erste Folge von Transaktionssteuerungssätzen empfangen, die zusammen eine erste Datenübertragung beschreiben, durch welche der DMA-Controller (224) Daten zwischen dem ersten Peripheriegerät (216, 218) und dem ersten Puffer und dem zweiten Puffer verschiebt; und wobei der DMA-Controller (224) so konfiguriert ist, dass er einen ersten Teil der Daten gemäß einem ersten Transaktionssteuerungssatz in der ersten Folge (236, 238) zwischen dem ersten Speicherpuffer (204) und dem ersten Peripheriegerät (216, 218) überträgt, und so konfiguriert ist, dass er anschließend einen zweiten Teil der Daten gemäß einem zweiten Transaktionssteuerungssatz (238) in der ersten Folge zwischen dem zweiten Speicherpuffer (206) und dem ersten Peripheriegerät (216, 218) überträgt.
  8. System (200) nach Anspruch 7, wobei das erste Peripheriegerät (216, 218) ein Ursprungs-Peripheriegerät (216) ist, und der DMA-Controller (224) so konfiguriert ist, dass er die Daten aus dem Ursprungs-Peripheriegerät (216) ausliest und einen ersten Teil der ausgelesenen Daten in den ersten Speicherpuffer (204) schreibt und einen zweiten Teil der ausgelesenen Daten in den zweiten Speicherpuffer (206) schreibt.
  9. System (200) nach Anspruch 8, wobei der erste Teil der Daten mehrere Wörter umfasst, die in den ersten Speicherpuffer (204) geschrieben werden, und der zweite Teil der Daten mehrere Wörter umfasst, die nur in den zweiten Speicherpuffer (206) geschrieben werden, nachdem der gesamte erste Teil der Daten in den ersten Speicherpuffer (204) geschrieben wurde.
  10. System (200) nach einem der Ansprüche 8 oder 9, wobei der DMA-Controller (224) so konfiguriert ist, dass er zu einem Zeitpunkt, der dem entspricht, zu dem der erste Speicherpuffer (204) komplett voll ist, vom Schreiben des ersten Teils der Daten zum Schreiben des zweiten Teils der Daten wechselt.
  11. System (200) nach einem der Ansprüche 7 bis 10, wobei das erste Peripheriegerät (216, 218) ein Ziel-Peripheriegerät (218) ist, und der DMA-Controller (224) so konfiguriert ist, dass er abwechselnd: die gesamten Inhalte des ersten Speicherpuffers (204) ausliest und die gesamten Inhalte des ersten Speicherpuffers (204) gemäß dem ersten Transaktionssteuerungssatz (236) in das Ziel-Peripheriegerät (218) schreibt; und die gesamten Inhalte des zweiten Speicherpuffers (206) ausliest und die gesamten Inhalte des zweiten Speicherpuffers (206) gemäß dem zweiten Transaktionssteuerungssatz (238) in das Ziel-Peripheriegerät (218) schreibt.
  12. System (200) nach einem der Ansprüche 7 bis 11, ferner umfassend: ein zweites Peripheriegerät (218); einen dritten Speicherpuffer (210), der zwischen das zweite Peripheriegerät (218) und die Verarbeitungseinheit (208) gekoppelt ist; und einen vierten Speicherpuffer (212), der zwischen das zweite Peripheriegerät (218) und die Verarbeitungseinheit (208) gekoppelt und parallel zum dritten Speicherpuffer (210) angeordnet ist; und wobei der DMA-Controller (224) so konfiguriert ist, dass er eine zweite Folge von Transaktionssteuerungssätzen (238) empfängt, die zusammen eine zweite Datenübertragung beschreiben, durch welche der DMA-Controller (224) Daten zwischen dem zweiten Peripheriegerät (218) und dem dritten Speicherpuffer (210) und dem vierten Speicherpuffer (212) verschiebt; wobei der DMA-Controller (224) ferner so konfiguriert ist, dass er einen ersten Teil von Daten, die zwischen dem dritten Speicherpuffer (210) und dem zweiten Peripheriegerät (218) verschoben werden sollen, gemäß einem ersten Transaktionssteuerungssatz (236) in der zweiten Folge überträgt, und so konfiguriert ist, dass er anschließend einen zweiten Teil der Daten, die zwischen dem vierten Speicherpuffer (212) und dem zweiten Peripheriegerät (218) verschoben werden sollen, gemäß einem zweiten Transaktionssteuerungssatz (238) in der zweiten Folge überträgt.
  13. System (200) nach Anspruch 12, wobei die Verarbeitungseinheit (208) so konfiguriert ist, dass sie den ersten Teil von Daten, der zwischen dem dritten Speicherpuffer (210) und dem zweiten Peripheriegerät (218) verschoben werden soll, basierend auf dem ersten Teil der Daten erzeugt.
  14. System (200) nach einem der Ansprüche 7 bis 13, wobei der DMA-Controller (224) ferner umfasst: eine Integritätsprüfungseinrichtung, die so konfiguriert ist, dass sie basierend auf den ersten und/oder zweiten Teilen von Daten oder einer Adresse, die durch den DMA-Controller (224) während der Ausführung der ersten und/oder zweiten Transaktionssteuerungssätze (236, 238) tatsächlich verarbeitet werden, einen tatsächlichen Fehlerdetektionscode bestimmt, und ferner so konfiguriert ist, dass sie basierend darauf, ob der tatsächliche Fehlerdetektionscode gleich wie ein erwarteter Fehlerdetektionscode ist, der in einem dritten Transaktionssteuerungssatz in der Folge enthalten ist, selektiv ein Fehler-Flag setzt.
  15. DMA-Controller (224) nach Anspruch 14, wobei der dritte Transaktionssteuerungssatz in einer Position in der Folge zwischen den ersten und zweiten Transaktionssteuerungssätzen (236, 238) angeordnet ist.
  16. System (200) nach einem der Ansprüche 7 bis 15, ferner umfassend: ein zweites Peripheriegerät (218); einen dritten Speicherpuffer (210), der zwischen das zweite Peripheriegerät (218) und die Verarbeitungseinheit (208) gekoppelt ist; und einen vierten Speicherpuffer (212), der zwischen das zweite Peripheriegerät (218) und die Verarbeitungseinheit (208) gekoppelt und parallel zum dritten Speicherpuffer (210) angeordnet ist; und wobei der DMA-Controller (224) so konfiguriert ist, dass er einen dritten Satz von Daten zwischen dem dritten Speicherpuffer (210) und dem zweiten Peripheriegerät (218) gemäß einem ersten Transaktionssteuerungssatz (236) in einer zweiten Folge von Transaktionssteuerungssätzen (238) überträgt, die in einer verketteten Liste angeordnet sind, und so konfiguriert ist, dass er anschließend einen vierten Satz von Daten zwischen dem vierten Speicherpuffer (212) und dem zweiten Peripheriegerät (218) gemäß einem zweiten Transaktionssteuerungssatz (238) in der zweiten Folge überträgt.
  17. Verfahren zur Übertragung von Daten von einem ersten Peripheriegerät (216) abwechselnd an einen ersten Speicherpuffer (204) und einen zweiten Speicherpuffer (206), wobei die ersten und zweiten Speicherpuffer (204, 206) an einer Schnittstelle des Peripheriegeräts (216) parallel zueinander angeordnet sind, wobei das Verfahren umfasst: Empfangen einer Folge von Transaktionssteuerungssätzen (236, 238) an einem DMA-Controller (224), wobei die Folge von Transaktionssteuerungssätzen (236, 238) in einer Struktur verketteter Listen im Speicher angeordnet ist und insgesamt eine Datenübertragung vom ersten Peripheriegerät (216) abwechselnd an den ersten Speicherpuffer (204) und den zweiten Speicherpuffer (206) beschreibt; Auslesen der gesamten Inhalte des ersten Speicherpuffers (204) und Schreiben der gesamten Inhalte des ersten Speicherpuffers (204) in ein zweites Peripheriegerät (218) basierend auf dem ersten Transaktionssteuerungssatz (236) in der Folge von Transaktionssteuerungssätzen (236, 238); und Auslesen der gesamten Inhalte des zweiten Speicherpuffers (206) und Schreiben der gesamten Inhalte des zweiten Speicherpuffers (206) in das zweite Peripheriegerät (218) basierend auf einem zweiten Transaktionssteuerungssatz (238) in der Folge von Transaktionssteuerungssätzen (236, 238), nachdem die gesamten Inhalte des ersten Speicherpuffers (204) in das zweite Peripheriegerät (218) geschrieben wurden.
  18. Verfahren nach Anspruch 17, ferner umfassend: Bestimmen eines tatsächlichen Fehlerdetektionscodes basierend auf Inhalten des ersten Speicherpuffers (204) und/oder Inhalten des zweiten Speicherpuffers (206), die durch den DMA-Controller (224) während der Ausführung der ersten und/oder zweiten Transaktionssteuerungssätze (236, 238) tatsächlich verarbeitet wurden.
  19. Verfahren nach Anspruch 18, ferner umfassend: Auslesen eines dritten Transaktionssteuerungssatzes, der in der Folge enthalten ist und der einen erwarteten Fehlerdetektionscode umfasst; und selektives Setzen eines Fehler-Flags basierend darauf, ob der tatsächliche Fehlerdetektionscode gleich wie der erwartete Fehlerdetektionscode ist.
  20. Verfahren nach Anspruch 19, wobei der dritte Transaktionssteuerungssatz in einer Position in der Folge zwischen dem ersten Transaktionssteuerungssatz und dem zweiten Transaktionssteuerungssatz angeordnet ist.
DE102018112790.1A 2017-06-20 2018-05-29 Sichere Doppelpufferung unter Verwendung sicherer verketteter DMA-Listen Pending DE102018112790A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/627,872 2017-06-20
US15/627,872 US10191871B2 (en) 2017-06-20 2017-06-20 Safe double buffering using DMA safe linked lists

Publications (1)

Publication Number Publication Date
DE102018112790A1 true DE102018112790A1 (de) 2018-12-20

Family

ID=64457814

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018112790.1A Pending DE102018112790A1 (de) 2017-06-20 2018-05-29 Sichere Doppelpufferung unter Verwendung sicherer verketteter DMA-Listen

Country Status (3)

Country Link
US (2) US10191871B2 (de)
JP (1) JP2019008793A (de)
DE (1) DE102018112790A1 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10191871B2 (en) * 2017-06-20 2019-01-29 Infineon Technologies Ag Safe double buffering using DMA safe linked lists
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10833703B2 (en) * 2017-12-13 2020-11-10 Canon Kabushiki Kaisha DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium
US10565134B2 (en) * 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
EP3598315B1 (de) 2018-07-19 2022-12-28 STMicroelectronics (Grenoble 2) SAS Direkter speicherzugang
FR3084179A1 (fr) * 2018-07-19 2020-01-24 Stmicroelectronics (Grenoble 2) Sas Acces direct en memoire
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
CN111110966B (zh) * 2019-12-02 2022-05-27 湖南明康中锦医疗科技发展有限公司 多模块通信控制方法及呼吸支持设备
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
CN114385528A (zh) * 2020-10-16 2022-04-22 瑞昱半导体股份有限公司 直接记忆体存取控制器、使用其之电子装置以及操作其的方法
DE102021206494B3 (de) * 2021-06-23 2022-10-27 Siemens Healthcare Gmbh Verfahren zur Überwachung einer Datenübertragung, Vorrichtung, insbesondere zur medizinischen Bildgebung, und Computerprogramm
US20230195553A1 (en) * 2021-12-16 2023-06-22 Cryptography Research, Inc. Pipelined hardware error classification and handling

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5224213A (en) * 1989-09-05 1993-06-29 International Business Machines Corporation Ping-pong data buffer for transferring data from one data bus to another data bus
US5513374A (en) * 1993-09-27 1996-04-30 Hitachi America, Inc. On-chip interface and DMA controller with interrupt functions for digital signal processor
US5805927A (en) * 1994-01-28 1998-09-08 Apple Computer, Inc. Direct memory access channel architecture and method for reception of network information
US5828903A (en) * 1994-09-30 1998-10-27 Intel Corporation System for performing DMA transfer with a pipeline control switching such that the first storage area contains location of a buffer for subsequent transfer
US5590377A (en) * 1995-06-07 1996-12-31 Ast Research, Inc. Automatic control of distributed DMAs in a PCI bus system supporting dual ISA buses
JPH10154125A (ja) * 1996-11-26 1998-06-09 Toshiba Corp Dmaデータ転送装置および同装置を使用した動画像復号化装置並びにdmaデータ転送制御方法
US6167465A (en) * 1998-05-20 2000-12-26 Aureal Semiconductor, Inc. System for managing multiple DMA connections between a peripheral device and a memory and performing real-time operations on data carried by a selected DMA connection
US6202107B1 (en) 1998-11-19 2001-03-13 Sun Microsystems, Inc. Host controller interface descriptor fetching unit
JP3671120B2 (ja) * 1999-06-16 2005-07-13 株式会社ソニー・コンピュータエンタテインメント データ転送装置、データ転送システムおよびデータ転送方法
US7003702B2 (en) 2002-03-18 2006-02-21 Emc Corporation End-to-end checksumming for read operations
US6874054B2 (en) 2002-12-19 2005-03-29 Emulex Design & Manufacturing Corporation Direct memory access controller system with message-based programming
US20040151170A1 (en) * 2003-01-31 2004-08-05 Manu Gulati Management of received data within host device using linked lists
US7389364B2 (en) 2003-07-22 2008-06-17 Micron Technology, Inc. Apparatus and method for direct memory access in a hub-based memory system
US20050289253A1 (en) 2004-06-24 2005-12-29 Edirisooriya Samantha J Apparatus and method for a multi-function direct memory access core
US7774512B2 (en) 2005-02-08 2010-08-10 Sony Computer Entertainment Inc. Methods and apparatus for hybrid DMA queue and DMA table
US7496695B2 (en) 2005-09-29 2009-02-24 P.A. Semi, Inc. Unified DMA
US7620746B2 (en) 2005-09-29 2009-11-17 Apple Inc. Functional DMA performing operation on DMA data and writing result of operation
US20080147908A1 (en) 2006-12-13 2008-06-19 Microchip Technology Incorporated Direct Memory Access Controller with Error Check
US8069279B2 (en) 2007-03-05 2011-11-29 Apple Inc. Data flow control within and between DMA channels
US8032724B1 (en) * 2007-04-04 2011-10-04 Marvell International Ltd. Demand-driven opportunistic garbage collection in memory components
US20090271536A1 (en) * 2008-04-24 2009-10-29 Atmel Corporation Descriptor integrity checking in a dma controller
US20090310489A1 (en) * 2008-06-17 2009-12-17 Bennett Andrew M Methods and apparatus using a serial data interface to transmit/receive data corresponding to each of a plurality of logical data streams
US8996926B2 (en) 2012-10-15 2015-03-31 Infineon Technologies Ag DMA integrity checker
US10191871B2 (en) * 2017-06-20 2019-01-29 Infineon Technologies Ag Safe double buffering using DMA safe linked lists

Also Published As

Publication number Publication date
US20180365181A1 (en) 2018-12-20
US20190155775A1 (en) 2019-05-23
JP2019008793A (ja) 2019-01-17
US10191871B2 (en) 2019-01-29
US10635615B2 (en) 2020-04-28

Similar Documents

Publication Publication Date Title
DE102018112790A1 (de) Sichere Doppelpufferung unter Verwendung sicherer verketteter DMA-Listen
DE102013017179B4 (de) DMA-Integritätsprüfungseinheit
DE102012214324B4 (de) Verfahren und Vorrichtung zur Erleichterung der Datenüberprüfung mithilfe einer Prüfsumme in Verbindung mit einem Sidefile
DE69221045T2 (de) Verfahren und Gerät zur programmierbaren Speicherssteuerung mit Fehlerregelung und Prüffunktionen
DE10304447B4 (de) Verfahren zur Handhabung von Datenfehlern in einem Prozessor mit Pipeline und derartiger Prozessor
DE60117066T2 (de) Verfahren und Vorrichtung zum Überprüfen von fehlerkorrigierenden Codes
DE2619159C2 (de) Fehlererkennungs- und Korrektureinrichtung
DE19882853B3 (de) Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist
DE2806024C2 (de)
DE3853206T2 (de) Verfahren und gerät zur byteschreibfehlerkodierung.
DE102011085989B4 (de) Verfahren und Vorrichtung zum Ausführen von parallelen Speicherlese- und Speicherschreiboperationen
DE69107476T2 (de) Vorrichtung für eine in-circuit-prüfung mit einem minimalspeicher.
DE69713911T2 (de) Monolitisch integrierter speicher mit fehlerkomprimierung
EP0104635A2 (de) Verfahren und Anordnung zum Prüfen eines digitalen Rechners
DE102014103347A1 (de) Bedingte Verkettungsglieder für Direct-Memory-Access-Controller
DE69904618T2 (de) Detektionstechnik von speicherabschnittfehlern und einzel-, doppel und triplebitfehlern
DE102012105159B4 (de) Fehlertolerante Speicher
DE68924883T2 (de) Mikroprozessor mit Befehlspipeline.
DE102006007326A1 (de) Fehlerkorrekturschaltung und -Verfahren
DE3851274T2 (de) Verfahren und Vorrichtungen zur Ueberprüfung der Unversehrtheit einer Speicheradresse, die einer Inkrementierung unterworfen wird.
DE102012221253B4 (de) Verfahren zum Zählen von Ereignissen in einer elektronischen Einheit, Ereigniszähler für eine integrierte Schaltungseinheit sowie Computersystem und Computerprogrammprodukt hierfür
DE102006019426B4 (de) Speichermodulsteuerung, Speichersteuerung und entsprechende Speicheranordnung sowie Verfahren zur Fehlerkorrektur
DE102008003450A1 (de) Digitalschaltungen und Verfahren zum Testen einer Digitalschaltung
DE69729598T2 (de) Verfahren und Vorrichtung zur Adressenparitätsprüfung für mehrfache überlappende Addressbereiche auf einem gemeinsamen Bus
DE3855174T2 (de) Selbstprüfung der Paritätsregenerierung