Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » IBM PC-совместимое. До 2000 года включительно » Memory test |
<<Назад Вперед>> | Печать |
ElVovan_reloaded
Newbie
Откуда: Санкт-Петербург Всего сообщений: 42 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2008 |
При загрузке биос проверяет всю доступную машине память записывая/считывая все доступные ячейки памяти. Память свыше мегабайта он может считать находясь только в защищённом режиме, но загрузка операционнй системы начинает осуществляться в реальном режиме. С процессорами свыше 386 всё понятно - они, протестировав память могут вернуться в реальный режим. А что же происходит в 286, в котором такой возможности нет? Вот пример биоса, который тестирует в реальном режиме только 640 килобайт, а полностью доступную память проверяет в защищённом режиме, о чём и сообщает, но в итоге, когда дело доходит до загрузки операционной системы, процессор всё же оказывается в реальном режиме. Как он в него попадает? |
alecv
Advanced Member
Откуда: Санкт-Петербург Всего сообщений: 5545 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 окт. 2004 |
Читайте доки, они рулез. 1) У AT-286 имеется клавиатурная однокристалка, один из битиков портов через OR идет на сброс проца. Это позволяет сбросить процессор не сбрасывая всю машину. Первыми командами BIOS анализирует какой был сброс - теплый или холодный и продолжает в реальном режиме если теплый. 2) Некоторые последовательности команд защищенного режима (двойной fault) вызывают таки реальный сброс процессора. 3) И наконец (фокус!) имеется недокументированная команда 286-го LOADALL которая загружает все регистры, в том числе и сегментные. Команду активно юзают менеджеры памяти типа HIMEM и Windows 3.0 |
ElVovan_reloaded
Newbie
Откуда: Санкт-Петербург Всего сообщений: 42 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2008 |
Да вот как раз доки читаю, а точнее - книжку Гука, и при чтении возникают непонятки... Собственно вопрос: как процессор (который не 8088/8086) стартуя в После аппаратного сброса процессор выполняет первую инструкцию по реальном режиме дотягивается до указанных адресов |
0leg
Advanced Member
Откуда: Город-герой Тула Всего сообщений: 1991 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 6 окт. 2007 |
А он и не дотягивается... A20 во время старта закрыта, так что проц тупо обращается к адресу 0ffff0h и как раз в код БИОСа попадает. |
alecv
Advanced Member
Откуда: Санкт-Петербург Всего сообщений: 5545 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 окт. 2004 |
Во, из Ralf Brown Interrupt List: INT 08 C - CPU-generated (80286+) - DOUBLE EXCEPTION DETECTED Desc:\tcalled when multiple exceptions occur on one instruction, or an \t exception occurs in an exception handler Notes:\tcalled in protected mode if an interrupt above the defined limit of \t the interrupt vector table occurs \treturn address points at beginning of instruction with errors or the \t beginning of the instruction which was about to execute when the \t external interrupt caused the exception \tif an exception occurs in the double fault handler, the CPU goes into \t SHUTDOWN mode (which circuitry in the PC/AT converts to a reset); \t this "triple fault" is a faster way of returning to real mode on \t many 80286 machines than the standard keyboard controller reset |
madmaks
Full Member
Откуда: Россия, Ярославская обл., г. Углич Всего сообщений: 204 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 23 сен. 2008 |
ElVovan_reloaded написал: Отображение BIOS на адреса процессоара аппаратно реализуется на каждой матери по-своему, точно так же как адресация ОЗУ - memory holes, caсhed rom и т.д. Для программиста все АТ совместимые платы выглядят одинаково. Собственно вопрос: как процессор (который не 8088/8086) стартуя в Я думал, что адрес FFxxxx (этот адрес не может быть выражен с помощью cs:ip реального режима, а только с помощью регистра базы селектора cs, но так база cs выставляется после reset, а сброшена в 0 может быть первым межсегментным jmp) и адрес 0Fxxxx (выражается cs:ip реального режима) отображаются одинаково - в старшие 128 К ПЗУ, но говорят, что в защищенном режиме адреса 0Fxxxx отображаются в ОЗУ. Я не знаю как можно определить режим процессора снаружи, т.к. сигнала процика "защищенный режим" нет. |
madmaks
Full Member
Откуда: Россия, Ярославская обл., г. Углич Всего сообщений: 204 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 23 сен. 2008 |
0leg написал: Получается, что линия A20 управляет всеми линиями старше 1 Мегабайта: А20-А23? А он и не дотягивается... A20 во время старта закрыта, так что проц тупо обращается к адресу 0ffff0h и как раз в код БИОСа попадает |
<<Назад Вперед>> | Печать |
Полигон-2 » IBM PC-совместимое. До 2000 года включительно » Memory test |
0 посетителей просмотрели эту тему за последние 15 минут |
В том числе: 0 гостей, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |