Последний мегабайт

Тема в разделе "WASM.ASSEMBLER", создана пользователем NoName, 9 апр 2008.

  1. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    bugaga
     
  2. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    Значит имелся в виду первый мегабайт, доступный из реального режима?
    А там все довольно стандартно, ибо 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 :)

    зы:
    ня? ват зе фак "посльедний мьегобайд?"
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Почему первый то, есл иговорили про последний 0_о
     
  4. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Далеко не вся :-P В частности, без ACPI ты не сможешь узнать, какое железо стоит на матери, если это железо не подключено к PCI, ну и не сможешь сконфигурировать его, управлять питанием и т.п. В общем, ACPI -- вещь полезная, но довольно сложная и громоздкая.
     
  5. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    как насчет SMBIOS? ;)
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Код (Text):
    1. 000000000h    +---------------------+ 0   ----------------+  
    2.               |                     |                     |
    3.               | Base Memory         |                     | СП
    4. 0000BFFFFh    |                     |                     |
    5. 0000A0000h    +---------------------+ 640кб --------------+
    6.               |                     |
    7.               |                     |
    8. 0000B8000h    | Video Memory        |
    9.               |                     |
    10.               |                     |
    11. 0000BFFFFh    |                     |
    12. 0000C0000h    +---------------------+ 768кб
    13.               |                     |
    14.               | BIOS устройств      |
    15. 0000CFFFFh    |                     |
    16. 0000E0000h    +---------------------+ 896кб
    17.               |                     |
    18.               |                     |
    19. 0000F0000h    | BIOS материнки(1)   |
    20.               |                     |
    21. 0000FFFFFh    |                     |
    22. 000100000h    +---------------------+ 1мб ----------------+
    23.               |                     |                     |
    24.               | системная память(1) |                     |
    25.               |                     |                     |СП
    26.               |                     |                     |
    27. 000F00000h    +---------------------+ 15мб ---------------+
    28.               |                     |
    29.               | ISA hole            |
    30. 000FFFFFFh    |                     |
    31. 001000000h    +---------------------+ 16мб ---------------+
    32.               |                     |                     |
    33.               |                     |                     |
    34.               | системная память(2) |                     |СП
    35.               |                     |                     |
    36.               |                     |                     |
    37.               |                     |                     |
    38.               |                     |                     |
    39. TOLUD-x мб    +---------------------+ TOLUD-x мб          |
    40.               | Резерв BIOS'а       |                     |
    41.               | здесь располагается |                     |
    42.               | ACPI                |                     |
    43.               |                     |                     |
    44. TOLUD         +---------------------+ TOLUD --------------+
    45.               |                     |          
    46.               |   PCI hole (1)      |
    47. 0FFFFFFFFh    |                     |
    48. 100000000h    +---------------------+ 4ГБ ----------------+
    49.               |                     |                     |
    50.               |                     |                     |
    51.               |  системная память(3)|                     |СП
    52.               |                     |                     |
    53.               |                     |                     |
    54. TOUUD         +---------------------+ TOUUD---------------+
    55.               |                     |                    
    56.               | PCI hole (2)        |                    
    57.               |                     |                    
    58. 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):
    1. TOLUD         +---------------------+ TOLUD --------------+
    2.               | Регистры и память   |                     |                                                          
    3.               | различных PCI       |                     |                                                          
    4.               | устройств           |                     |                                                          
    5.               |                     |                     |                                                          
    6. 0FEC00000h    +---------------------+                     |
    7.               | I/O APIC            |                     |
    8.               |                     |                     |
    9. 0FEC80000h    +---------------------+                     |
    10.               | Local APIC          |                     |
    11.               |                     |                     |
    12. 0FECFFFFFh    +---------------------+                     |
    13.               |                     |                     |
    14.               |                     |                     |PCI hole (1)
    15. 4ГБ-Size BIOS +---------------------+                     |
    16.               |  BIOS FLASH         |                     |
    17.               |                     |                     |
    18. 0FFFFFFFFh    |                     |                     |
    19. 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.
     
  7. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    а я специально привел только часть поста SII в качестве цитаты ;)
     
  8. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    он не распаковывается а отображается ;)
    по-умолчанию (после RESET#) область PAM (0xF0000-0xFFFFF) не доступна для чтения/записи и все запросы перенаправляются по следующей цепочке: DMI -> PCI-E-to-PCI мост -> LPC (если в конфигурационном пространстве LPC включено декодирование запросов по адресам PAM) -> Flash BIOS (через шину LPC)