OSDev http://osdev.su/ |
|
mmu не работает с video ram http://osdev.su/viewtopic.php?f=6&t=1012 |
Страница 1 из 2 |
Автор: | scuter [ 30 авг 2014, 00:45 ] |
Заголовок сообщения: | mmu не работает с video ram |
начал алокировать планировщик задач и сразу столкнулся с проблемами, когда ставлю CR3 сразу перестаёт всё работать но если из переадресации выкинуть video ram и BIOS то оно начинает работать дальше, но дальше я включаю эту переадресацию, и сразу же пишется fatall error где ошибка там не пишет. и чего с этим делать, на epromt и video ram нужно делать переадресацию иначе с этим делом ни как не поработаешь, почему fatall error срабатывает не понятно, изначально ставил виртуальную память такую же как и реальную, а потом собирался двигать страници. |
Автор: | pavia [ 30 авг 2014, 09:15 ] |
Заголовок сообщения: | Re: mmu не работает с video ram |
Ничего не понял. Кто пишет "fatall error"? Цитата: где ошибка там не пишет. Цитата: сразу перестаёт всё работать Так сразу или место ошибки неизвестно? Пройдись пошагово посмотри где вылетает. В каком режиме ядра работаешь и какой режим у страниц выставлен? И какой режим у каталога страниц? |
Автор: | Himik [ 30 авг 2014, 12:28 ] |
Заголовок сообщения: | Re: mmu не работает с video ram |
scuter писал(а): начал алокировать планировщик задач и сразу столкнулся с проблемами, когда ставлю CR3 сразу перестаёт всё работать но если из переадресации выкинуть video ram и BIOS то оно начинает работать дальше Как это "выкинуть"? Страничная трансляция действует на всё адресное пространство без исключений. |
Автор: | scuter [ 30 авг 2014, 19:07 ] |
Заголовок сообщения: | Re: mmu не работает с video ram |
Himik писал(а): Как это "выкинуть"? Страничная трансляция действует на всё адресное пространство без исключений. это значит там где раньше были epromt и video ram подставлена переадресация на другую область или поставлены нули в таблицах pavia писал(а): Так сразу или место ошибки неизвестно? Пройдись пошагово посмотри где вылетает. да пива у тебя хорошие вопросы, VM выдаёт окошко на котором написано fatall error и выключается. (где и в чём была ошибка не пишет. VM не знает от чего у него эпилепсия.) место где происходит первая ошиюка, Код: mov eax, [paging_dir] mov cr3, eax записи page directory entries выгледят так Цитата: 00232003 00233003 00234003 00235003 00236003 00237003 00238003 00239003 0023A003 записи page table entries выгледят так Цитата: 00000003 00001003 00002003 00003003 00004003 00005003 00006003 место где происходить вторая ошибка, Код: mov eax, cr0
or eax, 0x80000001 mov cr0, eax |
Автор: | pavia [ 30 авг 2014, 19:36 ] |
Заголовок сообщения: | Re: mmu не работает с video ram |
переходишь в защищенный режим. Включаешь прерывания и только затем включаешь пейджинг. Смотришь по прерываниям где ошибка. |
Автор: | scuter [ 30 авг 2014, 20:36 ] |
Заголовок сообщения: | Re: mmu не работает с video ram |
это в защищённом режиме такое происходит, и прерывания в этот момент включены. виртуальная машина даёт фатальную ошибку. |
Автор: | Himik [ 30 авг 2014, 21:21 ] |
Заголовок сообщения: | Re: mmu не работает с video ram |
scuter, для поиска ошибок лучше использовать Bochs. В файл bochsout.txt записывается состояние регистров процессора на момент фатальной ошибки или выключения. Можно использовать и отладчик bochsdbg. |
Автор: | scuter [ 30 авг 2014, 21:27 ] |
Заголовок сообщения: | Re: mmu не работает с video ram |
я не дебагер спрашивал, а причину ошибки, в каком месте ошибка я и так знаю и состояние регистров мне тоже известно. |
Автор: | Himik [ 30 авг 2014, 21:39 ] |
Заголовок сообщения: | Re: mmu не работает с video ram |
Процессорные команды и приведённая часть таблицы страниц - рабочая. Если эта адресация идёт линейно до 0x100000 (1МБ), то ошибки не будет. Если состояние регистров известно, то смотри cr2 - адрес страницы. Фатальная ошибка в VM скорей всего от того, что твои обработчики General protection и Page fault не ловят исключения. Защищённый режим тем и интересен, что все ошибки программы можно закрыть внутри системы. |
Автор: | pavia [ 31 авг 2014, 09:38 ] |
Заголовок сообщения: | Re: mmu не работает с video ram |
scuter. Падение виртуальной машины может быть только в двух случаях. 1. Не включены прерывания и мы имеем тройную ошибку. 2. Неправильное поведение виртуальной машиной. 1. Случай проверяться вручную надо быть внимательным. 2. Второй случай трудно отследить и понять. Подобное наблюдал в Boche ошибка происходила при выключенных прерываниях при переходи в защищенный режим. Но Bochs проглатывал и продолжал работать причем непредсказуемое число команд. Если я добавлял после включение страничной адресации он падал на ней. Лично я думаю что место ошибки определено не верно. Скорее всего она где-то раньше и возможно связана не со страницами. А например с самим переходом в защищенный режим. Попробуй при переходи в защищенный режим не отключать прерывания. Как вариант надо проверять весь код. Напиши простой пример выкинь всё лишнее оставь включение защищенного режима и страничную адресацию и потихоньку добавляй другие функции и процедуры. Тоже у меня был баг долго искал. В реальном режиме у меня есть функция VirtualCopy которая использовала карту страниц для копирования с одного виртуального адреса в другую. Долго не знал что в ней баг. При определенных условиях срабатывал внутренний if. В одной из веток этого if к адресу не добавлялось смещение. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |