Et bien j'ai finalement réussi à faire ce que je souhaitais. J'ai modifier un des drivers de mplayer (celui qui écrit des images pnm au lieu d'ouvrir le buffer vidéo). Les images ne sont plus écrites sur le disque mais envoyé par messagerie IPC. Mon appli les récupèrent puis les affiche.
Peux tu me donner plus d'info la dessus? Veux-tu dire que le QtWebKit 1.0 du QML est capable de lire des vidéos simplement du fait qu'il supporte du html5 ???
J'affiche déjà quelques pages html (docbook) pour de l'aide en ligne.
Pour le boitier, regarde chez Okatron / OKW, ils font des produits nommés "interface terminale", bonne qualité…
Pour la dalle, tu peux trouver du résistif pas cher, à piloter avec un ADC, voir trouver un contrôleur ADC vers liaison série quelconque…
Perso, utiliser un Rasperry pour ça c'est un peu galère, quand tu vois des systèmes déjà prêt à l'emploi (FriendlyARM par ex. fournit dalle LCD plus Touchscreen…
Connecter la dalle tactile
Tester la liaison i2c (et surtout retrouver l'adresse de la dalle - normalement 0x4b ou 0x4c - à faire dalle déconnectée puis connecté)
Cross compiler i2c-tools et lancer un i2cdetect sur le bus i2c
A partir des sources du noyau 3.0, récupérer et coller dans voss sources les fichiers suivants:
/drivers/input/touchscreen/atmel_mxt_ts.c
/include/linux/i2c/atmel_mxt_ts.h
Ajouter les lignes suivantes au fichier /drivers/input/touchscreen/atmel/KConfig
config TOUCHSCREEN_ATMEL_MXT
tristate "Atmel mXT I2C Touchscreen"
depends on I2C
help
Say Y here if you have Atmel mXT series I2C touchscreen,
such as AT42QT602240/ATMXT224, connected to your system.
If unsure, say N.
To compile this driver as a module, choose M here: the
module will be called atmel_mxt_ts.
Ajouter les lignes suivantes au fichier /drivers/input/touchscreen/atmel/Makefile
Pour l'IRQ il est fortement déconseillé de s'en passer !! Sinon tu es obligé de poller en permanence le mxt224, pas bon pour pleins de raisons...
Attention, j'ai patché le driver mxt224 afin de faire une petit lecture i2c d'un registre de temps en temps car parfois l'IRQ n'est pas relâché...
Suite et fin de mon aventure avec mon touchscreen:
Donc, je me retrouve avec un /dev/input/event0. Que faire maintenant?
Avant, avec le touchscreen d'origine, j'avais un /dev/touchscreen. En faisant un cat dessus, je voyais un paquet de data passer lorsque je touchais le TS. Je tente un cat /dev/input/event0, qui ne marche pas.
En fouinant, je trouve un soft qui s'appelle evtest et qui permet justement de tester "brut" les événements de type input. Compilation, et lancement, bingo, le driver mXT envoi bien des événements!!!
On continu en configurant la tslib sur /dev/input/event0: touchscreen non supporté! :-/
Du coup je jette un oeil aux sources, et me rend compte que mon TS est multitouch, alors que la tslib ne le supporte pas :-S
Heureusement, tslib fonctionne avec des "modules", ici, le fichier de conf de tslib est configuré ainsi: module_raw input
Houra! Je trouve quelqu'un qui a codé un module compatible multitouch, recompile et test:
Ca tourne !!!!!!
Malheureusement, ça tourne pendant un certain temps pluis plus rien. Après analyse, la ligne IRQ (faling edge) reste en bas -> Une IT loupée par le driver :-/
Pas le coeur à trouver où le driver des ITs foire, j'ajoute un schedule_delayed_work à la fin de l'ISR afin de lire le mXT 100ms plus tard, ainsi la ligne IRQ remonte toujours après 100ms. Ok, pas très propre mais 3 lignes en plus et un polling différé seulement après l'IT, j'ai vu pire ;-)
Voici des infos complémentaires, qui m'ont permis de mettre en oeuvre le driver !
Après avoir compilé mon driver, j'ai vu qu'il était bien chargé, mais aucun device n'y était attaché.
J'ai fini par comprendre qu'il fallait indiqué quel device (et à quelle adresse) était connecté à notre plateforme. En fonction du nom de ce device, linux cherche un driver associé. Dans mon driver, j'ai une liste (d'alias) de nom de devices supportés. Les deux doivent matcher pour que le driver probe le device
J'ai recompilé une première fois et le driver m'a gratifié d'un "not enough params". Après recherche, j'ai trouvé que le driver avait besoins d'infos spécifiques à ma plateforme, en l'occurence, à quelle dalle le mXT224 était connecté (taille, nombre de lignes X/Y, orientation, etc). J'en ai profité pour lui coller une IRQ,
Recompile, lancement, et là, le driver trouve mon device et créer un /dev/input/qlq chose
Ça sent bon, je remets en ordre mon rootfs pour jouer avec et je reviens!
Tout d'abord, merci de votre participation, je n'ai que très peu de réponse ailleurs pour mon souci.
Il faut dire pour motiver les foules que je viens de loin: Jamais fait de linux embarqué, j'ai réussi grâce au net à mettre sur pied un environnement de cross-compilation, personnalisation, compilation et installation de u-boot, kernel, rootfs, lib Qt, puis développement d'une IHM avec ce nouveau framework, superbe interface graphique avec QML !! J'adore !
Le plus difficile arrive donc avec le changement de l'écran (pas assez lumineux) et de la dalle tactile (plus résistante face aux utilisateurs). C'est là où je m'attendais à avoir le plus de problème !!!
Bon, aujourd'hui je creuse cette histoire de bind, qui visiblement permet de lier un driver à un device...
Ensuite je vais trouver un bon cours sur le fonctionnement détaillé de /dev/input. J'ai encore des flous à ce sujet. En effet, mon ancien touchscreen était accessible en faisant un cat /dev/touchscreen, et je ne visualise pas très bien où-comment le /dev/input intervient...
Et pour finir, je déboulotterai le fichier /drivers/input/touchscreen/atmel_mxt_ts.c afin de mieux comprendre comment il fonctionne. J'y ai déjà jeté un coup d'oeil et les différences avec mon ancien driver de dalle (via une communication série propriétaire) sont nombreuses:
- L'ancien fonctionnait de manière un peu bâtard il me semble, car il y avait deux drivers, un pour gérer la liaison série et qui routait ça par un copy_to_user dans /dev/touchscreen-1wire, et un autre fichier qui utilisait les possibilités de /dev/input via des input_report_abs(). Par contre je n'ai pas trouvé le lien entre les deux :-(
# RESOLU
Posté par totolito . En réponse au message Lire une vidéo sur ARM avec Qt. Évalué à 0.
Bonjour/Bonsoir!
Et bien j'ai finalement réussi à faire ce que je souhaitais. J'ai modifier un des drivers de mplayer (celui qui écrit des images pnm au lieu d'ouvrir le buffer vidéo). Les images ne sont plus écrites sur le disque mais envoyé par messagerie IPC. Mon appli les récupèrent puis les affiche.
Ca marche niquel et c'est assez fluide B)
Merci pour votre participation!
# Merci...
Posté par totolito . En réponse au message Lire une vidéo sur ARM avec Qt. Évalué à 1.
Merci à tous pour ces pistes! Je regarde ça __^
[^] # Re: qwebview et html5 ?
Posté par totolito . En réponse au message Lire une vidéo sur ARM avec Qt. Évalué à 0.
Peux tu me donner plus d'info la dessus? Veux-tu dire que le QtWebKit 1.0 du QML est capable de lire des vidéos simplement du fait qu'il supporte du html5 ???
J'affiche déjà quelques pages html (docbook) pour de l'aide en ligne.
Comment puis-je tester tes dires?
# Lire une vidéo sur ARM avec Qt
Posté par totolito . En réponse au message Lire une vidéo sur ARM avec Qt. Évalué à 1.
Bonjour,
Merci de ta réponse!
L'intérêt est de ne pas avoir à embarquer X11 sur un petit micro avec une petite mémoire !!!
Je suis sur un micro ARM11 (plateforme type mini6410)
[^] # Re: epaisseur
Posté par totolito . En réponse au message Monter tablette tactile avec raspberry pi. Évalué à 0.
Salut à toi!
Pour le boitier, regarde chez Okatron / OKW, ils font des produits nommés "interface terminale", bonne qualité…
Pour la dalle, tu peux trouver du résistif pas cher, à piloter avec un ADC, voir trouver un contrôleur ADC vers liaison série quelconque…
Perso, utiliser un Rasperry pour ça c'est un peu galère, quand tu vois des systèmes déjà prêt à l'emploi (FriendlyARM par ex. fournit dalle LCD plus Touchscreen…
# Micro-tuto dalle tactile mxt224
Posté par totolito . En réponse au message Dalle tactile i2c, driver et linux sur mini6410: comment l'utiliser?. Évalué à 1.
Connecter la dalle tactile
Tester la liaison i2c (et surtout retrouver l'adresse de la dalle - normalement 0x4b ou 0x4c - à faire dalle déconnectée puis connecté)
Cross compiler i2c-tools et lancer un i2cdetect sur le bus i2c
A partir des sources du noyau 3.0, récupérer et coller dans voss sources les fichiers suivants:
/drivers/input/touchscreen/atmel_mxt_ts.c
/include/linux/i2c/atmel_mxt_ts.h
Ajouter les lignes suivantes au fichier /drivers/input/touchscreen/atmel/KConfig
Ajouter les lignes suivantes au fichier /drivers/input/touchscreen/atmel/Makefile
Editer votre fichier décrivant votre plateforme (mach-xxx.c)
Note: On suppose q'un bus i2c est déjà présent et configuré...
Ici l'id de l'irq câblée est 16... A adapter.
Lancer la configuration du noyau
Activer la compilation du driver en mode noyau:
Device Driver -> Input Device Support -> Touchscreen -> Atmel mXT I2C Touchscreen.
Désactiver les drivers de la dalle actuelle si nécessaire
Device Driver -> Input Device Support à Touchscreen -> Votre dalle
cross-compiler (ex avc un arm)
Reflasher le noyau puis démarrer
Un dmesg | grep mxt doit vous lister ce type de lignes (ici addr i2c = 0x4b)
Ce qui signifie que le driver a bien détecté le mXT!
Tester le /dev/input/event0 à l’aide du programme evtest:
ou sur un event précis:
evtest /dev/input/event0
Récuperer et extraire la tslib
Pré-Configurer
Configurer (ex avec un arm11)
cross-Compiler et récupérer les libs dans --prefix
Tester le fonctionnement avec un ts_calibrate puis ts_test
Note: Après installation sur la cible, éditer ts.conf afin d’utiliser le module input:
module_raw input. Faire un fichier de conf de la tslib. ex:
[^] # Re: Même galère
Posté par totolito . En réponse au message Dalle tactile i2c, driver et linux sur mini6410: comment l'utiliser?. Évalué à 0.
Désolé pour la réponse tardive mais je n'en ai pas été notifié...
Pour le module multitouch, la dernière release de tslib intègre le support multitouch.
Source ici:
https://github.com/kergoth/tslib/downloads
Pour définir ma plateforme, j'ai tapé dans ce fichier:
/arch/arm/mach-s3c64xx/mach-mini6410.c
A toi de trouver le tiens...
Pour info dans mon mach-mini6410:
Pour l'IRQ il est fortement déconseillé de s'en passer !! Sinon tu es obligé de poller en permanence le mxt224, pas bon pour pleins de raisons...
Attention, j'ai patché le driver mxt224 afin de faire une petit lecture i2c d'un registre de temps en temps car parfois l'IRQ n'est pas relâché...
bonne chance...
[^] # Suite et fin
Posté par totolito . En réponse au message Dalle tactile i2c, driver et linux sur mini6410: comment l'utiliser?. Évalué à 2.
Oyé!
Suite et fin de mon aventure avec mon touchscreen:
Donc, je me retrouve avec un /dev/input/event0. Que faire maintenant?
Avant, avec le touchscreen d'origine, j'avais un /dev/touchscreen. En faisant un cat dessus, je voyais un paquet de data passer lorsque je touchais le TS. Je tente un cat /dev/input/event0, qui ne marche pas.
En fouinant, je trouve un soft qui s'appelle evtest et qui permet justement de tester "brut" les événements de type input. Compilation, et lancement, bingo, le driver mXT envoi bien des événements!!!
On continu en configurant la tslib sur /dev/input/event0: touchscreen non supporté! :-/
Du coup je jette un oeil aux sources, et me rend compte que mon TS est multitouch, alors que la tslib ne le supporte pas :-S
Heureusement, tslib fonctionne avec des "modules", ici, le fichier de conf de tslib est configuré ainsi: module_raw input
Houra! Je trouve quelqu'un qui a codé un module compatible multitouch, recompile et test:
Ca tourne !!!!!!
Malheureusement, ça tourne pendant un certain temps pluis plus rien. Après analyse, la ligne IRQ (faling edge) reste en bas -> Une IT loupée par le driver :-/
Pas le coeur à trouver où le driver des ITs foire, j'ajoute un schedule_delayed_work à la fin de l'ISR afin de lire le mXT 100ms plus tard, ainsi la ligne IRQ remonte toujours après 100ms. Ok, pas très propre mais 3 lignes en plus et un polling différé seulement après l'IT, j'ai vu pire ;-)
Donc tout roule !!!!
Merci de votre soutien.
Pour info: totolito@gmail.com
# Des niouz...
Posté par totolito . En réponse au message Dalle tactile i2c, driver et linux sur mini6410: comment l'utiliser?. Évalué à 3.
Voici des infos complémentaires, qui m'ont permis de mettre en oeuvre le driver !
Après avoir compilé mon driver, j'ai vu qu'il était bien chargé, mais aucun device n'y était attaché.
J'ai fini par comprendre qu'il fallait indiqué quel device (et à quelle adresse) était connecté à notre plateforme. En fonction du nom de ce device, linux cherche un driver associé. Dans mon driver, j'ai une liste (d'alias) de nom de devices supportés. Les deux doivent matcher pour que le driver probe le device
J'ai recompilé une première fois et le driver m'a gratifié d'un "not enough params". Après recherche, j'ai trouvé que le driver avait besoins d'infos spécifiques à ma plateforme, en l'occurence, à quelle dalle le mXT224 était connecté (taille, nombre de lignes X/Y, orientation, etc). J'en ai profité pour lui coller une IRQ,
Recompile, lancement, et là, le driver trouve mon device et créer un /dev/input/qlq chose
Ça sent bon, je remets en ordre mon rootfs pour jouer avec et je reviens!
# L'auteur prend peur \o/
Posté par totolito . En réponse au message Dalle tactile i2c, driver et linux sur mini6410: comment l'utiliser?. Évalué à 2.
Salut par ici!
Tout d'abord, merci de votre participation, je n'ai que très peu de réponse ailleurs pour mon souci.
Il faut dire pour motiver les foules que je viens de loin: Jamais fait de linux embarqué, j'ai réussi grâce au net à mettre sur pied un environnement de cross-compilation, personnalisation, compilation et installation de u-boot, kernel, rootfs, lib Qt, puis développement d'une IHM avec ce nouveau framework, superbe interface graphique avec QML !! J'adore !
Le plus difficile arrive donc avec le changement de l'écran (pas assez lumineux) et de la dalle tactile (plus résistante face aux utilisateurs). C'est là où je m'attendais à avoir le plus de problème !!!
Bon, aujourd'hui je creuse cette histoire de bind, qui visiblement permet de lier un driver à un device...
Ensuite je vais trouver un bon cours sur le fonctionnement détaillé de /dev/input. J'ai encore des flous à ce sujet. En effet, mon ancien touchscreen était accessible en faisant un cat /dev/touchscreen, et je ne visualise pas très bien où-comment le /dev/input intervient...
Et pour finir, je déboulotterai le fichier /drivers/input/touchscreen/atmel_mxt_ts.c afin de mieux comprendre comment il fonctionne. J'y ai déjà jeté un coup d'oeil et les différences avec mon ancien driver de dalle (via une communication série propriétaire) sont nombreuses:
- L'ancien fonctionnait de manière un peu bâtard il me semble, car il y avait deux drivers, un pour gérer la liaison série et qui routait ça par un copy_to_user dans /dev/touchscreen-1wire, et un autre fichier qui utilisait les possibilités de /dev/input via des input_report_abs(). Par contre je n'ai pas trouvé le lien entre les deux :-(
Merci de votre attention ;-)
# Des nouvelles...
Posté par totolito . En réponse au message Dalle tactile i2c, driver et linux sur mini6410: comment l'utiliser?. Évalué à 3. Dernière modification le 17 octobre 2011 à 21:56.
Flute j'ai perdu mon post!
Je disais donc que je suis désolé pour le multiposte, mais j'ai trop hésité entre les deux sections -.-
Sinon j'ai recompiilé le noyau pour y intégrer le driver atmel.
Voilà aussi le résultat d'une commande :
Je suppose que le driver est bien "chargé". Je cherche maintenant à comprendre à quoi sert bind, uevent et ubind..
Merci à vous