pour la seconde question, je comprend pas trop le fonctionnement de taper directement sur l'adresse physique mais via une adresse virtuelle
En fait, tu cumules ;-)
/dev/fb0 est un device bloc.
On peut l’ouvrir,
Il a une taille
faire des fseek dedans
Le driver associé, contient des hook (crochet) pour intercepter les appels à open, read, write, _seek, etc.
Lorsque tu fais un mmap, tu as aussi un hook dédié qui met en place la zone mémoire (c’est une déduction, si quelqu’un de plus expert que moi peut confirmer... infirmer aussi, même si ce ne serait pas sympas). Mais, potentiellement, le driver va t’autoriser à accéder à une zone restreinte, pas à l’ensemble du device. Donc, il va utiliser le driver mémoire pour programmer la MMU pour rediriger la page mémoire vers la vrai mémoire. Le fait que tu vois une adresse différente à chaque fois n’est pas un problème, c’est le contrôleur mémoire du CPU qui gère cette redirection.
[^] # Re: it works !!
Posté par Anthony Jaguenaud . En réponse au message /dev/fb0 apparement j'ai pas tout compris. Évalué à 2. Dernière modification le 06 juillet 2021 à 10:41.
En fait, tu cumules ;-)
/dev/fb0 est un device bloc.
Le driver associé, contient des hook (crochet) pour intercepter les appels à
open,read,write,_seek, etc.Lorsque tu fais un mmap, tu as aussi un hook dédié qui met en place la zone mémoire (c’est une déduction, si quelqu’un de plus expert que moi peut confirmer... infirmer aussi, même si ce ne serait pas sympas). Mais, potentiellement, le driver va t’autoriser à accéder à une zone restreinte, pas à l’ensemble du device. Donc, il va utiliser le driver mémoire pour programmer la MMU pour rediriger la page mémoire vers la vrai mémoire. Le fait que tu vois une adresse différente à chaque fois n’est pas un problème, c’est le contrôleur mémoire du CPU qui gère cette redirection.