Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   IBM PC-совместимое. До 2000 года включительно »   Memory test
RSS

Memory test

На 286

<<Назад  Вперед>> Печать
 
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
Да вот как раз доки читаю, а точнее - книжку Гука, и при чтении возникают непонятки...
[q]
После аппаратного сброса процессор выполняет первую инструкцию по
адресу начала последнего параграфа физически адресуемой памяти:
8086/88 по адресу FFFF0h; 80286 и 80386sx - по адресу FFFFF0h; 386dx и
выше - по адресу FFFFFFF0h.
[/q]
Собственно вопрос: как процессор (который не 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 написал:
[q]
Собственно вопрос: как процессор (который не 8088/8086) стартуя в
реальном режиме дотягивается до указанных адресов
[/q]
Отображение BIOS на адреса процессоара аппаратно реализуется на каждой матери по-своему, точно так же как адресация ОЗУ - memory holes, caсhed rom и т.д. Для программиста все АТ совместимые платы выглядят одинаково.

Я думал, что адрес FFxxxx (этот адрес не может быть выражен с помощью cs:ip реального режима, а только с помощью регистра базы селектора cs, но так база cs выставляется после reset, а сброшена в 0 может быть первым межсегментным jmp) и адрес 0Fxxxx (выражается cs:ip реального режима) отображаются одинаково - в старшие 128 К ПЗУ, но говорят, что в защищенном режиме адреса 0Fxxxx отображаются в ОЗУ. Я не знаю как можно определить режим процессора снаружи, т.к. сигнала процика "защищенный режим" нет.
madmaks
Full Member


Откуда: Россия, Ярославская обл., г. Углич
Всего сообщений: 204
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
23 сен. 2008
0leg написал:
[q]
А он и не дотягивается... A20 во время старта закрыта, так что проц тупо обращается к адресу 0ffff0h и как раз в код БИОСа попадает
[/q]
Получается, что линия A20 управляет всеми линиями старше 1 Мегабайта: А20-А23?
<<Назад  Вперед>> Печать
Полигон-2 »   IBM PC-совместимое. До 2000 года включительно »   Memory test
RSS

0 посетителей просмотрели эту тему за последние 15 минут
В том числе: 0 гостей, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS