7
votes

Accès direct à Linux Framebuffer - CopyArea

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 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?


0 commentaires

3 Réponses :


9
votes

Voici un code à init et fermer tramebuffer xxx


4 commentaires

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. :)



1
votes

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.


0 commentaires

3
votes

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: xxx pré>

à la place, faites ceci: p>

iFrameBufferSize = m_FixInfo.smem_len;


0 commentaires