-
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.