Сейчас на форуме: Dart Raiden, Alf, bedop66938 (+6 невидимых)

 eXeL@B —› Электроника —› Отладка BIOS/EFI - аппаратные отладчики
Посл.ответ Сообщение


Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 23 января 2014 13:56 · Поправил: Crawler
· Личное сообщение · #1

В общем, суть в следующем: хочу отлаживать BIOS на реальной тачке. Надоело свои эксперименты проводить со связками QEMU/GDB, VMWare/GDB и так далее - это очень далеко от реальности. Есть программатор, им пробовал модифицировать и шить, но отладка, сами понимаете, очень затруднена - через COM (в редких случаях) или вообще никак (чаще всего) - зависит от стадии загрузки.

Может, есть какие-то варианты вроде XDP или JTAG-отладчиков?

А еще - интересно, чем отличаются внутрисхемные отладчики от эмуляторов? В качестве примера:

1) http://www.prosoft.ru/products/brands/windriver/436319/436325.html
2) http://www.arium.com/product/55/ECM-XDP3-Intel-JTAG-Debugger.html

Первый - эмулятор, второй - внутрисхемный отладчик.

Вроде бы JTAG-отладчики - это проще и дешевле, но хуже, если верить этому: http://phyton.ru/pages/page83.html#jtag

Буду благодарен за любую инфу по теме отладки BIOS (не на виртуалках, а на реальном железе).

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 50.0 (постоянный), 31thx
Активность: 0.090.1
Статус: Участник

Создано: 23 января 2014 14:58 · Поправил: spinz
· Личное сообщение · #2

В принципе БИОС отлаживать все же можно и на реальном железе без аппаратного отладчика, но только после INIT# - после RESET# на entry point никак не тормознуться. Только подходящего софта для этого все равно нет.
Crawler пишет:
чем отличаются внутрисхемные отладчики от эмуляторов

Имхо, отличие чисто семантическое, по приведенным ссылкам оба девайса называются JTAG debugger



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 23 января 2014 15:40
· Личное сообщение · #3

Отличие в том что один работает на серийном железе, а второй - отладочный стенд. На кристалле второго расположен дополнительный блок поддержки отладки. Соответственно, поддерживаются расширенные режимы отладки. Второй обычно дороже первого.
Впрочем, может @hors подключится и расскажет детали.

-----
старый пень


| Сообщение посчитали полезным: Crawler

Ранг: 10.2 (новичок), 4thx
Активность: 0.020
Статус: Участник

Создано: 23 января 2014 18:16 · Поправил: connect6
· Личное сообщение · #4

Для XDP отлаживания нужна мамка с XDP разъёмом. Таких мало. Если найдешь, то она вряд ли будет с интересующим тебя чипсетом/BIOS...A остальное железо уже не так дорого: --> Link <--




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 23 января 2014 18:45
· Личное сообщение · #5

connect6, штуковина более чем сомнительная. JTAG-отладчик под Intel за 30 баксов? Буду рад, если предоставишь хоть какую-то информацию о нем (уверен, ее нет)

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.





Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 23 января 2014 19:08
· Личное сообщение · #6

Вот более вменяемая поделка http://www.arium.com/product/55/

-----
127.0.0.1, sweet 127.0.0.1


| Сообщение посчитали полезным: Crawler

Ранг: 10.2 (новичок), 4thx
Активность: 0.020
Статус: Участник

Создано: 23 января 2014 19:38 · Поправил: connect6
· Личное сообщение · #7

Crawler
Раз ты уверен, что инфо нет, то нет. ;) Принимаю коммереских задач по теме x86/x64 биосов...



Ранг: 369.8 (мудрец), 400thx
Активность: 0.390
Статус: Участник

Создано: 24 января 2014 06:36
· Личное сообщение · #8

Варианта ровно два: post карта и вывод отладочной инфы в ком порт. Еще понадобится программатор. Модифицируешь модули BIOS, чтобы они выводили нужную тебе отладочную информацию, прошиваешься, смотришь что получилось. Я так отлаживал.

-----
PGP key <0x1B6A24550F33E44A>


| Сообщение посчитали полезным: Crawler


Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 24 января 2014 13:12
· Личное сообщение · #9

ntldr, оно понятно, но именно от этого варианта я и хочу уйти - не всегда ком инициализируется, когда мне это нужно. Если ком-порта нет, видео - тем более - остается очень мало вариантов (вроде eb fe на нужное место и смотреть, виснет комп или нет).

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.





Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 24 января 2014 13:15 · Поправил: Crawler
· Личное сообщение · #10

OKOB
Да, реально крутая штука. Единственное - его нужно где-то взять. Да и если он стоит 20 тысяч баксов, это чуть дороговато для удовлетворения моего любопытства)))

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 369.8 (мудрец), 400thx
Активность: 0.390
Статус: Участник

Создано: 24 января 2014 19:39
· Личное сообщение · #11

Crawler пишет:
остается очень мало вариантов

POST карта позволяет выводить отладочные коды даже из бутблока, начиная с первых инструкций процессора. Главное чтобы она была подключена к шине на которую по-умолчанию декодируются IO циклы 0x80 порта, на современных мамках это pci-x линии идущие прямо из проца (pci-x16 разьем для видеокарты), другие шины (pci, pci-x1, lpc) могут потребовать инициализации южного моста и superio.

-----
PGP key <0x1B6A24550F33E44A>




Ранг: 50.0 (постоянный), 31thx
Активность: 0.090.1
Статус: Участник

Создано: 25 января 2014 16:59
· Личное сообщение · #12

На многоядерных процессорах или многопроцессорных системах, как известно, только одно ядро(процессор) при рестарте системы фактически выполняет код, начиная c FFFFFFF0. Остальные находятся в состоянии wait-for-SIPI, после получения SIPI они выполняют кодес, начиная at 000VV000H,where VV is the vector contained in the SIPI message. Можно на bootstrap ядре послать другим ядрам SIPI с вектором, указывающим
на наш код, который взведет на целевом ядре TF и передаст управление на FFFFFFF0. Таким образом можно протрейсить биос от первой инструкции без всякого доп. железа



Ранг: 10.2 (новичок), 4thx
Активность: 0.020
Статус: Участник

Создано: 25 января 2014 20:59 · Поправил: connect6
· Личное сообщение · #13

spinz, что за консоль/интерфейс будет у такого отладчика? Как выживет его код при проверки/стирания RAM? Что будет с SMM? Без виртуализаций железа (чипсет/периферий) не обойтись....

| Сообщение посчитали полезным: Crawler

Ранг: 50.0 (постоянный), 31thx
Активность: 0.090.1
Статус: Участник

Создано: 26 января 2014 02:23
· Личное сообщение · #14

Сложностей здесь действительно немало, но принципильно непреодолимы нет. Виртуализация всей "обвязки" компутера (по аналогии с варей и пр.) не нужна



Ранг: 10.2 (новичок), 4thx
Активность: 0.020
Статус: Участник

Создано: 26 января 2014 06:29
· Личное сообщение · #15

Какая разница вся - не вся, все же виртуализация нужна. И вообще глупо говорить что НЕ нужно. Гораздо важнее что надо сделать ;)



Ранг: 50.0 (постоянный), 31thx
Активность: 0.090.1
Статус: Участник

Создано: 26 января 2014 10:09
· Личное сообщение · #16

connect6 пишет:
Гораздо важнее что надо сделать

Это будет сильно зависеть от биоса, универсального решения тут быть не может (а никто ведь, как я понял, и не ставит цель научиться отлаживать все биосы в мире). Какую-то часть функционала в любом случае надо будет затачивать под вполне конкретный целевой биос. Это конечно весьма затратно по времени и силам, но покупать железку за 20к тоже затратно ;)



Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 26 января 2014 23:41
· Личное сообщение · #17

Crawler
для отладки процедур инициализации всяких узлов нужно наверно и какие-то средства мониторинга состояния этого узла

про jtag я насколько понял это всего лишь электрический интерфейс выдающий сигнал о том как устройство нормально включилось или нет -- я хз как с его помощью конфиг миросхем смотреть (если можно значит я сильно отстал от темы)



Ранг: 50.0 (постоянный), 31thx
Активность: 0.090.1
Статус: Участник

Создано: 27 января 2014 08:30
· Личное сообщение · #18

spinz пишет:
Остальные находятся в состоянии wait-for-SIPI, после получения SIPI они выполняют кодес, начиная at 000VV000H,where VV is the vector contained in the SIPI message...

Впрочем, такая методика вряд ли позволит стартовать целевое ядро действительно "с нуля", т.е. состояния, идентичного состоянию после reset. Если бы это было так, то девелоперы биосов полные идиоты. Правильней, с точки зрения секьюрности, было бы проинициализировать каждое non-bootastrap ядро (установить, например, "правильный" SMBASE, указывающий на защищенную память, а не 0x30000; SMRR; IA32_FEATURE_CONTROL и пр). А потом опять отправить ядро в состояние wait-for-SIPI посылкой INIT' а (при этом указанные регистры, как известно, не изменятся) Как на самом деле реализована инициализация разных ядер в современных биосах - я хз, если кто в курсе или просто не лень покопаться в бисое, поделитесь инфой.




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 27 января 2014 13:49
· Личное сообщение · #19

Rockphorr, ну, не сказал бы

http://www.intel.my/content/dam/www/public/us/en/documents/white-papers/jtag-101-ieee-1149x-paper.pdf

spinz пишет:
Можно на bootstrap ядре послать другим ядрам SIPI с вектором, указывающим
на наш код, который взведет на целевом ядре TF и передаст управление на FFFFFFF0. Таким образом можно протрейсить биос от первой инструкции без всякого доп. железа


Да. А можно еще написать свой гипервизор и отладчик впридачу, но вот только как его самого писать и отлаживать?)

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.



 eXeL@B —› Электроника —› Отладка BIOS/EFI - аппаратные отладчики
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати