Forum: Mikrocontroller und Digitale Elektronik fbtft load module und Raspbian Jessie


von epidam (Gast)


Lesenswert?

Hallo, ich versuche auf einem neuen aktuellen Raspbian Jessie Pixel 
Image ein fbtft module zu laden genau nach dieser Anleitung:
https://github.com/notro/fbtft/wiki


1.) auf /boot/config.txt => das hier aktivieren: dtparam=spi=on (steht 
zwar nicht in der Anleitung, aber modprobe fbtft bringt sonst error)


2.) sudo modprobe fbtft_device name=adafruit22

3.) dmesg

dabei kommt ganz was anderes, hier der Schluss:
##################################
[   12.644214] Bluetooth: BNEP socket layer initialized
[  130.430750] fbtft: module is from the staging directory, the quality 
is unknown, you have been warned.
[  130.435285] fbtft_device: module is from the staging directory, the 
quality is unknown, you have been warned.
[  130.436071] spidev spi0.0: spidev spi0.0 500kHz 8 bits mode=0x00
[  130.436083] spidev spi0.1: spidev spi0.1 500kHz 8 bits mode=0x00
[  130.436104] bcm2708_fb soc:fb: soc:fb id=-1 pdata? no
[  130.436130] spidev spi0.0: Deleting spi0.0
[  130.437155] fbtft_device: GPIOS used by 'adafruit22':
[  130.437165] fbtft_device: 'reset' = GPIO25
[  130.437170] fbtft_device: 'led' = GPIO23
[  130.437180] spidev spi0.1: spidev spi0.1 500kHz 8 bits mode=0x00
[  130.437188] spi spi0.0: fb_hx8340bn spi0.0 32000kHz 8 bits mode=0x00
[  130.441533] fb_hx8340bn: module is from the staging directory, the 
quality is unknown, you have been warned.
[  130.442265] fb_hx8340bn spi0.0: 9-bit SPI not available, emulating 
using 8-bit.
[  130.442321] fb_hx8340bn spi0.0: fbtft_request_gpios: 
gpio_request_one('reset'=25) failed with -16
[  130.442363] fb_hx8340bn: probe of spi0.0 failed with error -16
pi@raspberrypi:~ $
########################################



4.) FRAMEBUFFER=/dev/fb1 startx
########################################
) Using system config directory "/usr/share/X11/xorg.conf.d"
(EE)
Fatal server error:
(EE) parse_vt_settings: Cannot open /dev/tty0 (Permission denied)
(EE)
(EE)
Please consult the The X.Org Foundation support
         at http://wiki.x.org
 for help.
(EE) Please also check the log file at 
"/home/pi/.local/share/xorg/Xorg.1.log" for additional information.
(EE)
(EE) Server terminated with error (1). Closing log file.
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error
Couldn't get a file descriptor referring to the console
########################################

5.) con2fbmap 1 1
########################################
pi@raspberrypi:~ $ con2fbmap 1 1
ioctl FBIOPUT_CON2FBMAP: Invalid argument
pi@raspberrypi:~ $
########################################

Nach 4.) oder 5.) kein Signale am SPI Output oder Clock....


welcher Schritt fehlt? was ist falsch?

von Harry L. (mysth)


Lesenswert?

was sagt "ls /dev/fb*" ?

von macload1 (Gast)


Lesenswert?

Ich glaube, du musst auch noch das richtige DeviceTree File laden. Das 
gibt dir dann Zugang zu den verschiedenen Pins.

von epidam (Gast)


Lesenswert?

Harry L. schrieb:
> was sagt "ls /dev/fb*" ?


pi@raspberrypi:~ $ ls /dev/fb*
/dev/fb0


macload1 schrieb:
> Ich glaube, du musst auch noch das richtige DeviceTree File laden. Das
> gibt dir dann Zugang zu den verschiedenen Pins.

welches overlay wäre dann zuständig um fbtft zu aktivieren?
auf jedenfall ist es keine Step für Step Anleitung die man für neue 
Raspbian benutzen kann.....

Eine Anleitung um per device tree ili9341 oder ST7735 zu aktivieren 
findet man auch nicht, bzw. die vorhandenen Overlays im Image sind wohl 
nicht die richtigen. D.h. ich müsste die Overlays irgendwie 
heineinkopieren vom internet? Deswegen wollte ich es wie oben versuchen 
ohne overlays....

von epidam (Gast)


Lesenswert?

was natürlich funktioniert ist ein einfaches:

dtoverlay=rpi-display


aber in den overlays darin:
ls /boot/overlays/rpi*

habe ich keine ahnung welcher controller was ist und es sind sehr 
wenige... :-(

Naja und sonst muss man wohl so ein overlay decompilieren, anpassen und 
wieder compilieren... nur wenn die GRAM,Command Adressen nicht passen - 
dann bringt es auch nichts so ein overlay anzupassen, deshalb hatte ich 
gehofft per modprobe was machen zu können.
Da scheint mir hat man zumindest mehr Treiber zur Verfügung....

von Harry L. (mysth)


Lesenswert?

epidam schrieb:
> Harry L. schrieb:
>> was sagt "ls /dev/fb*" ?
>
> pi@raspberrypi:~ $ ls /dev/fb*
> /dev/fb0

Dann ist das Modul zwar im Speicher, aber die Initialisierung ist 
fehlgeschlagen.

alles, was in der /boot/config.txt drin sein muß ist:
1
dtparam=spi=on

Der Rest geschieht später.

Die Modul-Parameter stehen in einer Datei in /etc/modprobe.d

Für mein 3,5" Waveshare-Display sieht das z.B. so aus:
1
root@octopi:/etc/modprobe.d# cat /etc/modprobe.d/waveshare35.conf 
2
# Raspbery Pi Rev. >1.00
3
options flexfb width=320  height=480  regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3
4
options fbtft_device debug=3 rotate=90 name=flexfb speed=16000000 gpios=reset:25,dc:24

Wie du siehst, befindet sich in der cmd-line auch die 
Initialisierungs-Sequenz.

Das alles musst du für dein Display natürlich entsp
rechend anpassen.
Alle erforderlichen Infos finden sich im fbtft-Wiki.

von epidam (Gast)


Lesenswert?

das zeug mit modprobe funktioniert irgendwie nicht mehr.

Das hier per dt overlay aber schon:

http://lallafa.de/blog/2015/03/fbtft-setup-on-modern-raspbian/

einzig bei x11 das eine file mit ..99.. heisst wenig anders irgendwas 
mit turbo..99

jetzt muss ich halt nur noch herausfinden wie man das rasberry-display 
overlay mit init-code ergänzen kann.  Den Treiber kann man im overlay 
bequem anpassen.

von epidam (Gast)


Lesenswert?

ah da ein beispiel overlay inkl. initialisierung.. schaut aber ein wenig 
komisch aus...

fragment@2 {
    target = <&spi0>;
    _overlay_ {
      /* needed to avoid dtc warning */
      #address-cells = <1>;
      #size-cells = <0>;

      piscreen: piscreen@0{
        compatible = "ilitek,ili9486";
        reg = <0>;
        pinctrl-names = "default";
        pinctrl-0 = <&piscreen_pins>;

        spi-max-frequency = <32000000>;
        rotate = <270>;
        bgr;
        fps = <30>;
        buswidth = <8>;
        regwidth = <16>;
        reset-gpios = <&gpio 25 0>;
        dc-gpios = <&gpio 24 0>;
        led-gpios = <&gpio 22 1>;
        debug = <0>;

        init = <0x10000b0 0x00
                0x1000011
          0x20000ff
          0x100003a 0x55
          0x1000036 0x28
          0x10000c2 0x44
          0x10000c5 0x00 0x00 0x00 0x00
          0x10000e0 0x0f 0x1f 0x1c 0x0c 0x0f 0x08 0x48 0x98 0x37 0x0a 
0x13 0x04 0x11 0x0d 0x00
          0x10000e1 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 
0x10 0x03 0x24 0x20 0x00
          0x10000e2 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 
0x10 0x03 0x24 0x20 0x00
          0x1000011
          0x1000029>;

von Harry L. (mysth)


Lesenswert?

Den Weg kannte ich noch nicht - erscheint mir ziemlich umständlich.

von epidam (Gast)


Lesenswert?

Harry L. schrieb:
> Den Weg kannte ich noch nicht - erscheint mir ziemlich
> umständlich.

wenn man den init anpassen muss oder den treiber, dann muss man das 
overlay neu kompilieren. Ja dann ist es vielleicht umständlicher...

gut und aktuell habe ich das problem den init-code richtig zu verstehen.


Aber wieso das per modprobe und modernes Raspbian nicht mehr läuft ist 
mir ein Rätsel....

von epidam (Gast)


Lesenswert?

bzgl. Init, also diese Werte => 0x10000b0, 0x1000011 ...0x100003a

das sind alles commands, also Register Index.

Die zahlen danach wie 0x55 etc. das sind Daten.

z.B. ist 0x10000e0 bis e2 das Gamma-Register.

je nach TFT-Controller benötigt man ja auch noch delays zwischen den 
commands, wie setzt man die wohl?

z.B. zwischen 0x1000011 (was exit sleep bedeutet) und den nächsten 
commands müsste eigentlich ein delay folgen?!

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.