Forum: Mikrocontroller und Digitale Elektronik Linux RPI VC4 Driver - DRM NullPointer Exception


von Holger K. (holgerkraehe)


Lesenswert?

Hallo zusammen

Ich versuche derzeit mein eigenes Display an einem RPI mittels DSI 
anzuschliessen. Dazu habe ich einen entsprechenden Treiber geschrieben.

Nun bekomme ich beim Aufstrarten jedoch folgende Errormeldungen (dmesg 
Ausgabe)

https://pastebin.com/NmRmZKhn

Die Probingfunktion des Treibers läuft einwandfrei durch. Der Treiber 
selbst stammt übrigens aus dem Rockchip-Linux repo und funktioniert dort 
einwandfrei. Habe den Treiber kopiert und konnte ihn ohne Probleme 
kompilieren.

Das Problem scheint irgendwo im DRM Treiber zu sein.
Am Ende wird
1
handle_conflicting_encoders
 aufgerufen.
Für mehr Debugging, habe ich drm.debug=0x1ff aktiviert. Dadurch sind die 
vielen DRM-Messages entstanden.

Beginnen tut die DSI initialisierung ab Zeile 260. Offenbar 
initialisiert das DRM System bereits zuvor ein Display mit 720x480 
Auflösung... Ein HDMI ist nicht angeschlossen. Es ist mir daher 
unerklärlich.

Vielleicht hat ja jemand eine Idee?

Gerne kann ich auch noch mehr Informationen liefern.
Aber am Ende bleibt die dmesg Ausgabe die einzige Debug-Information...


Danke schonmal

von Coronianer (Gast)


Lesenswert?

Stromversorgung geprüft bzw. stärkere angeschlossen?

von Holger K. (holgerkraehe)


Lesenswert?

Hab ich soeben geprüft.
Ist leider nicht das Problem.

Auch mit extern gespiesenem Display geschieht das gleiche.

von Holger K. (holgerkraehe)


Lesenswert?

Ich pushe mal... :)

von Anonym (Gast)


Lesenswert?

Holger K. schrieb:
> Dazu habe ich einen entsprechenden Treiber geschrieben.

Holger K. schrieb:
> Habe den Treiber kopiert und konnte ihn ohne Probleme
> kompilieren.

Was nun? Es wäre hilfreich wenn du das kernelmodul als binary hochladen 
könntest und am besten noch den source code verlinkst.

von Holger K. (holgerkraehe)


Angehängte Dateien:

Lesenswert?

Selbstverständlich gerne!

Habe meine eigenen Sourcen plus ko Module angehängt.
Wer möchte, findet hier noch das kompilierte vmlinux

https://gofile.io/d/LlldIi

Dieses beinhaltet auch debugging symbole!

Die original sourcen kommen von hier:

https://gitlab.com/TeeFirefly/linux-kernel/blob/7408b38cfdf9b0c6c3bda97402c75bd27ef69a85/drivers/gpu/drm/panel/panel-simple.c

Der SourceCode wurde in diesen Kernel integriert:

https://github.com/raspberrypi/linux/tree/rpi-4.14.y

Einfach die beiden Dateien ersetzt und gebuildet.

Danke für eure Unterstützung!

Anonym schrieb:
> Was nun? Es wäre hilfreich wenn du das kernelmodul als binary hochladen
> könntest und am besten noch den source code verlinkst.

Kopiert!

Ich habe auch schon versucht den PC mittels addr2line in eine Angabe der 
Datei mit Zeilennummer umzuwandeln. Leider klappt das nicht, da der PC 
wohl in den virtuellen Adressraum zeigt.
1
  3.548684] task: b99cad00 task.stack: b9ada000
2
[    3.553643] PC is at handle_conflicting_encoders+0x124/0x2c4 [drm_kms_helper]
3
[    3.561401] LR is at drm_mode_object_put.part.0+0x44/0x80 [drm]
4
[    3.567558] pc : [<7f27a998>]    lr : [<7f20c908>]    psr: 60000013
5
[    3.574096] sp : b9adbc58  ip : b9adbc00  fp : b9adbcac
6
[    3.579556] r10: 7f2864b4  r9 : 00000000  r8 : b7911c30
7
[    3.585023] r7 : 00000002  r6 : b7b5d7c0  r5 : 00000000  r4 : 00000000
8
[    3.591847] r3 : 00000006  r2 : 00000000  r1 : 00000000  r0 : b7911c30
9
[    3.598651] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
10
[    3.606062] Control: 10c5383d  Table: 379b006a  DAC: 00000055
11
[    3.612032] Process plymouthd (pid: 174, stack limit = 0xb9ada210)
12
[    3.618438] Stack: (0xb9adbc58 to 0xb9adc000)

Die Adresse 7f27a998 liefert jedenfalls nur ??:0

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.