1 / 14

Einleitung

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:

fionan
Download Presentation

Einleitung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

  5. Lösung – Theorie II Steer by Wire III (CAN) David Weese, Philipp Reinecke

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

  7. Lösung – Theorie IV Steer by Wire III (CAN) David Weese, Philipp Reinecke

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

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

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

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

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

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

  14. Schluss Steer by Wire III (CAN) David Weese, Philipp Reinecke ENDE

More Related