Непонятки с BIOS

Тема в разделе "WASM.OS.DEVEL", создана пользователем blueboar, 21 мар 2011.

  1. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Купил себе книжку "BIOS - дизассемблирование, модификация, программирование", и попробовал "отдизасмить" именно тот BIOS который там приведен (FoxConn 955X7AA-8EKRS2). В общем-то все идет более-менее гладко, прошел программирование микрокода, а дальше пошли вопросы.
    Первый - в CMOS 128 бит (вообще 256, но старшие включаются ПОСЛЕ этого кода, записью в регистры PCI и их пока "как бы" нет) - а этот код пишет в регистр C1. Как это? Или старший бит не имеет значения? Тогда что это за байт 41h - такого нет в спецификации?

    Код (Text):
    1. 4580    B0C1        MOV AL, C1
    2. 4582    E670        OUT 70, AL
    3. 4584    E6EB        OUT EB, AL
    4. 4586    E471        IN AL, 71
    5. 4588    E6EB        OUT EB, AL
    6. 458A    24F0        AND AL, F0
    7. 458C    3C50        CMP AL, 50
    8. 458E    C3      RET
    И вот такая работа с MSR - тоже нигде не описанными
    Код (Text):
    1. E958    8BF8        MOV DI, AX
    2. E95A    66C1E710    SHL EDI, 10
    3. E95E    66B82C000000    MOV ECX, 0000002C
    4. E964    0F32        RDMSR           ;MSR_FREQUENCY_ID???
    5. E966    660FBAE015  BT EAX, 15
    6. E96B    7209        JB E976
    7. E96D    660FBAE014  BT EAX, 14
    8. E972    0F820801    JB EA7E
    9.  
    10. E976    66B998010000    MOV ECX, 00000198
    11. E97C    0F32        RDMSR           ;IA32_PERF_STATUS
    12. E97E    8ADA        MOV BL, DL
    13. E980    BC86E9      MOV SP, E986
    14. E983    E90A5C      JMP 4590        ;--> на включение верхних 128 байтов CMOS
    Что сей кусок кода делает для меня загадка.
     
  2. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Во-первых. не бит, а байт. Да, старший бит не влияет на выбираемый индекс ячейки (см. в соседней ветке, для чего он используется). Из 128 ячеек относительно стандартизировано назначение примерно у четверти.

    Они описаны, но только в старых даташитах. На то регистры и модельно-специфические, чтобы "исчезать" или менять свое назначение в более новых процессорах.
     
  3. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    1. Да, байт, а не бит. Написалось автоматом.
    2. Можно адрес соседней ветки?
    3. То есть, я так понимаю, C1-->41 - не стандартизирована, и спецификаций на эту тему нет?
    4. Сколько не искал спецификации Intel на старые процессоры - все ведут к http://www.intel.com/Assets/PDF/manual/253669.pdf . Там есть MSR'ы в конце, но куча таблиц, и я там запутался, какую смотреть для моего i955x чипсета?
     
  4. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Нашел в данном документе MSR 198H для Core 2 Duo - MSR_PERF_STATUS - но биты с 32 по 39 - Reserved. А мы берем из EDX:EAX, регистр DL - то есть как раз с 32 по 39. Зачем?
    А MSR 2CH вообще отсутствует
     
  5. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    MSR -- это моделезависимый регистр процессора, а не чипсета. Если где и описаны, то в спецификациях на конкретные процессоры.
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    SII
    Как бы вы не правы. В набор чипов входит и процессор.

    blueboar
    Читай внимательнее i955 поддерживает процессоры Pentium 4. А у него есть
    . В тойже документации, но чуть ниже описаны регистры на другие модели.

    Ну что ты хочешь биос использует недокументированные возможности. Вот и изучай зачем. Если не путаю, то там хранится максимальное значение.
     
  7. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Pavia
    Процессор -- это не чипсет. То, что северный мост сейчас находится в одном корпусе (или даже кристалле) с процессором, не делает его процессором. MSRы -- это регистры процессора, а не чипсета.
     
  8. XVilka

    XVilka New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2010
    Сообщения:
    24
    Адрес:
    Moscow
    Да, у чипсета регистры пишуться и читаются через ин/аут команды.

    мср - ТОЛЬКо для процессора.

    Половина из них не задокументирована.
    Автор еще заинтересован в теме? Имею некоторый опыт в реверсе биосов.

    Award BIOS 6.00 - в этой матери не чистый авард - а его модификация от феникса. Потому и сильные отличия от книги.
    Новые фениксы отличаются вообще кардинально.
     
  9. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Заинтересован конечно :). Как раз сейчас время появилось.
     
  10. XVilka

    XVilka New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2010
    Сообщения:
    24
    Адрес:
    Moscow
    MSR надо смотреть по типу процессора в Intel 64 and IA-32 Architectures Software Developer's Manual том 3B Appendix B Model Specific Registers
    Во вторых, для реверса кровь из носа необходима документация на чипсет, а также вывод lspci.
    Я использую автопарсинг вывода lspci http://hg.droid-developers.org/bios_parse/src/6e9289a613c3/file_parser.py

    Веду работу над скриптованием в помощь реверса биосов (большей частью для помощи проекту coreboot)
    Также применяю технику отладки биоса в qemu/serialice http://rghost.net/5461054 + http://www.serialice.com/
    Вот еще пример (правда для арм, но принцип тот же) https://www.droid-developers.org/wiki/QEMU


    Пытаюсь как-то документировать работу, но не всегда хватает времени
    Если появился интерес - можно обращаться в личку.
     
  11. mega_john

    mega_john New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2008
    Сообщения:
    16
    я хоть и не автор, но сильно нуждаюсь в помощи...
    можете чтонибудь подсказать по такой теме http://www.wasm.ru/forum/viewtopic.php?id=39502 ?
     
  12. MisHel64

    MisHel64 Member

    Публикаций:
    0
    Регистрация:
    9 мар 2011
    Сообщения:
    182
    Господа, раз вы тут с биосами разбираетесь, то не могли бы посмотреть, сколько тиков (INT8/IRQ0) в сутках в ваших биосах.
    Именно в биосах, а не в документации.