Forum: Mikrocontroller und Digitale Elektronik fbtft_device ILI9341 und ST7789V hinzufügen? Raspbian


von epidam (Gast)


Lesenswert?

Hallo,

mein Raspbian Jessie zeigt folgende fbtft_devices an (siehe ganz unten). 
Wie kann ich ein ILI9341 und ST7789V device einfach hinzufügen?
Leider fällt es mir schwer hierzu ein Tutorial zu finden.



pi@raspberrypi:~ $ sudo modprobe fbtft_device name=list
modprobe: ERROR: could not insert 'fbtft_device': Operation canceled
pi@raspberrypi:~ $ dmesg | grep fbtft
[ 3000.852671] fbtft: module is from the staging directory, the quality 
is unkno 
wn, you have been warned.
[ 3000.857651] fbtft_device: module is from the staging directory, the 
quality i 
s unknown, you have been warned.
[ 3000.858755] fbtft_device: Supported displays:
[ 3000.858764] fbtft_device: adafruit18
[ 3000.858771] fbtft_device: adafruit18_green
[ 3000.858779] fbtft_device: adafruit22
[ 3000.858787] fbtft_device: adafruit22a
[ 3000.858795] fbtft_device: adafruit28
[ 3000.858803] fbtft_device: adafruit13m
[ 3000.858810] fbtft_device: admatec_c-berry28
[ 3000.858818] fbtft_device: agm1264k-fl
[ 3000.858826] fbtft_device: dogs102
[ 3000.858833] fbtft_device: er_tftm050_2
[ 3000.858841] fbtft_device: er_tftm070_5
[ 3000.858849] fbtft_device: ew24ha0
[ 3000.858856] fbtft_device: ew24ha0_9bit
[ 3000.858864] fbtft_device: flexfb
[ 3000.858871] fbtft_device: flexpfb
[ 3000.858879] fbtft_device: freetronicsoled128
[ 3000.858887] fbtft_device: hx8353d
[ 3000.858894] fbtft_device: hy28a
[ 3000.858901] fbtft_device: hy28b
[ 3000.858909] fbtft_device: ili9481
[ 3000.858916] fbtft_device: itdb24
[ 3000.858924] fbtft_device: itdb28
[ 3000.858931] fbtft_device: itdb28_spi
[ 3000.858938] fbtft_device: mi0283qt-2
[ 3000.858946] fbtft_device: mi0283qt-9a
[ 3000.858954] fbtft_device: mi0283qt-v2
[ 3000.858961] fbtft_device: nokia3310
[ 3000.858969] fbtft_device: nokia3310a
[ 3000.858976] fbtft_device: nokia5110
[ 3000.858984] fbtft_device: piscreen
[ 3000.858991] fbtft_device: pitft
[ 3000.858998] fbtft_device: pioled
[ 3000.859006] fbtft_device: rpi-display
[ 3000.859013] fbtft_device: s6d02a1
[ 3000.859021] fbtft_device: sainsmart18
[ 3000.859028] fbtft_device: sainsmart32
[ 3000.859036] fbtft_device: sainsmart32_fast
[ 3000.859043] fbtft_device: sainsmart32_latched
[ 3000.859051] fbtft_device: sainsmart32_spi
[ 3000.859059] fbtft_device: spidev
[ 3000.859066] fbtft_device: ssd1331
[ 3000.859073] fbtft_device: tinylcd35
[ 3000.859081] fbtft_device: tm022hdh26
[ 3000.859088] fbtft_device: tontec35_9481
[ 3000.859096] fbtft_device: tontec35_9486
[ 3000.859104] fbtft_device: upd161704
[ 3000.859111] fbtft_device: waveshare32b
[ 3000.859119] fbtft_device: waveshare22
[ 3000.859126] fbtft_device:

von Daniel B. (dbuergin)


Lesenswert?

Google Suchbegriffe: Raspberry ILI9341 framebuffer

Erster Link:

http://marcosgildavid.blogspot.ch/2014/02/getting-ili9341-spi-screen-working-on.html

Tönt schon mal vielversprechend

von epidam (Gast)


Lesenswert?

diesen Link habe ich auch gesehen, aber da steht was von Kernel neu 
kompilieren, und das will ich wenn möglich vermeiden...?

von Daniel B. (dbuergin)


Lesenswert?

Aha, das hast Du nicht geschrieben ;-)
Dann hast Du wohl verloren. Wenn keiner der vorhandenen FB-Treiber im
Kernel dieses SPI Display unterstützt, wird es nicht funktionieren.

Entweder es gibt eine angepasste Raspbian Distro oder du musst wohl oder
übel den Kernel und die Module neu kompilieren. Ist aber auch keine
Hexerei, gibt dutzende guter Tutorials im Netz.

von Harry L. (mysth)


Lesenswert?


von epidam (Gast)


Lesenswert?

> Entweder es gibt eine angepasste Raspbian Distro oder du musst wohl oder
> übel den Kernel und die Module neu kompilieren. Ist aber auch keine
> Hexerei, gibt dutzende guter Tutorials im Netz.

Kann man die Module nicht ohne Kernel neu kompilieren laden, 
integrieren? Wie bei Device-tree overlays?

Harry L. schrieb:
> Schau mal hier:
> https://github.com/notro/fbtft/wiki

bei diesem Link wurde ich leider auch nicht schlau. Klickt man auf FBTFT 
Raspbian kommt sofort was mit Touchpanel... aber sorry ich will keine 
Touchpanel integrieren.

von Harry L. (mysth)


Lesenswert?

Du musst das Touchpanel ja nicht nutzen, aber mit diesen Treibern hab 
ich bisher noch jedes Display das ich in den Fingern hatte am RPi zum 
Laufen bekommen.
Der ILI9341 wird auch unterstützt.

von epidam (Gast)


Lesenswert?

Harry L. schrieb:
> Du musst das Touchpanel ja nicht nutzen, aber mit diesen Treibern
> hab
> ich bisher noch jedes Display das ich in den Fingern hatte am RPi zum
> Laufen bekommen.
> Der ILI9341 wird auch unterstützt.

phuu ich blick da grad nicht durch, so vom Grundaufbau.
FBTFT schein ja auf meinem System schon vorhanden, nur werden da ja 
nicht die device angezeigt wie auf der notro/fbttft/wiki Seite (siehe 
ganz oben meine Liste)...
wie bekomme ich nun all die notro devices auf mein Raspbian Jessie?
Dann fehlt auf notro der ST7789V, da stellt sich dann die Frage wo 
ändere ich die command/data/gram adressen + Initialisierungen.

Wie gesagt ohne neu kompilieren eines Kernels, ist das möglich?? Danke

von Harry L. (mysth)


Lesenswert?

epidam schrieb:
> Wie gesagt ohne neu kompilieren eines Kernels, ist das möglich?? Danke

Ja, geht ohne den Kernel neu zu bauen.

Das Kernel-Modul muß mit den passenden Parametern geladen werden.
Plug&Play gibts da nicht.

Am besten ist es, sich in /etc/modprobe.d eine Datei mit den Parametern 
anzulegen.
Die wird dann automatisch berücksichtigt.

Da hilft nur Einlesen.

von epidam (Gast)


Lesenswert?

Harry L. schrieb:
> Am besten ist es, sich in /etc/modprobe.d eine Datei mit den Parametern
> anzulegen.
> Die wird dann automatisch berücksichtigt.

auf notro steht auch was von:
#######################
Make it permanent (Debian Jessie, Arch Linux, systemd)

Add to file /etc/modules-load.d/fbtft.conf

spi-bcm2835
fbtft_device
(the auto loading of spi-bcm2835 is too late for fbtft_device to find 
the spi bus, so it has to be manually loaded)

Add to file /etc/modprobe.d/fbtft.conf

options fbtft_device name=adafruit22
#####################

d.h. damit kann man die device laden...
nur wie kriege ich deren device aufs system?
Einfach die c-Datei oder evtl. die kompilierte in den richtigen Ordner 
kopieren?

von Harry L. (mysth)


Lesenswert?

die Module dürften bereits installiert sein.
Die Device-Nodes (in /dev) entstehen automatisch sobald die Module 
erfolgreich geladen werden.


In /etc/modules eingetragene Module werden beim Start automatisch 
geladen.
Bei mir sieht das so aus:


root@octopi:~# cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

spi-bcm2835
fbtft_device
flexfb



Mit modprobe kannst du die Module auch manuell laden

Bsp.: modprobe fbtft_device

Mit modinfo <module> kannst du dir die möglichen Parameter anzeigen 
lassen.

: Bearbeitet durch User
von epidam (Gast)


Lesenswert?

Harry L. schrieb:
> Die Device-Nodes (in /dev) entstehen automatisch sobald die Module
> erfolgreich geladen werden.
>
> In /etc/modules eingetragene Module werden beim Start automatisch
> geladen.

und wo finde ich die nicht geladenen Module bzw. das File Ili9431?. Wie 
ganz oben in der Auflistung zu sehen ist Ili9431 nicht vorhanden...

von Harry L. (mysth)


Lesenswert?

Also etwas Linux-Grundwissen wirst du dir schon selbst erarbeiten 
müssen.

Linux-Kernel-Module findet man unterhalb von /lib/modules
Es ist aber für dein Vorhaben auch egal, wo die tatsächlich liegen.
Die Mod-Utils finden die.

Ein Modul mit dem Namen ILI9341 gibt es auch nicht. und davon steht auch 
nichts im GitHub-Wiki.
Der ILI9341 ist einer der von fbtft unterstützten Controller.

von epidam (Gast)


Lesenswert?

Harry L. schrieb:
> Der ILI9341 ist einer der von fbtft unterstützten Controller.

ja und wo wäre das c-File von diesem ILI9341 abgelegt (auf einem 
frischen Raspbian Jessie)? Ich glaube nämlich immer noch das ich Diese 
irgendwie nachladen muss im internet....

von epidam (Gast)


Lesenswert?

Hallo, ich versuche es gerade gemäss dem ersten Link hier im Thread:
http://marcosgildavid.blogspot.ch/2014/02/getting-...

First Step, Installieren fbtft, bei fbtft steht dann folgendes:

INSTALLATION
  Download kernel sources

  From Linux 3.15
    cd drivers/video/fbdev
    git clone https://github.com/notro/fbtft.git

    Add to drivers/video/fbdev/Kconfig:   source 
"drivers/video/fbdev/fbtft/Kconfig"
    Add to drivers/video/fbdev/Makefile:  obj-y += fbtft/


was heisst installation kernel sources? zudem existiert auf mein 
raspbian kein fbdev Ordner :-(

von epidam (Gast)


Lesenswert?

ERGÄNZUNG:

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

man kann das zeug heute relativ einfach per devitree overlay aktivieren.

Nur eine Frage bleibt da?

Wo kann ich die Initialisierung und die GRAM/DRAM Befehle Adressen etc. 
anpassen? Wo finde ich die Quelldatei, den Treiber-Code zum ILI9341 zum 
Beispiel...

von Harry L. (mysth)


Lesenswert?

Also ich hab den Source nicht gebraucht, und du brauchst den auch nicht.
Der Treiber ist bereits Bestandteil des RPi-Kernel.

s.o. den kannst du mit modprobe direkt laden.

von epidam (Gast)


Lesenswert?

Harry L. schrieb:
> Also ich hab den Source nicht gebraucht, und du brauchst den auch nicht.
> Der Treiber ist bereits Bestandteil des RPi-Kernel.
>
> s.o. den kannst du mit modprobe direkt laden.

Also ich habe hier TFT's / LCD's mit Controller wie ILI9341, ST7775R, 
ST7701, ST7789V und dann noch ein "graustufen" IC ST7586 und mono IC 
ST75320 / ST75256


wo finde ich eine Liste aller unterstützten FBTFT Treiber im RPi-Kernel?

Falls ein Treiber nicht existiert muss ich ein exisiterenden anpassen 
und kompilieren. Also irgendwann muss ich wohl oder übel zum Code kommen 
wo die GRAM, DRAM Adressen festgelegt werden, wäre cool ein Hinweis zu 
bekommen wo wie ich danach suchen kann?

Hoffe letzteres geht auch noch ohne Kernel kompilieren...

von Harry L. (mysth)


Lesenswert?

Wer lesen kann...

Steht alles hier:
https://github.com/notro/fbtft/wiki

von epidam (Gast)


Lesenswert?

überlese ich immer was?

was ich suche ist eine Anleitung wo ich von einem File: 
https://github.com/notro/fbtft/blob/master/fb_ili9341.c

zum Beispiel folgende Funktion abändern und das File neu komplieren und 
verwenden kann:

static void set_addr_win(struct fbtft_par *par, int xs, int ys, int xe, 
int ye)
{
  fbtft_par_dbg(DEBUG_SET_ADDR_WIN, par,
    "%s(xs=%d, ys=%d, xe=%d, ye=%d)\n", _func_, xs, ys, xe, ye);

  /* Column address set */
  write_reg(par, 0x2A,
    (xs >> 8) & 0xFF, xs & 0xFF, (xe >> 8) & 0xFF, xe & 0xFF);

  /* Row adress set */
  write_reg(par, 0x2B,
    (ys >> 8) & 0xFF, ys & 0xFF, (ye >> 8) & 0xFF, ye & 0xFF);

  /* Memory write */
  write_reg(par, 0x2C);
}


Also quasi die Werte 0x2A, 0x2B und 0x2C hätte ich gern angepasst....
nur habe ich nur schon das Problem dieses File in meinem Raspbian zu 
finden. Und wohl viel schwieriger wird es sowas abzuändern oder 
abgeändert verwenden zu können?

von Harry L. (mysth)


Lesenswert?

Wie kommst du auf das schiefe Brett, daß du in der Lage wärst, einen 
Kernel-Treiber nach deinen Vorstellungen anzupassen, wenn du nicht 
einmal in der Lage bist, bereits fertige Module zum Laufen zu bringen?

von epidam (Gast)


Lesenswert?

Harry L. schrieb:
> Wie kommst du auf das schiefe Brett, daß du in der Lage wärst, einen
> Kernel-Treiber nach deinen Vorstellungen anzupassen, wenn du nicht
> einmal in der Lage bist, bereits fertige Module zum Laufen zu bringen?

zu Letzteres, sollte man zum laufen bringen mit all den Anleitungen 
ja...

Zu ersteres finde ich noch nicht so viel aber z.b das da:
http://www.forum-raspberrypi.de/Thread-fbtft-treiber-anpassen-hinzufuegen-ra8875

von epidam (Gast)


Lesenswert?

und das hier:

https://github.com/notro/fbtft/wiki/Development?

treiber sind in lib/module/video/fbtft

aber ja, ich glaube da liegt noch ein weiter weg vor mir...

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.