OSDev http://osdev.su/ |
|
Графический режим http://osdev.su/viewtopic.php?f=6&t=418 |
Страница 1 из 1 |
Автор: | diger [ 25 май 2011, 16:34 ] |
Заголовок сообщения: | Графический режим |
Не знает ли кто-нибудь , как уже будучи в протектед режиме (multiboot-подобный загрузчик) включить граф. режим ? (svga) Подкиньте хотя бы доков на эту тему (или хотя бы на тему перехода из протектед режима в реальный, если это возможно) |
Автор: | SII [ 25 май 2011, 19:16 ] |
Заголовок сообщения: | Re: Графический режим |
Всё, касающееся переходов между режимами процессора, описано тыщу раз в тыще руководств и статей. В частности, абсолютно все необходимое имеется в интеловском и АМДшном мануалах. Ну а если самому искать и вникать лениво, то мы тут уже бессильны... |
Автор: | Himik [ 25 май 2011, 19:33 ] |
Заголовок сообщения: | Re: Графический режим |
Если используется multiboot-подобный загрузчик, то можно попробовать включить графический режим самим загрузчиком, задав соответствующие параметры. Сам не пробовал. Есть несложный способ перехода в реал, путём сброса процессора. Предварительно в ячейку 0x467 надо записать адрес старта кода реального режима (в ячейке смещение и сегмент по 16 бит). Ещё надо обнулить базу IDT. Потом в CMOS записывается код режима перезагрузки, а в контроллер клавиатуры сигнал сброса. //Set RM //Set restart pointer *(long*)0x467 = <сегмент> * 0x10000 + <смещение>; //Set IDT base to 0 _asm xor eax,eax _asm mov dword ptr [pIDT+2],eax //База IDT _asm lidt fword ptr [pIDT] outp(0x70, 0x8F); //CMOS - restart attrib and disable NMI outp(0x71, 5); _asm push 0 _asm popfd _asm clts outp(0x64, 0xFE); //Сброс _asm hlt |
Автор: | achesnokov [ 25 май 2011, 20:46 ] |
Заголовок сообщения: | Re: Графический режим |
Переключение графического режима проще всего делать с помощью BIOS. Про переключение из protected mode в real mode с целью вызовов BIOS дискуссия была на этом сайте в viewtopic.php?f=6&t=416. Непосредственно ссылка переход из protected в real mode: http://www.sudleyplace.com/pmtorm.html В качестве справочника можно также использовать исходники GRUB/stage2/asm.S В этом файле есть функции real_to_prot, prot_to_real. А также примеры использования их, в частности для обращения к int 0x10. Кроме того, неплохой пример с графикой в защищенном можно посмотреть: http://www.wasm.ru/article.php?article=lfbdos |
Автор: | Yoda [ 26 май 2011, 14:05 ] |
Заголовок сообщения: | Re: Графический режим |
Diger, я понял суть твоего вопроса. Дам направление, куда копать. У тебя есть только следующие возможности: 1. Временное переключение из Protected Mode в Real Mode для вызова соответствующей функции BIOS. Это самый простой, но не самый хороший способ. 2. Virtual 86 в защищённом режиме и вызов в нём функций BIOS. Требует создания соответствующего обработчика исключений, дескриптора задачи и механизма коммуникации с процессом V86. Посложней будет, да и в 64-битном режиме V86 не поддерживается. 3. Напрямую работать с железом (регистрами) видеокарты. Т.е. писать (мини)драйвер видюшки. 4. Если VESA BIOS Extention (VBE) видюшки поддерживает защищённый режим, можно воспользоваться им. |
Автор: | 418ImATeapot [ 27 май 2011, 10:38 ] |
Заголовок сообщения: | Re: Графический режим |
Извините, если не по теме, но... Сама ОС будет работать в PM или RM? Если в PM, то драйвер все равно нужен. Может, сначала загрузить его? А если в RM, то какой смысл в ГРАБ? Кстати, в стандарте VBE3 есть понятие PM entry point. Можно использовать вместо прерывания 10. Правда, не у всех BIOS оно есть. Подробнее см. здесь: http://www.petesqbsite.com/sections/tutorials/tuts/vbe3.pdf на странице 29 в акробатном исчислении. Еще графический режим хорошо описан у Пирогова В. Ю., но там надо копаться. |
Автор: | diger [ 30 май 2011, 10:28 ] |
Заголовок сообщения: | Re: Графический режим |
Цитата: Это самый простой, но не самый хороший способ. А чем этот способ плох ? Впринцыпе можно сделать , чтобы переходить в RM нужно было только для установления видео-режима , а рисовать уже в PM через видео память... |
Автор: | Yoda [ 20 июл 2011, 23:58 ] |
Заголовок сообщения: | Re: Графический режим |
diger писал(а): А чем этот способ плох ? Этот способ плох тем, что ОС полностью теряет контроль над машиной. Пока работает BIOS в реальном режиме, ни один драйвер ОС не сможет обработать никакого прерывания. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |