Zum Inhalt springen

Navi: Unterschied zwischen den Versionen

Dannym (Diskussion | Beiträge)
Dannym (Diskussion | Beiträge)
 
(23 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 60: Zeile 60:
* hat möglicherweise eingebauten Verstärker
* hat möglicherweise eingebauten Verstärker
** Verstärker schwierig zu finden (ist meist außerhalb des Autos)
** Verstärker schwierig zu finden (ist meist außerhalb des Autos)
** Phantomspeisung zur Stromversorgung nötig?
** Phantomspeisung zur Stromversorgung irgendwo drin?
* Buchse? ISO oder DIN? Wahrscheinlich DIN.
* Buchse? ISO oder DIN? Wahrscheinlich DIN.
* Impedanz? 150 Ω (wahrscheinlich)? 50 Ω (wahrscheinlich nicht)? Antennenanpassung nötig?
* Impedanz? 150 Ω (wahrscheinlich)? 50 Ω (wahrscheinlich nicht)? Antennenanpassung nötig?
Zeile 85: Zeile 85:
** xgps-Testprogramm
** xgps-Testprogramm


== Linux 4.17.0-rc5 ==
== Mainline Linux ==
* Hardware und Verbindungen müssen im Device-Tree-File eingetragen sein (d.h. eingetragen werden)
* Hardware und Verbindungen müssen im Device-Tree-File eingetragen sein (d.h. eingetragen werden)


Zeile 99: Zeile 99:


<pre>
<pre>
#include <dt-bindings/pwm/pwm.h>
/ {
/ {
tss463aa {
compatible = “atmel,tss463aa”;
clocks = <&clk_out_a>;
clock-frequency = <8000000>;
pinctrl-0 = <&clk_out_a_pins_a>;
pinctrl-names = "default";
};
         pwm_bl: backlight {
         pwm_bl: backlight {
                 compatible = "pwm-backlight";
                 compatible = "pwm-backlight";
                 pwms = <&pwm0 0 50000>; /* FIXME settings; FIXME use pwm0_pins_a. */
                 pwms = <&pwm0 0 50000>; /* FIXME settings; FIXME use pwm0_pins_a. */
                 brightness-levels = <0 2 5 7 10 12 15 17 255>; /* FIXME more */
                 brightness-levels = <0 2 5 7 10 12 15 17 255>; /* FIXME more */
                default-brightness-level = <0>;


                 default-brightness-level = <0>;
                 pinctrl-names = "default";
                pinctrl-0 = <&bl_enable_pin>;
                 enable-gpios = <&pio 7 8 GPIO_ACTIVE_HIGH>; /* FIXME: LCD power: PH8. */
                 enable-gpios = <&pio 7 8 GPIO_ACTIVE_HIGH>; /* FIXME: LCD power: PH8. */
         };
         };
Zeile 121: Zeile 117:
                 backlight = <&pwm_bl>;
                 backlight = <&pwm_bl>;
                 /* TODO power-supply = <&vdd_pnl_reg> */
                 /* TODO power-supply = <&vdd_pnl_reg> */
                 /* TODO port@0 { ... ...endpoint { tcon0_out_panel } } */
                 #address-cells = <1>;
                #size-cells = <0>;
                port@0 {
                        reg = <0>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        panel_input: endpoint {
                                reg = <0>;
                                remote-endpoint = <&tcon0_out_lcd>;
                        };
                };
        };
};
 
&pio {
  ...
        bl_enable_pin: bl_enable_pin@0 {
                pins = "PH8";
                function = "gpio_out";
        };
        lcd_rgb888_pins: lcd-rgb888 {
                pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7",
                        "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15",
                        "PD16", "PD17", "PD18", "PD19", "PD20", "PD21", "PD22", "PD23",
                        "PD24", "PD25", "PD26", "PD27";
                function = "lcd0";
         };
         };
};
};
Zeile 129: Zeile 150:
pinctrl-0 = <&uart4_pins_a>;
pinctrl-0 = <&uart4_pins_a>;
status = “okay”;
status = “okay”;
};
tss463aa_clock_source: oscillator {
        #clock-cells = <0>;
        compatible = "fixed-clock";
        clock-frequency = <4000000>;
};
};


Zeile 138: Zeile 165:
compatible = “atmel,tss463aa”;
compatible = “atmel,tss463aa”;
reg = <0>;
reg = <0>;
                interrupt-parent = <&pio>;
                interrupts = <8 10 IRQ_TYPE_LEVEL_LOW>; /* PI10 / EINT22 */  /* TODO specify as gpio-in */
                interrupt-names = "activity";
spi-max-frequency = <4000000>;
spi-max-frequency = <4000000>;
spi-cpol;
spi-cpol;
spi-cpha;
spi-cpha;
                clocks = <&tss463aa_clock_source>;
                tss463aa,diagnosis-mode = <0>;
};
};
};
};
Zeile 167: Zeile 199:
         pinctrl-0 = <&pwm0_pins_a>, <&pwm1_pins_a>;
         pinctrl-0 = <&pwm0_pins_a>, <&pwm1_pins_a>;
         status = "okay";
         status = "okay";
};
&tcon0 {
        pinctrl-names = "default";
        pinctrl-0 = <&lcd_rgb888_pins>;
        status = "okay";
};
&tcon0_out {
        tcon0_out_lcd: endpoint@0 {
                reg = <0>;
                remote-endpoint = <&panel_input>;
        };
};
};
</pre>
</pre>
Zeile 187: Zeile 232:
== User-Space ==
== User-Space ==


* Zugriff auf SPI über spidev
* Zugriff auf SPI über spidev (Später: Selbstgeschriebenes CAN-Kernel-Modul)
** Linux-Source muss editiert werden., damit /dev/-Datei erscheint
** Linux-Source muss editiert werden., damit /dev/-Datei erscheint
** es existieren verschiedene Headerfiles für SPI. Vorsicht! linux-headers-Paket im User Space installieren&verwenden, nicht /usr/src/linux/include
** es existieren verschiedene Headerfiles für SPI. Vorsicht! linux-headers-Paket im User Space installieren&verwenden, nicht /usr/src/linux/include
Zeile 210: Zeile 255:
= TODO =
= TODO =


* besser: Interrupts im Kernel abarbeiten
* SocketCAN-Netzwerkmodul für VAN-Bus: https://github.com/daym/linux/blob/van/drivers/net/can/spi/tss463aa.c
** Vorteil: diese werden auch abgearbeitet wenn das User-Space-Programm gerade kaputt ist und wir stellen so sicher, dass das auslösende Gerät weiterarbeiten kann.
 
* noch besser: SocketCAN-Netzwerkmodul für VAN-Bus schreiben
= VAN Bus Monitoring Ergebnisse =
** einfachste Vorlage: vcan
 
== Participiants (Arbitration IDs) on the Bus (Peugeot 307 XS) ==
 
<pre>
0x4d4/RTR Radio Settings
0x4ec/RTR Track Time
0x4fc/RTR Lights in Instrument Array
0x524/RTR Car Status 2
0x554/RTR RDS Repeater
0x664/RTR Middle Console Buttons
0x824/RTR Speed and RPM
0x8a4/RTR Display
0x8c4/RTR Radio Buttons
0x9c4/RTR Steering Wheel Radio Remote Control Stick
0xe24/RTR VIN
</pre>
 
=== 0x4fc/RTR Lights in Instrument Array ===
 
* Offset 5:
** Mask 0x80: Headlight low
** Mask 0x40: Headlight high
** Mask 0x20: Front fog lights
** Mask 0x10: Rear fog lights
** Mask 0x08: Right turn indicator
** Mask 0x04: Left turn indicator
 
=== 0x664/RTR Middle Console Buttons ===
 
* Offset 0:
** Mask 0x02: Hazard
* Offset 2:
** Mask 0x40: Door lock
** Mask 0x0F: Brightness
* Offset 3:
** Mask 0x02: ESP off
 
=== 0x824/RTR Speed and RPM ===
 
* Offset 0 .. 1: RPM
** X/10 if X != 0xFFFF else None
* Offset 2 .. 3: Speed
** X/100 if X != 0xFFFF else None
* Offset 4 .. 6: Sequence
 
=== 0x8a4/RTR Display ===
 
* Offset 0:
** Mask 0x0F: Backlight intensity
** Mask 0x80: ???
 
=== 0x9c4/RTR Steering Wheel Radio Remote Control Stick ===
 
* Offset 0: "Buttons"
** Mask 0x02: Source (outermost right button)
** Mask 0x04: Decrease volume
** Mask 0x08: Increase volume
** Mask 0x40: Seek- (bottom)
** Mask 0x80: Seek+ (top)


[[Kategorie:Projekte]]
[[Kategorie:Projekte]]