Chaque fois que j'essaie d'écrire un pixel dans le LFB du mode VESA, j'obtiens un défaut de page où la page est présente et a été lue. Mon implémentation de pagination provient de la série OS de James Molloy. Je l'ai essayé identité cartographie du LFB comme suit:Défaut de page lors de la tentative d'accès au LFB VESA avec pagination activée
for (unsigned int i = 0xFD000000; i < 0xFE000000; i += 0x1000) {
page_t* pg = get_page(i, 1, kernel_directory);
alloc_page(pg, 1, 1);
}
Ce sont les prototypes de ces fonctions:
page_t* get_page(uint32_t address, int make, page_directory_t* dir);
void alloc_frame(page_t* page, int is_kernel, int is_writeable);
Lorsque la pagination est désactivé, je suis capable d'écrire des pixels à la LFB sans problèmes. Suis-je une identité de mappage incorrect du LFB? Y a-t-il autre chose que je dois faire pour l'identifier correctement? Aucune suggestion?
L'afficheur d'origine n'utilise pas Linux, ils créent leur propre OS –
La pagination est un mécanisme du matériel (CPU et MMU), donc quel que soit le système d'exploitation que vous écrivez. Vous devez respecter les règles de pagination définies par le matériel lorsque vous activez son mécanisme de pagination. – Akr
Oui, mais les routines Linux ne l'aideront pas avec le code de [série OS de James Molloy] (http://www.jamesmolloy.co.uk/tutorial_html/) –