Erreur framebuffer

Erreur framebuffer

by Ugo Damiano -
Number of replies: 9
Bonjour,
Quand nous tentons de charger le driver fourni par vos soins sur la FPGA, une ligne blanche s'affiche en bas de l'écran et ensuite plus rien ne se passe. Nous tentons d'utiliser les différents programmes de tests mais les images ne s'affichent pas. Lorsque le  driver n'est pas chargé l'écran alterne entre le blanc, le noir, le rouge, le bleu et le vert, est-ce normal? Comment pouvons-nous remédier à ce problème?
Cordialement,

Ugo Damiano
In reply to Ugo Damiano

Re: Erreur framebuffer

by Sahand Kashani-Akhavan -
> Lorsque le  driver n'est pas chargé l'écran alterne entre le blanc, le noir, le rouge, le bleu et le vert, est-ce normal?

Est-ce que t'es vraiment sûr ? Sans driver chargé normalement l'écran devrait juste avoir un backlight. Une fois chargé l'écran devrait ensuite devenir noir. Finalement, une fois une application est lancée, tu devrais voir du vrai contenu sur le LCD.

Quels sont les étapes que t'as suivi pour charger le driver ?

Malheureusement je n'ai pas de carte sur moi pour tester, mais il me semble que tu peux faire un `lsmod` puis regardes si tu vois le driver de la LCD dans la liste qui est affichée.
In reply to Ugo Damiano

Erreur framebuffer

by Ugo Damiano -
L'écran que nous utilisons utilise le connecteur central de la board et le présupposé petit connecteur pour écran tactile. On a make le driver, on l'a scp et puis insmod, à ce moment là l'écran transitionne en dégradé vers cette ligne blanche. Le lsmod affiche bien le driver. L'écran est plus petit que celui qui utilise l'autre connecteur.
In reply to Ugo Damiano

Re: Erreur framebuffer

by Sahand Kashani-Akhavan -

> L'écran est plus petit que celui qui utilise l'autre connecteur.

Ah, du coup c'est probablement de driver qui ne fonctionne pas correctement à cause de l'utilisation de mauvais paramètres. Regardes le contenu du device tree fourni dans le template du projet (sw/hps/linux/device_tree/socfpga_cyclone5_de0_sockit_prsoc.dts).

Est-ce que tu vois ça ?

#include "socfpga_cyclone5_de0_sockit.dts"
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>

#define VGA_SEQUENCER_REG_CSR 0x00
#define VGA_SEQUENCER_REG_HBP 0x04
#define VGA_SEQUENCER_REG_HFP 0x08
#define VGA_SEQUENCER_REG_VBP 0x0c
#define VGA_SEQUENCER_REG_VFP 0x10
#define VGA_SEQUENCER_REG_HDATA 0x14
#define VGA_SEQUENCER_REG_VDATA 0x18
#define VGA_SEQUENCER_REG_HSYNC 0x1c
#define VGA_SEQUENCER_REG_VSYNC 0x20

/ {
soc {
display {
compatible = "prsoc,display";
reg = <0xff200080 0x40 /* Frame manager <address span> */
0xff200000 0x80>; /* VGA sequencer <address span> */
interrupts = <GIC_SPI 40 IRQ_TYPE_EDGE_RISING>;
prsoc,screen-width = <480>;
prsoc,screen-height = <272>;
prsoc,buffer-width = <480>;
prsoc,buffer-height = <816>; // -> 3 buffers
prsoc,reg-init = <VGA_SEQUENCER_REG_VSYNC 10>,
<VGA_SEQUENCER_REG_VBP 2>,
<VGA_SEQUENCER_REG_VDATA 272>,
<VGA_SEQUENCER_REG_VFP 3>,
<VGA_SEQUENCER_REG_HSYNC 41>,
<VGA_SEQUENCER_REG_HBP 47>,
<VGA_SEQUENCER_REG_HDATA 480>,
<VGA_SEQUENCER_REG_HFP 8>,
<VGA_SEQUENCER_REG_CSR 1>;
};
};
};


Si ton écran est plus petit que celle sur la photo dans l'énoncé, alors il faudrait modifer les lignes en rouge ci-dessus pour spécifier la bonne résolution sans quoi le driver fera des accès DMA trop grands et il y aura des distrotions de l'image. De tête je me souviens que le petit écran avait une résolution de 320x240. Dans ce cas utilses les valeurs suivantes pour les lignes rouges:

prsoc,screen-width = <320>;
prsoc,screen-height = <240>;
prsoc,buffer-width = <320>;
prsoc,buffer-height = <720>; // -> 3 buffers

Puis recompiles le device tree, remplaces le .dtb sur la carte sd par la nouvelle version, puis boot la carte et réessaies de faire le insmod du driver et de lancer un program.
In reply to Sahand Kashani-Akhavan

Re: Erreur framebuffer

by Ugo Damiano -
Nous avons modifié ces paramètres dans le device tree. Toutefois cela ne semble pas arranger notre problème.
Attachment erreur_soc_lcd.jpg
In reply to Ugo Damiano

Re: Erreur framebuffer

by Sahand Kashani-Akhavan -

En reregardant le device tree, j'ai vu qu'il y a aussi ces lignes après:

 prsoc,reg-init = <VGA_SEQUENCER_REG_VSYNC 10>,
 <VGA_SEQUENCER_REG_VBP 2>,
 <VGA_SEQUENCER_REG_VDATA 272>,
 <VGA_SEQUENCER_REG_VFP 3>,
 <VGA_SEQUENCER_REG_HSYNC 41>,
 <VGA_SEQUENCER_REG_HBP 47>,
 <VGA_SEQUENCER_REG_HDATA 480>,
 <VGA_SEQUENCER_REG_HFP 8>,
 <VGA_SEQUENCER_REG_CSR 1>;
Est-ce que tu peux aussi modifier ceux-là ? Navré, je ne les avais pas vu avant.
In reply to Sahand Kashani-Akhavan

Re: Erreur framebuffer

by Ugo Damiano -

Pas de problème. Merci pour ta promptitude!

Il y a du progrès nous avons un écran noir maintenant après avoir chargé le driver. Avant, le chargement du driver les couleurs blanc, noir, rgb s'affichent toujours. Nous avons executé "fb_multiple_buffering_example.c" en mode debug et il ne semble pas y avoir d'erreur, il effectue la boucle principale sans rien afficher. Nous n'arrivons pas à utiliser l'éxecutable fbv pour afficher les images de test.

In reply to Ugo Damiano

Re: Erreur framebuffer

by Sahand Kashani-Akhavan -

Pour être sûr de comprendre correctement la situation:

Si tu alimentes juste la carte avec l'écran, mais ne fait aucun insmod, alors par défaut tu vois le rgb défiler sur l'écran?

Le seul truc auquel je peux penser est que d'autres charactéristiques de cet écran soient différents dans le device tree (le "Front Porch" et "Back Porch"). Il faudrait lire la datasheet du module pour trouver (ou inférer ces valeurs). Je ne pourrais malheureusement pas le faire tout de suite.

Dans le pire des cas, ce serait plus simple d'aller prendre un des écrans plus grands, ceux qui font 480x272, car je sais qu'avec ceux-là tout marche correctement (je n'avais jamais essayé avec le petit auparavent). Tu peux monter en INF117 et regarder sur la table tout à droite de la salle. Normalement le matériel pour PSOC s'y trouvait. S'il y a des écrans supplémentaires là-bas avec la bonne résolution, tu peux en prendre un et essayer. Je pense que certains étudiants pour les projets de semestre travaillent aujourd'hui donc la porte devrait être ouverte.

In reply to Sahand Kashani-Akhavan

Re: Erreur framebuffer

by Ugo Damiano -

Finalement, nous avons testé sur une autre carte car nous n'avions pas le connecteur pour l'autre écran sur la nôtre. Nous avons eu de la peine avec les connecteurs de l'écran LCD et on pensait qu'il ne marchait pas.

Mon camarade et moi te remercions pour les réponses rapides et précises! Bonne soirée!

In reply to Sahand Kashani-Akhavan

Re: Erreur framebuffer

by Markus Thomas Ding -

Bonjour,

Nous avons également une board avec un des écrans plus petits,nous avons essayé les différentes indications fournies par Sahand mais n'avons pas été capable de faire fonctionner l'écran.

Serait-il possible que nous passions demain en INF117 pour essayer avec un autre écran?

Cordialement,

Timothée et Markus