Значит имелся в виду первый мегабайт, доступный из реального режима? А там все довольно стандартно, ибо 16-битная совместимость, которую свято соблюдают производителе правельного железа. A0000-B8000 видеопамять, транслируемая с LFB AGP С0000 -VIDEO/VESA BIOS, с 16-битным кодом реального режима (видяха грузит его в Shadows RAM AGP) D0000-E0000 - в основном дырки, или BIOS-ы левых девайсов (типа сетевух или SCSI контролеров ) F0000 - System Bios, как правило это распакованый в Shadows RAM один из кусков ROM имиджа, который опять таки набит 16-битным кодом, реального режима (ну кудаж мы без него), да знакогенератором А насчет ACPI - вся полезность от него заключаеться лишь в срабатывании прерывания от нажатия на кнопочку POWER зы: ня? ват зе фак "посльедний мьегобайд?"
Далеко не вся :-P В частности, без ACPI ты не сможешь узнать, какое железо стоит на матери, если это железо не подключено к PCI, ну и не сможешь сконфигурировать его, управлять питанием и т.п. В общем, ACPI -- вещь полезная, но довольно сложная и громоздкая.
Код (Text): 000000000h +---------------------+ 0 ----------------+ | | | | Base Memory | | СП 0000BFFFFh | | | 0000A0000h +---------------------+ 640кб --------------+ | | | | 0000B8000h | Video Memory | | | | | 0000BFFFFh | | 0000C0000h +---------------------+ 768кб | | | BIOS устройств | 0000CFFFFh | | 0000E0000h +---------------------+ 896кб | | | | 0000F0000h | BIOS материнки(1) | | | 0000FFFFFh | | 000100000h +---------------------+ 1мб ----------------+ | | | | системная память(1) | | | | |СП | | | 000F00000h +---------------------+ 15мб ---------------+ | | | ISA hole | 000FFFFFFh | | 001000000h +---------------------+ 16мб ---------------+ | | | | | | | системная память(2) | |СП | | | | | | | | | | | | TOLUD-x мб +---------------------+ TOLUD-x мб | | Резерв BIOS'а | | | здесь располагается | | | ACPI | | | | | TOLUD +---------------------+ TOLUD --------------+ | | | PCI hole (1) | 0FFFFFFFFh | | 100000000h +---------------------+ 4ГБ ----------------+ | | | | | | | системная память(3)| |СП | | | | | | TOUUD +---------------------+ TOUUD---------------+ | | | PCI hole (2) | | | 1000000000h +---------------------+ 64ГБ СП- системная память TOLUD —Top of Low Usable DRAM зависит от количество системной памяти. Если мение 3ГБ то TOLUD= количество памяти Если больше 3Гб то TOLUD устанавливается в районе 3ГБ плюс минус несколько сот мб. TOUUD -Top of Upper Usable DRAM если у нас памяти более 3ГБ то часть ее перебрасывается за 4ГБ Если для ISA hole память пропадает, то для PCI hole (1) это расточительно 1ГБ терять поэтому ее переотображают на высшие адреса. Но не во всех материках. ISA hole(дыра) в современных компьютерах отключена. Но возможность задействовать до сих пор остается. Резерв BIOS'а примерно 1мб но может быть любого размера. О чем идет речь в этой ветке форума. ACPI очень важная вещь так как служит для управления энергообеспечением железа. Индетефикации некоторого железа. И плюс управления. Спецификация позволяет схоронить данные из таблицы ACPI и использовать это место под свои нужды. Но есть куски резерва которые нельзя использовать. В схему не вошло AGP Aperture так как как именно она работает точно не ясно. Известно что для встроенных и не только видеокарт есть возможность откусить часть системной памяти и прилепить ее к памяти видео карты. Предполагается что она также входит в резерв BIOS'a. Код (Text): TOLUD +---------------------+ TOLUD --------------+ | Регистры и память | | | различных PCI | | | устройств | | | | | 0FEC00000h +---------------------+ | | I/O APIC | | | | | 0FEC80000h +---------------------+ | | Local APIC | | | | | 0FECFFFFFh +---------------------+ | | | | | | |PCI hole (1) 4ГБ-Size BIOS +---------------------+ | | BIOS FLASH | | | | | 0FFFFFFFFh | | | 100000000h +---------------------+ 4ГБ ----------------+ BIOS FLASH может имеет различный размер 512кб, 1МБ, 2МБ Именно здесь находиться биос. Он распаковывается и помещается в первый мегабайт. А вообще тут система хитрая. Для написания ОС недостаточно выяснить размер системной памяти. Нужно еще определить дырки. Да и как упоминалось часть системной памяти переотобаожается на верхние адреса. Для этого есть хорошее средство BIOS Функция, eax,0e820h int 15h Выдаст доступные для ОС диапазоны памяти. И ряд не доступных. Если ее нет то применяем младшие функции которые выдаст размер памяти int 15h, eax=E801h Она выдаст размер памяти предполагается, что зарезервированная память будет отсечена. И INT 15h, AH=88h Но нужны дополнительные проверки на ACPI и ISA hole. Так как оги могут входить в этот диапазон SMBIOS он же DMI это филькина грамота. Она выводит поверхностные данные о некоторых устройствах. В основном присутствие отсутствие ну плюс не значительные данные. Но о том как с ними взаимодействовать она не говорит. Да еще может привирать. Для этих целей есть PnP BIOS и ACPI. Через них можно получить список устройств доступные им порты ввода вывода диапазоны памяти и используемые прерывания. ACPI уже зашит код для работы с устройствами. К примеру IRQ routing, для PCI устройств можно переназначить IRQ. А в некоторых случаях нужно просто назначить. Программирование это зависит от матерински. Так вот в ACPI включен код который позволяет не задумываться над такой вещью. Разбираю и выполняем и все работает. Windows сначала пробует ACPI потом собственные драйвера, а после PCI BIOS.
он не распаковывается а отображается по-умолчанию (после RESET#) область PAM (0xF0000-0xFFFFF) не доступна для чтения/записи и все запросы перенаправляются по следующей цепочке: DMI -> PCI-E-to-PCI мост -> LPC (если в конфигурационном пространстве LPC включено декодирование запросов по адресам PAM) -> Flash BIOS (через шину LPC)