OSDev

для всех
Текущее время: 04 май 2024, 14:58

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Вопрос про память
СообщениеДобавлено: 24 мар 2011, 16:32 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
SII писал(а):
Из младших 640 Кбайт используются не "верхние 7 Кбайт", а произвольный объём, который надо определять, вызвав стандартную функцию БИОС для определения объёма нижней памяти (ИНТ 12 вроде как, смотреть лениво)... Использовать эту область нельзя ни в коем случае -- что там хранит БИОС, одному БИОСу известно

KIV писал(а):
Ясно. Значит нужно сохранить... Буду определять адрес с помощью int 0x12...

Внимание, предупреждаю о граблях!
Есть у меня мамка, совсем не древняя, которая по Int 12 выдаёт, что доступна вся нижняя память (640к). Однако, старшие 4к реально заняты BIOSом. Я туда размещал стек начального загрузчика, потом долго и мучительно боролся с тем, что в определённый момент переставала работать функция BIOS чтения данных с дисков. На других мамках начальный загрузчик работал, на этой - нет. При этом Int 15 функция 0E820h выдавала ПРАВИЛЬНУЮ карту памяти, с вырезанными верхними 4к из нижней памяти. Конечно, это ошибка BIOS. По всей видимости, мало кто пользуется устаревшим вызовом Int 12, по этой причине он и не работает, как следует.
Большинство современных плат использует верхние килобайты под себя. Поэтому я рекомендую в начальном загрузчике просто не трогать верхние две страницы нижней памяти (8к). Исключите их от греха подальше и забудьте про них.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос про память
СообщениеДобавлено: 24 мар 2011, 16:40 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
А в какой-то из древних плат, не помню, на какой, ИНТ 15 Е820 сообщала память, начиная с мегабайта, т.е. о нижней памяти как бы ничего и не знала вообще. В общем, бракоделы эти биосописатели...

А о какой мамке с дефективным ИНТ 12 речь и последняя ли версия БИОСа прошита?

Пы.Сы. А чтоб обойти ошибку, лучше не 8 кил исключать, а то, что сообщает ИНТ 12, и лишь в том случае, если он говорит о наличии всех 640 кил, отбрасывать на всякий случай 8 -- для обхода подобной ошибки в БИОСе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос про память
СообщениеДобавлено: 24 мар 2011, 18:18 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
SII писал(а):
А в какой-то из древних плат, не помню, на какой, ИНТ 15 Е820 сообщала память, начиная с мегабайта, т.е. о нижней памяти как бы ничего и не знала вообще.

Да, в этой же теме как раз отмечено. Сам с этим не сталкивался, но раз такой факт замечен - надо будет доработать детект памяти.

SII писал(а):
А о какой мамке с дефективным ИНТ 12 речь и последняя ли версия БИОСа прошита?

Мамка ASUS, или P5K SE, или P5GD1 - какая именно из них, сейчас точно навскидку не скажу. На P5GD1 версия BIOS последняя, на P5K SE - не уверен. Когда появится возможность, уточню модель и версию BIOS.

SII писал(а):
Пы.Сы. А чтоб обойти ошибку, лучше не 8 кил исключать, а то, что сообщает ИНТ 12, и лишь в том случае, если он говорит о наличии всех 640 кил, отбрасывать на всякий случай 8 -- для обхода подобной ошибки в БИОСе.

Лучше вообще делать развёрнутый парсер с проверками, в т.ч. на выпадение первого мегабайта и на совпадение инфы по Int12 и Int15. У меня код был в нулевом загрузчике (boot sector), там особо не развернёшься.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос про память
СообщениеДобавлено: 25 мар 2011, 00:00 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
На блок по адресу 9C00:0 ссылается ячейка 0x40E которая содержит сегмент блока. В принципе, можно её учитывать при рассчётах. Из справки Ralf Brown Interrupt List
--------B-M0040000E--------------------------
MEM 0040h:000Eh - SEGMENT OF EXTENDED BIOS DATA SEGMENT (PS/2, newer BIOSes)
Size: WORD


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB