dlinyj: (Default)
[personal profile] dlinyj
Наверное у многих читателей моего ЖЖ сложилось ложное представление, что я коллекционер старого железа, который только и делает что его ремонтирует и моет. Да, я занимаюсь этим эпизодически, стал писать об этом, потому что народ интересует текучка.

Однако, есть по настоящему интересные и зубодробительные штуки, например, как отлаживать код BIOS и реализовать свой "пошаговый" отладчик.


Суровая аппаратная отладка кода BIOS

К сожалению, я не разработчик материнской платы, у меня нет её схемотехники, а также отсутствует отладочные инструменты. У меня стояла задача запустить BIOS схожей архитектуры на этом железе (зачем и почему, пока рассказывать не буду). Без всяких отладок, прошивка вела себя странно, она и не зависала с ошибкой, но и не загружалась. И мне хотелось понять, на каком же этапе она отваливается.

Сама прошивка BIOS у меня была открыта в IDA Pro, задача была понять в каком же месте кода происходит отвал. Конечно, бесценно знать состояние регистров, месторасположение, реализовать пошаговую отладку, но мне пока не хотелось сильно влезать паяльником в плату и пока морально не готов сильно перепахивать код основного BIOS.

Решение пришло само собой: нужно узнать адрес, где же происходит всякое нехорошее. А адрес можно узнать с помощью логического анализатора, который будет установлен на микросхему BIOS, точно на ножки адреса.


Таракан отладочных щупов

Идея оказалась рабочей, и изначально прямо таки блестящей. Хорошо виден старт, и адреса верно подхватились.


Отображение адресов в логическом анализаторе

Проще в тексте увидеть:

      0    FFFE
      1    FFF1
      2    FFF3
      3    FFF5
      4    FFF7
      5    FFF9
      6    FFFB
      7    E05B
      8    E05D
      9    E05F
     10    E061
     11    E063
     12    81AF
     13    81B1
     14    81B3
     15    81AF
     16    81B1
     17    81B3


В IDA точное соответствие:




То есть отладка отлично работает, побайтно вычитывается из ПЗУ данные и далее по ним идут переходы.
Но, что я не предполагал, что есть всякие циклы ожидания...


Циклы ожидания

И, проблема в том, что количество памяти логического анализатора ограничена, и таким циклом она забивается моментально...


Мы подошли к концу памяти анализатора

Короче говоря, без логического анализатора с большим количеством памяти, при этом достаточной частотой дискретизации (40 МГц тактовая, это вам не шутки), может помочь решить ситуацию. Либо надо искать способы пошаговой отладки.

Внимательные читатели могут заметить, что я перехватываю POST-код 02.


Но, к сожалению мне удалось поймать этом место при нескольких перезагрузках. Пока хорошего решения этой проблемы у меня нет, кроме как покупка дорогущего анализатора (ценник на них на рынке меня немного приводит в уныние).
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 08:59 am
Powered by Dreamwidth Studios