Navi: Unterschied zwischen den Versionen
aus Metalab Wiki, dem offenen Zentrum für meta-disziplinäre Magier und technisch-kreative Enthusiasten.
Zur Navigation springenZur Suche springenDannym (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= Navi = == Ziele == Linux-Navigationsgerät bauen mit ausschließlich Free Software. Einarbeiten in UART, SPI, I²C, SPI mit Linux >= 4.4 Spaß haben == Ha…“) |
Dannym (Diskussion | Beiträge) |
||
Zeile 1: | Zeile 1: | ||
− | = | + | = Ziele = |
− | = | + | * Linux-Navigationsgerät fürs Auto bauen mit ausschließlich Free Software. |
+ | * Einarbeiten in UART, SPI, I²C, SPI mit Linux >= 4.4 | ||
+ | * Spaß haben | ||
− | + | = Hardware, abstrakt = | |
− | |||
− | |||
− | |||
− | |||
+ | * Stromversorgung | ||
* GPS | * GPS | ||
* FM-Radio | * FM-Radio | ||
− | * VAN-Controller | + | * VAN Bus Controller für Display etc |
+ | |||
+ | = Hardware, konkret = | ||
+ | |||
+ | * 5 V "Anker" Netzteil für Auto | ||
+ | * MT3329 GPS Receiver | ||
+ | * TSS463AA VAN Bus Controller | ||
+ | * MCP2551 CAN Line Driver | ||
+ | * RDA5807M FM Radio | ||
+ | * TDA7850 4-Kanal-Audio-Verstärker | ||
+ | * PT7313E Audio Filter | ||
+ | * A20-OLinuXIno-LIME2 Host Computer | ||
+ | |||
+ | = Verbindungen = | ||
+ | |||
+ | * 5 V Netzteil für Auto: ISO-Stecker, USB | ||
+ | * MT3329 GPS Receiver: UART | ||
+ | * TSS463AA VAN Bus Controller: SPI | ||
+ | * MCP2551 CAN Line Driver: UART | ||
+ | * RDA5807M FM Radio: I²C, Antenne | ||
+ | * TDA7850 4-Kanal-Audio-Verstärker: Cinch | ||
+ | * PT7313E Audio Filter: I²C, Klinke | ||
+ | * A20-OLinuXIno-LIME2 Host Computer: Ethernet | ||
+ | |||
+ | == Hardware-Fallstricke == | ||
+ | |||
+ | == FM-Antenne == | ||
+ | |||
+ | * vorhanden am Auto etc | ||
+ | * hat möglicherweise eingebauten Verstärker | ||
+ | * schwierig zu finden (ist meist außerhalb des Autos) | ||
+ | * Phantomspeisung zur Stromversorgung nötig? | ||
+ | * Buchse? ISO oder DIN? Wahrscheinlich DIN. | ||
+ | * Impedanz? 100 Ω? 50 Ω? | ||
+ | |||
+ | == EMI == | ||
+ | |||
+ | * ElectroMagnetic Interference | ||
+ | * unsere Hardware stellt viele Hochfrequenzstörquellen dar | ||
+ | * Störung von außen gibt’s vielleicht auch | ||
+ | * Audioverstärker sollte nicht gestört werden | ||
+ | * Faradayscher Käfig nötig (1 oder mehr) | ||
+ | ** Filterplatte mit Masse | ||
+ | ** min. 2 Lagen | ||
+ | |||
+ | == Ghost in the Machine == | ||
+ | |||
+ | * Pull-Up-Widerstände sind auf den Kommunikationsleitungen notwendig, damit kein Blödsinn gesendet/empfangen wird, wenn ein Gerät ohne Strom ist | ||
+ | |||
+ | = Software = | ||
+ | |||
+ | * Selbstgebastelte (wenn sinnvoll User-Space-) Treiber für die Hardware | ||
+ | ** http://svn.nomike.com/playground/trunk/Navi/ | ||
+ | * MT3329 geht über gpsd schon | ||
+ | ** xgps-Testprogramm | ||
+ | |||
+ | * Linux 4.4-rc2 | ||
+ | ** Hardware und Verbindungen müssen im Device-Tree-File eingetragen sein (d.h. eingetragen werden) | ||
+ | |||
+ | * es existieren verschiedene Headerfiles für SPI. | ||
+ | ** Vorsicht! linux-headers-Paket im User Space installieren&verwenden, nicht /usr/src/linux/include | ||
+ | |||
+ | ** Device Tree | ||
+ | *** offiziell sollten für Peripherie Device-Tree-Overlays verwendet werden (wird zusätzlich zum Board-Device-Tree-File geladen): | ||
+ | *** Spezialsyntax __overlay__ { … } | ||
+ | *** dtc -@ xxx.dts | ||
+ | *** Linux Command Line: dtoverlay=xxx.dtb beim Booten | ||
+ | *** geht nicht in Debian, weil "/plugin/" unbekannt | ||
+ | |||
+ | *** Hack: Board-File editieren | ||
+ | *** bei unserem Host: sun7i-a20-olinuxino-lime2.dts | ||
+ | *** folgendes hinten anhängen und dann: make dtbs und die entstehende Datei sun7i-a20-olinuxino-lime2.dtb dem Bootvorgang zur Verfügung stellen | ||
+ | |||
+ | <pre> | ||
+ | &uart4 { | ||
+ | pinctrl-names = “default”; | ||
+ | pinctrl-0 = <&uart4_pins_a>; | ||
+ | status = “okay”; | ||
+ | }; | ||
+ | |||
+ | &spi2 { | ||
+ | status = “okay”; | ||
+ | pinctrl-names = “default”; | ||
+ | pinctrl-0 = <&spi2_pins_a>; | ||
+ | van0: tss463aa@1 { | ||
+ | compatible = “atmel,tss463aa”; | ||
+ | reg = <0>; | ||
+ | spi-max-frequency = <4000000>; | ||
+ | spi-cpol; | ||
+ | spi-cpha; | ||
+ | }; | ||
+ | }; | ||
+ | |||
+ | &i2c2 { | ||
+ | pinctrl-names = “default”; | ||
+ | pinctrl-0 = <&i2c2_pins_a>; | ||
+ | status = “okay”; | ||
+ | }; | ||
+ | |||
+ | &codec { | ||
+ | status = “okay”; | ||
+ | }; | ||
+ | </pre> | ||
[[Kategorie:Projekte]] | [[Kategorie:Projekte]] |
Version vom 30. November 2015, 01:49 Uhr
Ziele
- Linux-Navigationsgerät fürs Auto bauen mit ausschließlich Free Software.
- Einarbeiten in UART, SPI, I²C, SPI mit Linux >= 4.4
- Spaß haben
Hardware, abstrakt
- Stromversorgung
- GPS
- FM-Radio
- VAN Bus Controller für Display etc
Hardware, konkret
- 5 V "Anker" Netzteil für Auto
- MT3329 GPS Receiver
- TSS463AA VAN Bus Controller
- MCP2551 CAN Line Driver
- RDA5807M FM Radio
- TDA7850 4-Kanal-Audio-Verstärker
- PT7313E Audio Filter
- A20-OLinuXIno-LIME2 Host Computer
Verbindungen
- 5 V Netzteil für Auto: ISO-Stecker, USB
- MT3329 GPS Receiver: UART
- TSS463AA VAN Bus Controller: SPI
- MCP2551 CAN Line Driver: UART
- RDA5807M FM Radio: I²C, Antenne
- TDA7850 4-Kanal-Audio-Verstärker: Cinch
- PT7313E Audio Filter: I²C, Klinke
- A20-OLinuXIno-LIME2 Host Computer: Ethernet
Hardware-Fallstricke
FM-Antenne
- vorhanden am Auto etc
- hat möglicherweise eingebauten Verstärker
- schwierig zu finden (ist meist außerhalb des Autos)
- Phantomspeisung zur Stromversorgung nötig?
- Buchse? ISO oder DIN? Wahrscheinlich DIN.
- Impedanz? 100 Ω? 50 Ω?
EMI
- ElectroMagnetic Interference
- unsere Hardware stellt viele Hochfrequenzstörquellen dar
- Störung von außen gibt’s vielleicht auch
- Audioverstärker sollte nicht gestört werden
- Faradayscher Käfig nötig (1 oder mehr)
- Filterplatte mit Masse
- min. 2 Lagen
Ghost in the Machine
- Pull-Up-Widerstände sind auf den Kommunikationsleitungen notwendig, damit kein Blödsinn gesendet/empfangen wird, wenn ein Gerät ohne Strom ist
Software
- Selbstgebastelte (wenn sinnvoll User-Space-) Treiber für die Hardware
- MT3329 geht über gpsd schon
- xgps-Testprogramm
- Linux 4.4-rc2
- Hardware und Verbindungen müssen im Device-Tree-File eingetragen sein (d.h. eingetragen werden)
- es existieren verschiedene Headerfiles für SPI.
- Vorsicht! linux-headers-Paket im User Space installieren&verwenden, nicht /usr/src/linux/include
- Device Tree
- offiziell sollten für Peripherie Device-Tree-Overlays verwendet werden (wird zusätzlich zum Board-Device-Tree-File geladen):
- Spezialsyntax __overlay__ { … }
- dtc -@ xxx.dts
- Linux Command Line: dtoverlay=xxx.dtb beim Booten
- geht nicht in Debian, weil "/plugin/" unbekannt
- Device Tree
- Hack: Board-File editieren
- bei unserem Host: sun7i-a20-olinuxino-lime2.dts
- folgendes hinten anhängen und dann: make dtbs und die entstehende Datei sun7i-a20-olinuxino-lime2.dtb dem Bootvorgang zur Verfügung stellen
&uart4 { pinctrl-names = “default”; pinctrl-0 = <&uart4_pins_a>; status = “okay”; }; &spi2 { status = “okay”; pinctrl-names = “default”; pinctrl-0 = <&spi2_pins_a>; van0: tss463aa@1 { compatible = “atmel,tss463aa”; reg = <0>; spi-max-frequency = <4000000>; spi-cpol; spi-cpha; }; }; &i2c2 { pinctrl-names = “default”; pinctrl-0 = <&i2c2_pins_a>; status = “okay”; }; &codec { status = “okay”; };