реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> PCie и размер BAR, Оригинальный способ "убить" motherboard
RobFPGA
сообщение Jan 30 2016, 13:36
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Делаю очередной проект c PCIe - в ожидании целевого железа балуюсь с Xilinx dev-board для Kintex UltaScale KCU105. Тестовый комп на десктопной ASUS. Слепил проект с XDMA PCie коркой и контроллером DDR4 на 1GByte. В PCIe два 32bit BARа по 1 MByte. Погоняли данные туда-сюда все ок.

Затем программист говорит - хочу мол видеть всю DDR4 память через BAR. Включаю на XDMA bypass канал - ставлю ему 32bit BAR в 2GByte размером. Загружаю проект в dev-board. После рестарта наслаждаюсь собственной копией картины Малевича "Черный Квадрат" 8-()
После первого культурного шока выясняется что эта"картина" теперь у меня надолго так как тестовый комп даже без FPGA dev-board показывает только ее. Пока сисадмин ищет другую мамку ставлю для проверки dev-board в целевой комп (серверная SuperMicro) вижу что с dev-board все ок - PCie нормально конфигурится, видны 2 BAR в 1 MGByte и один BAR 2GByte.

Что ж - бывает - приносят другую мамку (на это раз десктопный Gigabyte GA-HB1M) втыкаю туда, включаю. Получаю вариацию на тему картины Мунка "Крик" - в смысле в bios не войти, на экран выводит что-то не понятное, клава и мыш не работают ну и мне хочется кричать "Что за фигнняяя...?" Хорошо хоть это только при вставленной в комп FPGA карте. Ну думаю мамка старая дешевая переживает что в нее воткнули платку в 40 раз дороже чем она сама вот и истерит.
Ладно - один раз случайность - 2 раза совпадение ставлю в третий комп (опять десктопный ASUS H97-Plus) - получаю еще одну копию Черного Квадрата (ни кому не нужно ? 1/10 цены оригинала sm.gif ).

Откатив проект для FPGA и уменьшив размер bypass PCIe BARA до 1 MByte на плате от Gigabyte стало тоже работать нормально. На платах от ASUS судя по всему затерло BIOS так как ни каким сбросом CMOS ничего не восстанавливается. И это просто на этапе BIOS конфигурации PCIe устройств!.

Удачи! Rob.
Go to the top of the page
 
+Quote Post
Timmy
сообщение Jan 30 2016, 17:19
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(RobFPGA @ Jan 30 2016, 16:36) *
Откатив проект для FPGA и уменьшив размер bypass PCIe BARA до 1 MByte на плате от Gigabyte стало тоже работать нормально. На платах от ASUS судя по всему затерло BIOS так как ни каким сбросом CMOS ничего не восстанавливается. И это просто на этапе BIOS конфигурации PCIe устройств!.

Удачи! Rob.

Думаю, что поломался не код BIOS, а ESCD/DMI data, они вполне законно обновляются именно при конфигурации устройств. Жаль, что материнки обычно не умеют очищать DMI data без входа в BIOS setup, а умеют только глючить smile3046.gif .
Go to the top of the page
 
+Quote Post
Inanity
сообщение Jan 30 2016, 17:41
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 221
Регистрация: 6-07-12
Пользователь №: 72 653



RobFPGA, гигабайтовская мать кажется с dualbios. Может поэтому она после изъятия платы завелась?
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Jan 30 2016, 18:02
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(Inanity @ Jan 30 2016, 19:41) *
RobFPGA, гигабайтовская мать кажется с dualbios. Может поэтому она после изъятия платы завелась?

Да так и есть - но она и глючила по другому - после ресета с минуту думает работать или нет потом выдавала белиберду или иногда сообщение о "отсутствии устройств загрузки" и при этом ни клава ни мыш не жили. Если FPGA плату вытащит то начинает работать как в ни в чем небывало - все настройки сохраняются.

ASUS мамки же после первого включения сразу в даун с черным экраном.
В понедельник попытаюсь слепить SPI программатор проверить BIOS - благо на одной мамке ASUS (h97-plus) flash DIP8 на панельке!

Удачи! Rob.
Go to the top of the page
 
+Quote Post
krux
сообщение Jan 31 2016, 15:19
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



не всякий BIOS долетит до середины Днепра тьфу, выделения из нижних 4 ГБайт BAR-а в 2 ГБайт.
Собс-но, потому что это никому не нужно.

У меня эксперименты в 2009 году упирались в 512 МБайт, так что радуйтесь, что хоть где-то вам удалось.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Feb 1 2016, 03:31
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(krux @ Jan 31 2016, 21:19) *
не всякий BIOS долетит до середины Днепра тьфу, выделения из нижних 4 ГБайт BAR-а в 2 ГБайт.
Собс-но, потому что это никому не нужно.

У меня эксперименты в 2009 году упирались в 512 МБайт, так что радуйтесь, что хоть где-то вам удалось.

Вообще вся эта затея (замапить 2Г на BAR) изначально отдавала неслабой такой степенью бессмысленности и задумывалась в чисто отладочных целях.
Для подобных задач обычно пользуют косвенную адресацию (см. например как работают VGAшки через окно в 64к). Либо в случаях когда нужна скорость
(наиболее частый случай) запиливают нормальный DMA co scatter-gather и прочими плюшками.
А иметь доступ из BAR в память DDR напрямую имеет смысл лишь для "поиграться", ибо одиночный транзакции сразу угробят всю производительность DDR памяти.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Feb 1 2016, 10:17
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Я и не планировал использовать 2GByte BAR в целевом железе, это как раз предполагалось для отладки и различных экпериментов. Кто ж знал что производители материнок такую свинью подложат sad.gif.
Ну не можешь ты выделить в BIOS большое окно для BAR так грязно выругайся на экран и все - нет же совершим суицид назло юзеру - поднимем продажи!.

У меня похожее было в другой системе. Но она была на базе PowrPC c VxWorks. Там при старте честно писало что "не может выделить" запрошенные 16 GByte BAR так как лимит окна для мапинга PCIe только 1.5 GByte.

Удачи! Rob.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Feb 1 2016, 13:17
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(RobFPGA @ Feb 1 2016, 16:17) *
Приветствую!

Я и не планировал использовать 2GByte BAR в целевом железе, это как раз предполагалось для отладки и различных экпериментов. Кто ж знал что производители материнок такую свинью подложат sad.gif.
Ну не можешь ты выделить в BIOS большое окно для BAR так грязно выругайся на экран и все - нет же совершим суицид назло юзеру - поднимем продажи!.

У меня похожее было в другой системе. Но она была на базе PowrPC c VxWorks. Там при старте честно писало что "не может выделить" запрошенные 16 GByte BAR так как лимит окна для мапинга PCIe только 1.5 GByte.

Удачи! Rob.

Вообще я с трудом могу понять как можно таким простым способом перезаписать BIOS (если произошло именно это). Запись во флэшку - нетривиальная операция, и случайно её сделать сложно. Кроме того у флэшек предусмотрены разные софтовые защиты от случайной записи.
Go to the top of the page
 
+Quote Post
Timmy
сообщение Feb 2 2016, 12:29
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(Bad0512 @ Feb 1 2016, 16:17) *
Вообще я с трудом могу понять как можно таким простым способом перезаписать BIOS (если произошло именно это). Запись во флэшку - нетривиальная операция, и случайно её сделать сложно. Кроме того у флэшек предусмотрены разные софтовые защиты от случайной записи.

При обнаружении нового устройства BIOS записывает в таблицы ESCD/DMI, находящиеся на флэшке, информацию об этом устройстве, это стандартная операция, совсем не случайная. А потом BIOS начинает зависать, прочитав из ESCD/DMI информацию, которую не может правильно применить.
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Feb 2 2016, 12:52
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Как раз вчера читал заметку из совсем другого мира - как работая из под рута в линуксе можно загубить материнку таким же образом, записав куда не надо.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Feb 2 2016, 14:54
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Слепил на макетке из го....орстки (а по другому и не скажешь) деталей SPI программатор. Прошил файлом bios с сайта ASUS. Правда перед этим надо отрезать первые 2K поскольку там судя по всему собственно загрузчик.
Мамка H97 ожила. При этом ни один bios c ASUS сайта не совпадал с тем что вычитал из flash.

И ни каких защит при этом во flash не стояло - все внутренние protection биты были сброшены. Не зря же чип на панельке стоит - ох не зря sm.gif.

Удачи! Rob.


Go to the top of the page
 
+Quote Post
krux
сообщение Feb 2 2016, 18:47
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



содержимое флешки не совпало скорее всего по причине Intel ME.
Дело в том что тот самый Management Engine изначально позиционировался как инструмент для "проверки по ТУ" при запуске платы после пайки.
Не завелась - в брак.

А в том, что выложено в качестве "апдейтов" на оффсайте может содержать совсем другие данные для ME. Либо содержать только минимальный загрузчик.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Inanity
сообщение Feb 2 2016, 19:19
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 221
Регистрация: 6-07-12
Пользователь №: 72 653



Уважаемый RobFPGA, а вы не хотите попробовать ещё раз убить ожившую мать вашим фирменным способом, а потом считать её содержимое и сравнить? Возможно это даст ключ к пониманию?

Сообщение отредактировал Inanity - Feb 2 2016, 19:20
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Feb 3 2016, 03:27
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(Timmy @ Feb 2 2016, 18:29) *
При обнаружении нового устройства BIOS записывает в таблицы ESCD/DMI, находящиеся на флэшке, информацию об этом устройстве, это стандартная операция, совсем не случайная. А потом BIOS начинает зависать, прочитав из ESCD/DMI информацию, которую не может правильно применить.

Я правильно понимаю, что эти таблицы (там видимо расписаны назначенные системные ресурсы типа окон памяти, портов I/O, прерываний и т.д. для каждой plug&play железяки) строятся динамически, то есть по каждому рестарту обновляются. Зачем тогда их писать во флэш и тем более зачем потом эту информацию использовать при следующем старте до нового динамического распределения ресурсов? Не вижу логики... В таком раскладе любая безумная конфигурация может "убить" БИОС напрочь с первого раза. Как-то не дуракоустойчиво...
Go to the top of the page
 
+Quote Post
krux
сообщение Feb 3 2016, 12:50
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



DMI & ESCD - это защита вендоров от "пихания всякого".
При загрузке туда пишется всё, чего понавтыкали. Если после этого материнка перестанет работать и уйдёт по RMA, то первое на что будут смотреть - это в этот кусок флеша.

вообще DMI & ESCD уже устарели, замена называется CIM: http://www.dmtf.org/standards/cim


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 15:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01493 секунд с 7
ELECTRONIX ©2004-2016