Je veux vous déplacer très rapidement un rectangle sur une tramebuffer dans une application linux incorporée. J'ai trouvé que la fonction cfb_copyarea code> peut être utile. Mais je ne trouve aucun ioctl sur le périphérique / dev / fb pour appeler la fonction. Ou cette fonction peut-elle être appelée directement? P>
3 Réponses :
Voici un code à init et fermer tramebuffer
Que vous pour votre réponse. Mais ce n'est pas ce que j'ai demandé. Je ne veux pas déplacer les pixels moi-même dans la mémoire napée - je veux utiliser la fonction de noyau CFB_COPYAREA pour cela.
J'aime cette réponse. J'ai créé un programme de test basé sur cela ici: Gist.github.com/1482697
@Rafalrusin, content que cela vous ait aidé.
@Rafalrusin: Merci d'avoir partagé le programme. Cela me sera beaucoup d'aide pour moi. :)
Autant que je sache après quelques jours de recherche, il n'y a pas d'IOCTL pour invoquer cette fonction. Je dois écrire mon propre appel de système de préférence dans un module de noyau. Ou copier l'algorithme la source du noyau et l'utiliser dans l'espace utilisateur via la mémoire napée. p>
Notez que ce code n'est pas entièrement correct, bien qu'il fonctionne sur de nombreux appareils Linux, sur certains, il ne le fera pas. Pour calculer la taille de la tramebuffer, ne faites pas cela: à la place, faites ceci: p> iFrameBufferSize = m_FixInfo.smem_len;