140 likes | 304 Views
Einleitung. Steer by Wire III (CAN) David Weese, Philipp Reinecke. EMES-Projekt bei Daimler Chrysler. Entwicklung eines CAN-Treibers für IP460-Module mit CAN-Modul TIP816-10 Entwicklung eines einfachen Demonstrationsmoduls. Hintergrund:
E N D
Einleitung Steer by Wire III (CAN) David Weese, Philipp Reinecke EMES-Projekt bei Daimler Chrysler • Entwicklung eines CAN-Treibers für IP460-Module mit CAN-Modul TIP816-10 • Entwicklung eines einfachen Demonstrationsmoduls Hintergrund: Nutzung als Schnittstelle zwischen Lenkung und Lenkrad im „Steer by Wire“-System
allg. Anforderungen Steer by Wire III (CAN) David Weese, Philipp Reinecke • Reaktionen in Echtzeit • Hochverfügbarkeit • hohe Toleranz gegenüber Umwelteinflüssen • Konsequenz ist CAN-Protokoll wegen • Kollisionsvermeidung • vorhersagbaren Reaktionszeiten (für hochpriorisierte Nachrichten)
Treiber-Anforderungen Steer by Wire III (CAN) David Weese, Philipp Reinecke • Der Treiber sollte • tatsächliche Hardware weitestgehend abstrahieren • vom CAN-Modul-Hersteller unabhängig sein • Streams für die Kommunikation zur Verfügung stellen
Lösung – Theorie I Steer by Wire III (CAN) David Weese, Philipp Reinecke • Planung der Treiber: • Anpassung eines bereits existierenden PCI-Treibers für Linux, um Fehlerquellen gering zu halten • Entwicklung folgender Treiber: • SMC1-Treiber zur seriellen Kommunikation mit den Terminals und Debug-Ausgabe • Raw-Treiber zur binären packetorientierten Kommunikation über CAN • Cooked-Treiber zur zeichenorientierten Kommunikation über den Raw-Treiber • alle Treiber stellen Input-/Output-Streams zur Verfügung
Lösung – Theorie II Steer by Wire III (CAN) David Weese, Philipp Reinecke
Lösung – Theorie III Steer by Wire III (CAN) David Weese, Philipp Reinecke • Planung des Demonstrationsmoduls: • muss lediglich SMC1-Stream und Cooked-Stream verwenden • durch den SMC1-Stream vom Nutzer kommende Texte werden durch den Cooked-Stream über den CAN-Bus zum anderen Board übertragen • vom CAN-Bus durch Cooked-Stream kommende Texte werden durch SMC1-Stream zurück zum anderen Nutzer gesendet
Lösung – Theorie IV Steer by Wire III (CAN) David Weese, Philipp Reinecke
Lösung – Praxis I Steer by Wire III (CAN) David Weese, Philipp Reinecke • vorhandene Hardware: • IP460-Board mit 32bit MC68040 und MC68360 (Communication Controller) von Motorola • IP-Modul TIP816 von TEWES mit integriertem CAN-Controller i82527 von Intel • bietet 14 frei belegbare Transmit-/Receive-Objekte für CAN-Nachrichten und ein exklusives Receive-Objekt (Message Ob-jekt 15) • alle Objekte sind nach ID maskierbar
Lösung – Praxis II Steer by Wire III (CAN) David Weese, Philipp Reinecke • vorhandene Software: • Monitorsoftware IP460Mon V2.01 im EEPROM des IP-Boards - nimmt Initialisierung der Controller vor und ermöglicht Upload des Treibers über serielles ASCII-Protokoll (Quellen unvollständig) • TIP816-Linux-Treiber von TEWES für eine PCI-Version des CAN-Controllers mit Quellenda als Device-Driver geschrieben, enthält dieser Funktionen zum Initialisieren, Öffnen, Schließen Schreiben und Lesen (gewisse Abhängigkeit von Unix-Spezifika)
Lösung – Praxis III Steer by Wire III (CAN) David Weese, Philipp Reinecke • Vorgehensweise: • Implementation des SMC1-Treibers • 2. Adaption des TIP816-Treibers • 3. Test des Treibers mittels Beispielprogramm • 4. Implementation des Cooked-Streams • 5. Aufsetzen des Demonstrationsprogramms
Lösung – Praxis IV Steer by Wire III (CAN) David Weese, Philipp Reinecke • Implementation des SMC1-Treibers • Entwicklung von stabilen IRQ-unabhängigen Ein-/Ausgaberoutinen (schliesst Fehlerquellen aus) • Reverse-Engineering der Monitorroutinen und Anpassung mit MC68360 Dokumentationen • Adaption des TIP816-Treibers • Adaption zur Kompilierbarkeit • Beibehaltung der Interfaces (da zweckmäßig) • Entfernung der überflüssigen/nicht implementierbaren Bereiche • Test des Treibers mittels Beispielprogramm • Validierung der Treiberfunktion vor Implementation höherer Ebenen • Kompilierung nahezu problemlos, Übertragung nicht
Ergebnis Steer by Wire III (CAN) David Weese, Philipp Reinecke • Logic Analyser zeigt Spannungsverlauf des CAN-Busses an: • 1. Modul sendet Pakete (meldet errorcounter > 96) • erfolgreich erkennbar sind Arbitrierungs- und Datenbits • Arbitrierung scheinbar erfolgreich • 2. Modul empfängt keine Pakete, löst keinen IRQ aus, es ist kein IRQ „pending“ und auf der IRQ-Leitung bleibt die Spannung unverändert • Ursache in Hardware (CAN-Bus richtig angeschlossen?) Nutzbar sind: • SMC1-Treiber mit Stream • Cooked-Stream • Demonstrationsprogramm
Ausblick Steer by Wire III (CAN) David Weese, Philipp Reinecke • Was hätte man anders machen können? • Entwicklung eines eigenen Treibers mit Orientierung auf Echtzeit (war in der Zeitkürze nicht möglich) • Wie könnte man weitermachen? • Verifikation der korrekten Hardwarefunktion • Beseitigung des Übertragungsfehlers • Einsatz in „Steer by Wire“-Demo (Stand-Alone oder mit RTOS)
Schluss Steer by Wire III (CAN) David Weese, Philipp Reinecke ENDE