-
Die Erfindung betrifft ein Verfahren zur Konfiguration einer eine Deskriptor-Tabelle aufweisende Speicherschutz-Einheit eines Mikrocontrollers. Die Erfindung betrifft ferner einen Mikrocontroller mit einer Speicherschutz-Einheit zur Durchführung des erfindungsgemäßen Verfahrens.
-
Steuergeräte in Fahrzeugen sind bekannt und bestehen aus einem oder mehreren Prozessoren als Mikrocontroller und darauf ausgeführter Software, die in einen technischen Anwendungskontext, bspw. der Motorsteuerung eingebunden ist. Auf einem solchen Steuergerät können verschiedene Anwendungen realisiert werden, die auf denselben Speicherbereich zugreifen und damit Probleme verursachen können.
-
Als Speicherschutzkonzept ist der Einsatz einer Speicherschutz-Einheit (MPU, Memory Protection Unit) als separate Hardware-Komponente bekannt, die in einem Mikrocontroller des Steuergerätes integrierbar ist oder auch als vom Mikrokontroller getrennte Komponente realisiert werden kann.
-
Der Speicherschutz dient üblicherweise der Umsetzung von Zugriffsrechten auf Speicherbereiche eines physikalischen Speichers und ermöglicht dadurch die Abschottung von Anwendungsprozessen voneinander und vom Betriebssystem.
-
Ein Beispiel einer Speicherschutz-Einheit zur Spezifizierung von Zugriffsrechten bzw. Zugriffszulassungen seitens eines von einem Betriebssystem initiierten Prozesses bzw. Task (auch Thread genannt) auf Speicherbereiche eines physikalischen Speichers ist in 2 dargestellt.
-
Die 2 zeigt in einer schematischen Darstellung eine in einem Steuergerät eines Fahrzeugs eingebetteten Mikrocontroller 10' mit einer Speicherschutz-Einheit 1' und einer dieser Speicherschutz-Einheit 1' zugeordneten Deskriptor-Tabelle 1.1'. Die Konfiguration dieser Speicherschutz-Einheit 1' ist in der Deskriptor-Tabelle 1.1' gespeichert. Der Mikrocontroller 10' kann mit einem oder mit mehreren Mikrocontroller-Kernen ausgestattet sein.
-
Mit einer Prozess-Kennung (PID, Process Identifier) wird ein auf dem Mikrocontroller 10' laufender Prozess, welcher von dem Betriebssystem des Mikrocontrollers 10' initiiert wird, eindeutig identifiziert. Damit können auf der Basis solcher PID's auch die Zugriffsrechte bzw. Zugriffszulassungen des zugehörigen Prozesses verwaltet und gesteuert werden. Hierzu dient die Deskriptor-Tabelle 1.1'.
-
Die Deskriptor-Tabelle 1.1' weist drei Bereiche auf, nämlich einen Bereich 1.12' (Instruction Regions) mit 6 Einträgen MPU0 bis MPU5, einen Bereich 1.13' (Data Regions) mit 12 Einträgen MPU6 bis MPU17 und schließlich den dritten Bereich 1.14' (Instruction/Data Regions) mit 6 Einträgen MPU18 bis MPU23. Insgesamt weist diese Deskriptor-Tabelle 1.1' somit 24 Einträge auf. Jeder Deskriptor-Eintrag weist Zugriffszulassungsdaten auf, mit welchen Speicherzugriffsvorgänge auf einen physikalischen Speicher verwaltet werden. Solche Zugriffszulassungsdaten können als Prozess-Kennung (Process Identifier, PID) mit einer Bit-Maske realisiert werden, so dass diese Zugriffszulassungsdaten nur einen Abschnitt der PID aufweisen.
-
Bevor der Zugriff eines von dem Betriebssystem des Mikrocontrollers 10' initiierten Prozesses auf bestimmte Speicherbereiche eines physikalischen Speichers (in 2 nicht dargestellt) erfolgt, wird die PID dieses Prozesses bitweise mit den Bits der Bit-Maske verglichen und bei einer Übereinstimmung der Zugriff auf den Speicher zugelassen.
-
Diese Prozess-Identifizierung eines auf einem Kern des Mikrocontrollers 10' laufenden Prozesses übernimmt gemäß 2 eine PID-Einheit 2', die die Prozess-Kennung dieses aktuellen Prozesses der Speicherschutz-Einheit 1' zuführt, diese Prozess-Kennung PID mit den Bits aus der Bit-Maske der Einträge der Deskriptor-Tabelle 1.1' vergleicht und bei einer Übereinstimmung mit einer der Einträge den Zugriff auf den durch diese Prozess-Kennung PID spezifizierten Speicherbereich freigibt, so dass dieser aktuelle Prozess einen Speicherzugriffsvorgang auf diesen Speicherbereich ausführen kann.
-
Es ist auch möglich, dass jeder Deskriptor-Eintrag eine PID darstellt und dass bspw. nur n Bits mit den höchsten oder den niedrigsten Stellenwerten als Zugriffszulassungsdaten verwendet werden. Auch damit können mit einem solchen Deskriptor-Eintrag mehrere Prozesse mit unterschiedlichen PIDs angesprochen werden. Wird als Zugriffszulassungsdatum die vollständige PID verwendet, kann natürlich nur dieser diese PID aufweisende Prozess angesprochen werden.
-
Mit zunehmend komplexer werdenden Software, die von dem Mikrocontroller 10' ausgeführt wird, steigt auch der Bedarf an Deskriptor-Einträgen. Bei einem Kontextwechsel zu einem anderen Prozess ist es daher erforderlich, zumindest einen Teil der Deskriptor-Tabelle 1.1' umzukonfigurieren. Eine solche Umkonfiguration wird von dem Betriebssystem durchgeführt und verbraucht Laufzeit, die von der Anzahl der umkonfigurierten Deskriptor-Einträge abhängt. Dies führt in nachteiliger Weise zur Zunahme der Laufzeit bei einem Kontextwechsel.
-
Bei einem Kontextwechsel wird die Bearbeitung des aktuellen Prozesses unterbrochen und ein anderer Prozess aktiviert, der vor der Unterbrechung inaktiv war. An einem Kontextwechsel sind somit zwei Prozesse beteiligt, einerseits der suspendierte Prozess und andererseits der nach der Unterbrechung aktivierte Prozess.
-
Die Aufgabe der Erfindung besteht darin, ein Verfahren zur Konfiguration einer eine Deskriptor-Tabelle aufweisende Speicherschutz-Einheit (MPU) anzugeben, welches für einen Kontextwechsel möglichst wenig Laufzeit verbraucht. Ferner ist es Aufgabe der Erfindung, zur Durchführung des erfindungsgemäßen Verfahrens einen Mikrocontroller (MCU) mit einer Speicherschutz-Einheit (MPU) anzugeben.
-
Die erstgenannte Aufgabe wird gelöst durch ein Verfahren mit den Merkmalen des Patentanspruchs 1.
-
Bei diesem Verfahren zur Konfiguration einer Speicherschutz-Einheit (MPU) eines Mikrocontrollers (MCU) wird
- - für die Speicherschutz-Einheit eine Deskriptor-Tabelle bereitgestellt, deren Einträge Zugriffszulassungsdaten aufweisen, mit welchen Zugriffszulassungen für Speicherbereiche eines physikalischen Speichers definiert werden, wobei Zugriffszulassungsdaten verwendet werden, welche zumindest einen Abschnitt einer Prozesskennung (Prozess-ID) eines einen Speicherzugriffsvorgang auslösenden Prozesses umfassen,
- - eine Prozesskennung (Prozess-ID) des einen Speicherzugriffsvorgang initiierenden Prozesses mit den Zugriffszulassungsdaten verglichen und bei einer Übereinstimmung der Speicherzugriffsvorgang ausgeführt,,
- - eine weitere Speicherschutz-Einheit mit einer weiteren Deskriptor-Tabelle bereitgestellt, deren Einträge in Abhängigkeit einer Prozesskennung auf wenigstens eine Konfigurations-Tabelle verweisen, und
- - bei einem Umprogrammierungs-Prozess mit einer auf die weitere Deskriptor-Tabelle verweisende Prozesskennung ein definierter Teilbereich der Deskriptor-Tabelle mit den Einträgen der der Prozesskennung zugehörigen Konfigurations-Tabelle konfiguriert.
-
Bei diesem erfindungsgemäßen Verfahren wird also wenigstens eine weitere Deskriptor-Tabelle bereitgestellt, die über eine Hardware-Komponente, nämlich einer weiteren Speicherschutz-Einheit (eMPU) verwaltet wird. Bei einem Wechsel der Prozesskennung (PID) wird ein definierter Teilbereich der Deskriptor-Tabelle mit dieser Hardware eMPU umprogrammiert, indem entsprechend der Prozesskennung der Eintrag in der weiteren Deskriptor-Tabelle der weiteren Speicherschutz-Einheit eMPU ausgewählt und die zugehörige bzw. referenzierte Konfigurations-Tabelle in den definierten Teilbereich der Deskriptor-Tabelle geladen wird.
-
Diese Erweiterung mittels der weiteren Speicherschutz-Einheit eMPU und der wenigstens einen zugehörigen weiteren Deskriptor-Tabelle wird die Funktionalität der Deskriptor-Tabelle nicht beeinflusst, da die in der Deskriptor-Tabelle spezifizierten Zugriffszulassungen nach wie vor anhand der Prozesskennung bestimmt werden.
-
Nach einer vorteilhaften Ausgestaltung der Erfindung werden die Zugriffszulassungsdaten erzeugt, indem die mit einer Bit-Maske belegten Prozess-Kennungen (PID) in der Deskriptor-Tabelle gespeichert werden. Nach einer alternativen Realisierung werden Prozess-Kennungen in der Deskriptor Tabelle gespeichert, wobei als Zugriffszulassungsdaten lediglich die n Bits entweder mit den höchsten oder den niedrigsten Stellen der Prozess-Kennungen verwendet werden.
-
Nach einer weiteren vorteilhaften Weiterbildung der Erfindung wird die Deskriptor-Tabelle in einen ersten Abschnitt mit Einträgen für eine statische Konfiguration und in einen zweiten Abschnitt mit Einträgen für eine dynamische Konfiguration geteilt, wobei der zweite Abschnitt als definierter Teilbereich mittels der weiteren Deskriptor-Tabelle konfiguriert wird. Die statische Konfiguration kann während des Betriebs der Mikroprozessor-Einheit nicht verändert werden.
-
Diese Konfiguration des zweiten Abschnitts der Deskriptor-Tabelle für die dynamische Konfiguration ist in der wenigstens einen Konfigurations-Tabelle gespeichert. Diese Konfiguration-Tabelle kann in einem Flash-Speicher oder in einem RAM-Speicher abgelegt werden.
-
Es können mehrerer solcher Konfiguration-Tabellen bereitgestellt werden, welche über die Prozess-Kennung der weiteren Deskriptor-Tabelle der weiteren Speicherschutz-Einheit referenziert werden.
-
Die zweitgenannte Aufgabe wird gelöst durch einen Mikrocontroller (MCU) mit einer Speicherschutz-Einheit (MPU) mit den Merkmalen gemäß des Patentanspruches 5.
-
Ein solcher Mikrocontroller (MCU) umfasst:
- - eine Speicherschutz-Einheit (MPU) mit einer Deskriptor-Tabelle, deren Einträge Zugriffszulassungsdaten aufweisen, welche Zugriffszulassungen für Speicherbereiche eines physikalischen Speichers definieren, wobei Zugriffszulassungsdaten verwendet werden, welche zumindest einen Abschnitt einer Prozesskennung (Prozess-ID) eines einen Speicherzugriffsvorgang auslösenden Prozesses umfassen,
- - eine weitere Speicherschutz-Einheit (eMPU) mit einer weiteren Deskriptor-Tabelle, deren Einträge in Abhängigkeit einer Prozesskennung auf wenigstens eine Konfigurations-Tabelle verweisen, wobei
- - die weitere Speicherschutzeinheit (eMPU) ausgebildet ist, bei einem Umprogrammierungs-Prozess mit einer auf die weitere Deskriptor-Tabelle verweisenden Prozesskennung einen definierten Teilbereich der Deskriptor-Tabelle mit den Einträgen der der Prozesskennung zugehörigen Konfigurations-Tabelle zu konfigurieren.
-
Die im Zusammenhang mit dem erfindungsgemäßen Verfahren aufgeführten Vorteile weist auch dieser erfindungsgemäße Mikrocontroller auf.
-
Eine vorteilhafte Ausgestaltung der Erfindung sieht vor, dass die Deskriptor-Tabelle der Speicherschutz-Einheit in einen ersten Abschnitt mit Einträgen für eine statische Konfiguration und einen zweiten Abschnitt mit Einträgen für eine dynamische Konfiguration aufgeteilt ist. Dieser zweite Abschnitt wird dann mittels den Einträgen der wenigstens einen Konfigurations-Tabelle umprogrammiert.
-
Das erfindungsgemäße Verfahren und ein Mikrocontroller (MCU) mit einer Speicherschutz-Einheit zur Durchführung des erfindungsgemäßen Verfahrens wird nachfolgend anhand eines Ausführungsbeispiels unter Bezugnahme auf die beigefügten Figuren beschrieben und erläutert. Es zeigen:
- 1 eine schematische Darstellung eines Mikrocontrollers (MCU) mit einer Speicherschutz-Einheit (MPU) und einer weiteren Speicherschutz-Einheit (eMPU) zur Erläuterung des erfindungsgemäßen Verfahrens, und
- 2 eine schematische Darstellung eines Mikrocontrollers mit einer Speicherschutz-Einheit gemäß Stand der Technik.
-
Da der Mikrocontroller 10' mit einer Speicherschutz-Einheit 1' gemäß 2 bereits in der Beschreibungseinleitung beschrieben wurde, wird im Zusammenhang mit der Beschreibung des Mikrocontrollers 10 gemäß 1 lediglich hierauf verwiesen.
-
Der Mikrocontroller 10 gemäß 1 umfasst eine Speicherschutz-Einheit (MPU) 1 mit einer Deskriptor-Tabelle 1.1 sowie eine weitere Speicherschutz-Einheit (eMPU) 1.2 mit einer weiteren Deskriptor-Tabelle 1.3.
-
Die Konfiguration der Speicherschutz-Einheit (MPU) 1 ist in dieser Deskriptor-Tabelle 1.1 gespeichert. Der Mikrocontroller 10 kann mit einem oder mit mehreren Mikrocontroller-Kernen ausgestattet sein.
-
Die Deskriptor-Tabelle 1.1'. weist drei Bereiche auf, nämlich einen Bereich 1.12 (Instruction Regions) mit 6 Einträgen MPU0 bis MPU5, einen Bereich 1.13 (Data Regions) mit 12 Einträgen MPU6 bis MPU17 und schließlich den dritten Bereich 1.14 (Instruction/Data Regions) mit 6 Einträgen MPU18 bis MPU23. Insgesamt weist diese Deskriptor-Tabelle 1.1 somit 24 Einträge auf. Jeder Deskriptor-Eintrag ist mit Zugriffszulassungsdaten spezifiziert, das heißt es werden dadurch Zugriffszulassungen eines von dem Betriebssystem des Mikrocontrollers 10 initiierten Prozesses zur Durchführung eines Speicherzugriffsvorganges für bestimmte Speicherbereiche eines physikalischen Speichers (in 1 nicht dargestellt) des Mikrocontrollers 10 definiert. Diese Zugriffszulassungsdaten umfassen wenigstens einen Abschnitt einer Prozesskennung (Process Identifier, PID) . Daher werden als Zugriffszulassungsdaten die Prozesskennungen zusammen mit jeweils einer Bit-Maske in der Deskriptor-Tabelle 1.1 als Deskriptor-Eintrag gespeichert. Es ist auch möglich die Prozesskennungen als Deskriptor-Eintrag zu speichern und als Zugriffszulassungsdaten lediglich die n Bits entweder mit den höchsten oder den niedrigsten Stellenwerten zu verwenden.
-
Wie bereits im Zusammenhang mit 2 erläutert, wird mittels einer PID-Einheit 2 die Prozess-Kennung (PID) eines aktuellen Speicherzugriffs-Prozesses der Speicherschutz-Einheit 1 zuführt und mit den Zugriffszulassungsdaten aus der Deskriptor-Tabelle 1.1'. verglichen. Bei einer Übereinstimmung mit einer der Einträge wird der Zugriff auf den durch die Prozess-Kennung PID spezifizierten Speicherbereich freigegeben, so dass der Speicherzugriffsvorgang durchgeführt werden kann.
-
Die Deskriptor-Tabelle 1.1 weist zwei Abschnitte 1.10 und 1.11 auf, wobei der erste Abschnitt 1.10 eine statische Konfiguration für die Speicherschutz-Einheit 1 enthält, während der zweite Abschnitt 1.11 zur dynamischen Konfiguration dient. Der erste Abschnitt 1.10 umfasst die Bereiche 1.12 und 1.13 entsprechend der Deskriptor-Tabelle 1.1`, während der zweite Abschnitt 1.11 dem Bereich 1.14 der Deskriptor-Tabelle 1.1' nach 2 entspricht.
-
Damit enthält die Deskriptor-Tabelle 1.1 gemäß 1 einen Abschnitt 1.10 mit 6 Instruktions-Bereichen (background Instruction Regions) und 12 Daten-Bereichen (Background Data Regions), während der dynamische Konfigurations-Abschnitt 1.11 6 Instruktions/Daten-Bereiche (Dynamic Regions Instruktion/Data) aufweist.
-
Die weitere Speicherschutz-Einheit (eMPU) 1.2 dient zur Umprogrammierung des dynamischen Konfigurations-Abschnittes 1.11. Die zugehörigen Konfigurationen sind in Konfigurations-Tabellen 1.30, 1.31, 1.32 und 1.33 gespeichert, die jeweils Einträge MPU0 bis MPU5 aufweisen. Auf diese Konfigurations-Tabellen 1.30, 1.31, 1.32 und 1.33 wird in einer weiteren Deskriptor-Tabelle 1.3 der weiteren Speicherschutz-Einheit 1.2 mittels Zugriffszulassungsdaten (PID) referenziert. Mit dem Zugriffszulassungsdatum 10 wird in der weiteren Deskriptor-Tabelle 1.3 auf die Konfigurations-Tabelle 1.30, mit dem Zugriffszulassungsdatum 12 wird auf die Konfigurations-Tabelle 1.31, mit dem Zugriffszulassungsdatum 4 wird auf die Konfigurations-Tabelle 1.32 und mit dem Zugriffszulassungsdatum 5 wird auf die Konfigurations-Tabelle 1.33 verwiesen. Auch diese Zugriffszulassungsdaten der weiteren Deskriptor-Tabelle 1.3 werden dadurch erzeugt, dass Prozesskennungen (PID) zusammen mit jeweils einer Bit-Maske gespeichert werden. Diese Zugriffszulassungsdaten können auch die n Bits entweder der höchsten oder der niedrigsten Stellenwerte einer Prozesskennung (PID) darstellen.
-
Die Prozesskennung eines von dem Betriebssystem des Mikrocontrollers 10 veranlassten Prozesses zur Durchführung eines Speicherzugriffsvorganges wird von der PID-Einheit 2 identifiziert und nicht nur der Speicherschutz-Einheit 1, sondern auch der weiteren Speicherschutz-Einheit 1.2 zugeführt, die die Prozesskennung PID mit den in der weiteren Deskriptor-Tabelle 1. 3 abgelegten Zugriffszulassungsdaten vergleicht. Wechselt der Prozess auf einen Umprogrammierungs-Prozess mit einer auf die weiteren Deskriptor-Tabellen 1.30, 1.31, 1.32 und 1.33 verweisenden Zugriffszulassungsdaten wird mittels der weiteren Speicherschutz-Einheit 1.2 der dynamische Abschnitt 1.11 der Deskriptor-Tabelle 1.1 umprogrammiert.
-
Bei einem Kontextwechsel auf einen Prozess mit bspw. einem Zugriffszulassungsdatum 4 wird der dynamische Abschnitt 1.11 mit der Konfigurations-Tabelle 1.32 umprogrammiert, während mit einem Zugriffszulassungsdatum 10 der dynamische Abschnitt 1.11 mit der Konfigurations-Tabelle 1.30 umprogrammiert wird.
-
Mit einer solchen Hardware-Komponente (eMPU) 1.2 können mehrere Bereiche der Deskriptor-Tabelle 1.1 der Speicherschutz-Einheit 1 mittels der Deskriptor-Tabellen 1.30 bis 1.33 statisch definiert werden, welche dann mittels dieser weiteren Speicherschutz-Einheit 1.2 automatisch, also dynamisch umgeschaltet und die entsprechende Bereiche der Deskriptor-Tabelle 1.1 umprogrammiert werden. Hierfür wird keine Software-Laufzeit verbraucht.
-
Das erfindungsgemäße Verfahren kann unter Verwendung des entsprechenden Mikrocontrollers für Sicherheitsanwendungen im Fahrzeug eingesetzt werden oder dort, wo eine sichere Speicher-Partitionierung erforderlich ist.