Сейчас на форуме: Dart Raiden, Alf, bedop66938 (+6 невидимых) |
eXeL@B —› Электроника —› Отладка BIOS/EFI - аппаратные отладчики |
Посл.ответ | Сообщение |
|
Создано: 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 (не на виртуалках, а на реальном железе). ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. |
|
Создано: 23 января 2014 14:58 · Поправил: spinz · Личное сообщение · #2 В принципе БИОС отлаживать все же можно и на реальном железе без аппаратного отладчика, но только после INIT# - после RESET# на entry point никак не тормознуться. Только подходящего софта для этого все равно нет. Crawler пишет: чем отличаются внутрисхемные отладчики от эмуляторов Имхо, отличие чисто семантическое, по приведенным ссылкам оба девайса называются JTAG debugger |
|
Создано: 23 января 2014 15:40 · Личное сообщение · #3 Отличие в том что один работает на серийном железе, а второй - отладочный стенд. На кристалле второго расположен дополнительный блок поддержки отладки. Соответственно, поддерживаются расширенные режимы отладки. Второй обычно дороже первого. Впрочем, может @hors подключится и расскажет детали. ----- старый пень | Сообщение посчитали полезным: Crawler |
|
Создано: 23 января 2014 18:16 · Поправил: connect6 · Личное сообщение · #4 Для XDP отлаживания нужна мамка с XDP разъёмом. Таких мало. Если найдешь, то она вряд ли будет с интересующим тебя чипсетом/BIOS...A остальное железо уже не так дорого: |
|
Создано: 23 января 2014 18:45 · Личное сообщение · #5 |
|
Создано: 23 января 2014 19:08 · Личное сообщение · #6 Вот более вменяемая поделка http://www.arium.com/product/55/ ----- 127.0.0.1, sweet 127.0.0.1 | Сообщение посчитали полезным: Crawler |
|
Создано: 23 января 2014 19:38 · Поправил: connect6 · Личное сообщение · #7 |
|
Создано: 24 января 2014 06:36 · Личное сообщение · #8 Варианта ровно два: post карта и вывод отладочной инфы в ком порт. Еще понадобится программатор. Модифицируешь модули BIOS, чтобы они выводили нужную тебе отладочную информацию, прошиваешься, смотришь что получилось. Я так отлаживал. ----- PGP key | Сообщение посчитали полезным: Crawler |
|
Создано: 24 января 2014 13:12 · Личное сообщение · #9 ntldr, оно понятно, но именно от этого варианта я и хочу уйти - не всегда ком инициализируется, когда мне это нужно. Если ком-порта нет, видео - тем более - остается очень мало вариантов (вроде eb fe на нужное место и смотреть, виснет комп или нет). ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. |
|
Создано: 24 января 2014 13:15 · Поправил: Crawler · Личное сообщение · #10 |
|
Создано: 24 января 2014 19:39 · Личное сообщение · #11 Crawler пишет: остается очень мало вариантов POST карта позволяет выводить отладочные коды даже из бутблока, начиная с первых инструкций процессора. Главное чтобы она была подключена к шине на которую по-умолчанию декодируются IO циклы 0x80 порта, на современных мамках это pci-x линии идущие прямо из проца (pci-x16 разьем для видеокарты), другие шины (pci, pci-x1, lpc) могут потребовать инициализации южного моста и superio. ----- PGP key |
|
Создано: 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. Таким образом можно протрейсить биос от первой инструкции без всякого доп. железа |
|
Создано: 25 января 2014 20:59 · Поправил: connect6 · Личное сообщение · #13 spinz, что за консоль/интерфейс будет у такого отладчика? Как выживет его код при проверки/стирания RAM? Что будет с SMM? Без виртуализаций железа (чипсет/периферий) не обойтись.... | Сообщение посчитали полезным: Crawler |
|
Создано: 26 января 2014 02:23 · Личное сообщение · #14 |
|
Создано: 26 января 2014 06:29 · Личное сообщение · #15 |
|
Создано: 26 января 2014 10:09 · Личное сообщение · #16 connect6 пишет: Гораздо важнее что надо сделать Это будет сильно зависеть от биоса, универсального решения тут быть не может (а никто ведь, как я понял, и не ставит цель научиться отлаживать все биосы в мире). Какую-то часть функционала в любом случае надо будет затачивать под вполне конкретный целевой биос. Это конечно весьма затратно по времени и силам, но покупать железку за 20к тоже затратно ;) |
|
Создано: 26 января 2014 23:41 · Личное сообщение · #17 Crawler для отладки процедур инициализации всяких узлов нужно наверно и какие-то средства мониторинга состояния этого узла про jtag я насколько понял это всего лишь электрический интерфейс выдающий сигнал о том как устройство нормально включилось или нет -- я хз как с его помощью конфиг миросхем смотреть (если можно значит я сильно отстал от темы) |
|
Создано: 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' а (при этом указанные регистры, как известно, не изменятся) Как на самом деле реализована инициализация разных ядер в современных биосах - я хз, если кто в курсе или просто не лень покопаться в бисое, поделитесь инфой. |
|
Создано: 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 - аппаратные отладчики |