Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос о возможности декомпиляции ПЛИС
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Страницы: 1, 2
AALEGYR
Уважаемые спецалисты, сразу хочу сказать, что к разработке электронной аппаратуры я уже давно не имею никакого отношения, так как последние 20 лет мне приходится заниматься ремонтом этой самой электронной аппаратуры. И если вчера мне хватало знаний чтобы успешно справлятся с этим делом, и ремонтировать эту технику на компонентном уровне, то сегодня все это уже дается в большим трудом, так как возникает масса вопросов.
Дело в том, что посление годы схемы устройств стали представлять из себя не графическое изображение электрических связей между отдельными электронными компонентами, а набор многоножечных прямоугольников c указанием функциональных связей. Получается, что я еще могу узнать куда на ПЛИС системный контроллер (HD64F2378R) подал тот или иной сигнал, а вот что с этим делом сделала ПЛИС это уже темный лес! Мало того раньше на принципиальных схемах были указаны какой контакт микрухи куда идет, и зная это можно было хоть связи прозвонить. Сегодня и это уже не всегда указывается, так как производитель решил, что для ремонта принципиальная схема не нужна, и вполне достаточно иметь блок-схему со схемой связей между разъемами плат. В такой ситуации не то что на компонентном уровне не отремонтируешь аппарат, но часто и с платой не определишься, до тех пор пока не найдешь второй исправный аппарат. Ведь импульсики то бегают везде, а ОНО не работает, тихо моргая красной лампочкой, или вообще не мограя, а тупо зависая.

Скажите мне пожалуйста - можно ли по конфигурационной прошивке определить внутреннее содержание ПЛИС?
Конкретно меня интересует возможность декомпиляции Cyclone III через содержание EPCS-16
des00
нет
Shtirlits
Да.
Но трудоемкость (цена) такая, что сводит ответ к "нет".

PS: Если cyclone-III LS, то добавится вероятность шифрации прошивки.
AALEGYR
Цитата(des00 @ Feb 11 2011, 16:50) *
нет


А чем это обусловлено?
Насколько я понимаю, конфигурационная память, каждый раз когда включается устройстиво, определят что будет делать ПЛИС, и какие контакты будет использовать для этого. Кроме того, разработка проекта завершается процессом компиляции, ну а если есть компиляция то неужели нет декомпиляции?

Цитата(Shtirlits @ Feb 11 2011, 17:08) *
Да.
Но трудоемкость (цена) такая, что сводит ответ к "нет".


Если да, то какими програмными средствами это достигается?
Ну а про трудоемкость, я хорошо представляю.
Shtirlits
Для spartan-ов кое-что есть, а для cyclone-3 я не встречал и в трудоемкость кроме гугления и писания сообщений в форумах может добавиться изучение битстрима cyclone, декомпиляция кусков quartus и написание своего декомпилятора.
Не хочу сказать, что это невозможно вообще и для одного человека-оркестра в частности,
просто сильно сомневаюсь в целесообразности.
des00
Цитата(AALEGYR @ Feb 11 2011, 08:25) *
Насколько я понимаю, конфигурационная память, каждый раз когда включается устройстиво, определят что будет делать ПЛИС, и какие контакты будет использовать для этого. Кроме того, разработка проекта завершается процессом компиляции, ну а если есть компиляция то неужели нет декомпиляции?

Ну плис на контактах не заканчивается %) плис это большой набор различной логики(люты, регистры, трассы, пллки, умножители, память и т.д.), конфигурируемой статическими мультиплексорами и блоками статической памяти. Ну получите вы информацию о том, в каком состоянии стоят те или иные ключи и что ? Ну даже допустим вы вытащите из этого HDL ный нетлист с технологическими примитивами. Ну и что дальше то? Вы сможете по этой портянке вытащить функциональность? Да чертас два, все что сложнее пару счетчиков замучаетесь вытаскивать, а если учесть что это еще может быть разложено на достаточно большом расстоянии, то .......
AALEGYR
Цитата(des00 @ Feb 11 2011, 21:03) *
Ну плис на контактах не заканчивается %) плис это большой набор различной логики(люты, регистры, трассы, пллки, умножители, память и т.д.), конфигурируемой статическими мультиплексорами и блоками статической памяти.


То что плис это большой набор различной логики для меня это не новость. Я все-таки только последние 20 лет из 35 трудового стажа занимаюсь ремонтом. Меня больше интересует информация о том каким образом в конфигурационной памяти упаковывается информация.
Я допускаю, что мои дилетанские вопросы могут вызвать у специалиста по ПЛИСам некоторую иронию, которая выражается в ответах вопросом на вопрос, но мне бы хотелось услышать аргументированный ответ. Я не понимаю, почему по прошивке того же HD64F2378R я могу перевести байты памяти в буквы ассемблера, а c ПЛИС эта задача не имеет решения? Особенно если учитывать, что и в том и другом случае, работа каждого определяется программой, а байтовые объемы самих программ соизмеримы. Чем уж так ассемблер контроллера отличается от Verilogа или VHDL у ПЛИС? Ведь в обоих случаях, работа этих микросхем определяется расположением битов в байтах памяти, но для прошивок контроллеров есть дисассемблер типа IDA Pro, а для плисов подобного нет. Мне кажется, что для ПЛИС решение такой задачи должно быть даже проще.
Shtirlits
QUOTE (AALEGYR @ Feb 11 2011, 23:31) *
Мне кажется, что для ПЛИС решение такой задачи должно быть даже проще.

Если не нравится ответ, зачем было спрашивать?

Если найдёте документацию на bitstream или софтину для декомпиляции, не обязательно с сайта альтера, поделитесь, пожалуйста.
Я более, чем уверен, что готового средства нет, быстро его не сделать. Дёшево тоже не выйдет, даже если кто-то возьмётся работать за еду (много лет). Кроме того, содержимое прошивки - это второй инструмент разработчика после предоплаты. Узнать в какую сторону сконфигурирована ножка, на ввод или вывод не сложно, а почему эта сволочь отказывается моргать зеленой лампочкой, а светит красной, может стоить больше, чем это обошлось автору - он-то пользовался готовыми компиляторами.
des00
Цитата(AALEGYR @ Feb 11 2011, 14:31) *
но мне бы хотелось услышать аргументированный ответ. Я не понимаю, почему по прошивке того же HD64F2378R я могу перевести байты памяти в буквы ассемблера, а c ПЛИС эта задача не имеет решения?

разве я плохо аргументировал?
Цитата
Чем уж так ассемблер контроллера отличается от Verilogа или VHDL у ПЛИС?

тем что ассемблер для проца, это набор команд выполняющихся на железе, с жестко заданной функциональностью. Между ними есть строгое соответствие. А прошивка для ПЛИС это всего лишь битики управления статическими мультиплексорами и содержимое блоков памяти плис. И строгой зависимости того как эти битики соответствуют тому или иному исходному коду/алгоритму и т.д. нет. На результат влияют настройки синтезатора, какая машина использовалась, функциональность проекта, версия софта и т.д.

Цитата
Мне кажется, что для ПЛИС решение такой задачи должно быть даже проще.

Если найдете, особенно для плисов класса третьего сыклона, подавайте заявку в нобелевский комитет, вас признают %)
dvladim
Цитата(AALEGYR @ Feb 11 2011, 23:31) *
Мне кажется, что для ПЛИС решение такой задачи должно быть даже проще.

Если кажется что проще - попробуйте сделать простенький проект и при синтезе укажите создание файлов для моделирования. Получите Верилоговский нетлист в примитивах ПЛИС. А потом попробуйте восстановить исходный код с этой портянки. При декомпиляции битового потока максимум что можно получить - такой же нетлист.
А что касается софта: place & route и assembly каждая фирма для своих ПЛИС пишет сама. Декомпиляторы им писать незачем. А другие не пишут декомпиляторы потому что с получившегося нетлиста логику все равно не понять (трудоемкость выше чем все самому заново написать).
vitan
AALEGYR
В общем виде задача решаема. А в частном - только после решения в общем. Это как бы затрудняет процесс. sm.gif

В принципе, после выявления того, как внутри ПЛИС соединены ее внутренние элементы, можно понять, как она функционирует, но это задача примерно того же плана, что и понимание, как работает программа после дизассемблиования.
Допустим, Вы увидите, как соединены примитивы, и сможете проследить путь сигнала от входа к выходу. Но разве это поможет пониманию? Точно так же, глядя на дизассемблированный код, Вы будуте долго разбираться, как работает программа. А ведь могут еще быть применены специальные средства для защиты от такого "понимания".
Честно говоря, иногда сложно бывает понять принципы работы некоторых устройств, даже имея принципиальную схему. И не только мне. На днях приезжал ко мне представитель завода, на котором делают серийно платы, что я разрабатывал. Просил методику поиска неисправностей. Куда смотреть, что тыкать. При этом полный комплект КД у них есть, включая схему. Нету только волшебных знаний. Помочь я ему не смог, да и не сильно хотел, признаться (но это уже другой вопрос). Так вот, реверс инжиниринг - это отдельная область, просто так туда не попасть.
В общем, если Вы не профессионал в этом деле, то я бы Вам не советовал тратить время. Ну, а если Вы - профессионал, то таких вопросов бы не задавали. sm.gif
Не обижайтесь, ремонтники - народ - не сахар, сами знаете, наверное, как ремонтных форумах относятся к вопросам со стороны. sm.gif

Вам же надо быстро отремонтировать? У Вас ведь поток? Ремонтируемые изделия меняются? Тогда могу Вам посоветовать применить метод замены ПЛИС целиком.
Самому частенько приходится что-то не свое ремонтировать. Реальный выход здесь, имхо, только замена.
AALEGYR
Цитата
Вам же надо быстро отремонтировать? У Вас ведь поток? Ремонтируемые изделия меняются?


Это в ремонте бытовой аппаратуры поток, и надо ремонтировать быстро (предложение превышает спрос), а в не бытовой, очень часто бывает нужно просто отремонтировать. Особенно тогда, когда аппаратура преобреталась и устанавливалась одними людьми, а эксплуатируется уже другими, так как первые пошли в рост, и вспоминают об этой технике лишь как о том сколько бабок они наварили на этом проекте.
Ремонтируемые изделия меняются, но меняются по разному, и с разной скоростью. В экономической категории, ремонтируемые изделия меняются за 365 дней, с гарантийной на постгарантийную, а вот с технической точки зрения, изделия меняются за более длительной время. Вы же, как разработчики c опытом, не можете себе позволить каждый год реализовывать новый проект на новой элементной базе, сознательно похерив свои наработки, и уподобиться молодому специалисту.
Цитата
Так вот, реверс инжиниринг - это отдельная область, просто так туда не попасть.
В общем, если Вы не профессионал в этом деле, то я бы Вам не советовал тратить время. Ну, а если Вы - профессионал, то таких вопросов бы не задавали.

Реверс инжиниринг это решение разных задач. Для разработчика это один из способов создания собственных новых проектов, а для ремонтника это способ реанимации, то есть способ восстановления и сохранения того что уже сделано, и сделано не им. В этом плане, разработчик, вскрывая чужие разработки, создает конкурентную среду своему коллеге, а ремонтник занимается реставрацией, реставрацией чужой собственности, за которую собственник, добровольно и без принуждения, готов платить свои деньги.
Так что мы тут оба профессионалы, только Вам, экономя свое время, легче и выгодней просто написать свою прошивку для ПЛИС, а мне чтобы чтобы отремонтировать аппарат, надо сначало узнать как работает старая, а уж потом делать выводы где собака порылась, и кто в этом виноват. И именно поэтому мне иногда приходится решать задачи дизассемблирования, и задавать вопросы.
У меня задача - отремонтировать, и сделать это так чтобы потребитель остался доволен тем фактом, что ремонт осуществлен, и обошелся ему не в стоимость нового, а не более 50-60% от цены нового. Особенно это важно тогда когда, бюджет потребителя не предусматривает расходы на преобретение новой техники, а статья расходов на ремонт остается не освоенной.

P.S.
Цитата
Не обижайтесь, ремонтники - народ - не сахар, сами знаете, наверное, как ремонтных форумах относятся к вопросам со стороны.


Я и не обижаюсь. Каждый индивид охраняет место своего обитания. Ну а уж если говорить о профессиональных форумах, то на всех этих форумах постоянным участникам со временем надоедает отвечать на вопросы новичков, особенно если воросы задаются сегодня, а ответы на них были даны еще вчера.


vitan
Цитата(AALEGYR @ Feb 12 2011, 22:17) *
Это в ремонте бытовой аппаратуры поток, и надо ремонтировать быстро (предложение превышает спрос), а в не бытовой, очень часто бывает нужно просто отремонтировать. Особенно тогда, когда аппаратура преобреталась и устанавливалась одними людьми, а эксплуатируется уже другими, так как первые пошли в рост, и вспоминают об этой технике лишь как о том сколько бабок они наварили на этом проекте.

Это Вы намекаете, что уже и исходников не найти даже при желании? Т.е. уже невозможна поддержка ремонтника со стороны разработчика этой техники?
Ну, тогда тем более - замена. Такая ситуация мне напоминает ремонт старой иномарки. Запчасть копеечная, но найти можно только на разборке, не новую, да еще и за бешеные бабки. Оно Вам надо? Понятно, что с новой машиной проблемы сходные, но только там все новое: и машина, и запчасти. Это другое качество.
В общем, советую не поддерживать на плаву бесконечно долго старую аппаратуру, а все-таки переходить на новую. Ее и чинить. sm.gif
AALEGYR
Цитата(vitan @ Feb 13 2011, 12:24) *
Это Вы намекаете, что уже и исходников не найти даже при желании? Т.е. уже невозможна поддержка ремонтника со стороны разработчика этой техники?
Ну, тогда тем более - замена. Такая ситуация мне напоминает ремонт старой иномарки. Запчасть копеечная, но найти можно только на разборке, не новую, да еще и за бешеные бабки. Оно Вам надо?


Я уже писал, что последнее время (года два), мне не то что исходников не найти, для меня и принципиальные схемы становятся экзотикой. И это при том, что мой уровень общения позволяет обратится напрямую к фирме производителю.
"Иномарки", с которыми мне приходится иметь дело, очень часто имеют даты изготовления того же года, что указан в ремлисте на дате приема аппарата в ремонт, а некоторые даже не упевают увидеть своих покупателей. Такие аппараты ремонтируются заменой плат, и проблем с их ремонтом почти нет, ни для меня ни для потребителя, так как производитель несет все расходы, cвязанные со своими гарантийными обязятельствами. Но как только проходит 365 дей с момента продажи, или 730 дней от даты изготовления, ремонт аппарата переходит из категорию гарантийного, в категорию платный. И сразу стоимость ремонта обходится потребителю в 70-80% цены нового аппарата, к которым добавляется еще 50-100$ , которые исполнитель ремонта возмет за настройку аппарата, дабы новая плата не конфликторала с той периферией, с которой ей придется работать.
Чтобы было понятно, как это получается можете себе представить ситуацию когда вы купили системный блок компа, а через год, вам предлагается отремонтировать его заменой материнки, вместе процессором, блоком питания, и всем остальным, что находится внутри корпуса. Я не думаю, что в этой ситуации Вас устроит мой совет перейти на новую модель, и не тратить свои нервы и деньги на поддержание УЖЕ устаревшей.
Так что я речь веду не про ремонт антиквариата, а про ремонт той техники, которую еще вчера с восхищением разглядывали на выставках и в рекламных буклетах производителя.
Ну а с ремонтом "старых иномарок", мы уже давно разобрались путем цифр указанных в прайсе, ибо ремонт антиквариата в кругу профессиональных ремонтников называется реставрацией.

P.S.
Чтобы оценить уровень поддержки ремонтника со стороны производителя техники прикрепляю две картинки. Хотелось бы услышать как глядя на это можно определится с причиной неисправности , зная что собака роется именно тут, а ремонт на уровне замены платы обойдется владельцу в 70-80% цены нового аппарата (или в 30 000 рублей)?
dvladim
Цитата(AALEGYR @ Feb 13 2011, 16:34) *
Чтобы было понятно, как это получается можете себе представить ситуацию когда вы купили системный блок компа, а через год, вам предлагается отремонтировать его заменой материнки, вместе процессором, блоком питания, и почти всей хренью, которая находится внутри корпуса.

Говоря вашими же терминами: интересно чем вам поможет нетлист северного моста при ремонте материнки?
AALEGYR
dvladim, а чем может помочь дизассемблированная прошивка контроллера, переведенная с уровня набора мнемоник команд на уровень диаграммы алгоритма выполнения программы?
Мне это иногда помогает, путем изменения данных прописанных во внешней EEPROM, и хранящей данные о режимах работы узлов контроллера и самого аппарата, заменить ремонт с блочного уровня на компонентный, при котором даже паяльник не приходится брать в руки. При этом стоимость ремонта для владельца аппарата снижается в два раза, а у меня в разы сокращается время ремонта.
Имея перед собой только блок-схему, для ремонта полезна любая информация. Особенно тогда, когда ремонтируемый тобой аппарат ты видишь первый раз в жизни, а твои аргументы о том, что ты не знаешь как ОНО работает, не воспинимаются как веская причина для отказа в ремонте.

Кстати, в медицине, для диагностики заболевания, и выбора правильной методики лечения (а ремонт, в некоторой степени, тоже похож на лечение), далеко не всегда достаточно наблюдать внешние признаки проявления заболевания, и иметь данные о температуре пациента, почти всегда приходится принимать во внимание данные о моче и кале, но мало у кого возникают вопросы о том зачем доктору нужно в дерьме ковыряться.
Adv
Простите меня, но здесь Вы не найдёте ответов на эти давно больные (на значительно более высоком уровне) вопросы. Ответом будет только Нет. Какими бы благими намерениями (а ими, как известно, вымощена дорога в Ад) вы не руководствовались. Проведите поиск на этом и других форумах по теме защита прошивок или слизывание проектов, например. И Вы всё поймёте. Эти данные завод изготовитель достаточно хорошо защищает даже если прошивка и открыта для чтения (Cyclone) (путём перехвата битстрима). Для проиводства ремонтных работ овчинка совершенно не стоит выделки. Даже в приципе. Для слизывания секретов - требует длительной работы и очченььь серьёзных затрат. Техника ориентируется на замену блоков. Причём давно. И это - уже не изменить. Как бы ни хотелось владельцам вернуть случайно выведенный из строя дорогой аппарат..... Особенно, если это сложнее мигалки с лампочками или простого шинного порта. Прислушайтесь к совету о замене ПЛИС. Дельный совет, по-моему.

С уважением Adv.
Jury093
Цитата(AALEGYR @ Feb 13 2011, 16:34) *
Чтобы оценить уровень поддержки ремонтника со стороны производителя техники прикрепляю две картинки. Хотелось бы услышать как глядя на это можно определится с причиной неисправности , зная что собака роется именно тут, а ремонт на уровне замены платы обойдется владельцу в 70-80% цены нового аппарата (или в 30 000 рублей)?

это больше смахивает на блок-схему, к которой должна быть схема электрическая принципиальная с цоколевкой микросхем и межблочных разъемов. И в сервис-мануале осциллограммы ключевых точек, для разных режимов до нескольких картинок. (на манер SM для тех же сотовых). Ведь разработчик как-то это спроектировал и настроил..
А глядя на структурку в ФПГА можно только пофантазировать - как и что туда влепил программист. Без тестовых эпюр даже исправность выводов проверить слабореально..
dvladim
Цитата(AALEGYR @ Feb 13 2011, 19:32) *
dvladim, а чем может помочь дизассемблированная прошивка контроллера, переведенная с уровня набора мнемоник команд на уровень диаграммы алгоритма выполнения программы?

Да не будет у вас алгоритма. Даже для получения нетлиста затраты огромны. Именно это все и пытаются вам сказать.
В сухом остатке следующее: документации на битстрим нет, софта - тоже нет, трудоемкость высока, максимум что можно получить в результате - голый нетлист.
Но если чужое мнение вас не убедило - то успехов. Как сказал когда-то SM "используя чип-эдитор и хекс-эдитор все можно поднять".
AALEGYR
Цитата
Для проиводства ремонтных работ овчинка совершенно не стоит выделки.

Ну почему, когда овчинка стоит несколько тысяч баксов, и владелец этой овчинки готов платить 50% от стоимости овчинки, то на ремонт только одной овчинки можно потратить месяц, и не беспокоится, что за этот месяц ты ничего не заработаешь. Особенно зная, что текущие ремонты, то есть те на которые ты сегодня живешь, занимают у тебя 25% рабочего времени.
Кроме того, для ремонта не нужно слизывать все, ибо ремонтник не собирается заниматься производством и продажей. Для ремонта почти всегда хватает зацепки за один конец ниточки, и через этот конец найти где собака порылась.
Цитата
Прислушайтесь к совету о замене ПЛИС. Дельный совет, по-моему.

ПЛИС можно менять если есть уверенность, что она и является причиной дефекта. Но практика показывает, что это далеко не всегда так. Гораздо чаще причиной дефекта является то что к ней подключено.

Цитата
это больше смахивает на блок-схему, к которой должна быть схема электрическая принципиальная с цоколевкой микросхем и межблочных разъемов.

Так на первом листе, в верхнем левом углу написано что это Block Diagrams. Ну а за ней в документации представлена только Frame Wiring, то что Вы назвали схемой межблочных разъемов.

Цитата
Да не будет у вас алгоритма. Даже для получения нетлиста затраты огромны. Именно это все и пытаются вам сказать.

dvladim, так это мои затраты, и не стоит из-за этого так сильно переживать. Лучше бы подсказали, если знаете, как и чем подобные вопросы решаются с другими типами ПЛИС и с другими производителями?
Adv
Цитата(AALEGYR @ Feb 14 2011, 01:02) *
Ну почему, когда овчинка стоит несколько тысяч баксов, и владелец этой овчинки готов платить 50% от стоимости овчинки, то на ремонт только одной овчинки можно потратить месяц, и не беспокоится, что за этот месяц ты ничего не заработаешь. Особенно зная, что текущие ремонты, то есть те на которые ты сегодня живешь, занимают у тебя 25% рабочего времени.
Кроме того, для ремонта не нужно слизывать все, ибо ремонтник не собирается заниматься производством и продажей. Для ремонта почти всегда хватает зацепки за один конец ниточки, и через этот конец найти где собака порылась.


Это столько НЕ стоит. Стоит ЗНАЧИТЕЛЬНО (на порядок, как минимум) дороже. И на такое ходят не в одиночку. И НЕ всё - невозможно!
Или всё - или ничего. И это намного дольше - не на месяц! На ТАКОМ "ремонте" - не заработаешь.

Цитата(AALEGYR @ Feb 14 2011, 01:02) *
ПЛИС можно менять если есть уверенность, что она и является причиной дефекта. Но практика показывает, что это далеко не всегда так. Гораздо чаще причиной дефекта является то что к ней подключено..


Да. Верно. Но имеющий уши да услышит первое (см. выше)

С извинениями Adv.
rloc
Цитата(AALEGYR @ Feb 14 2011, 00:02) *
как и чем подобные вопросы решаются с другими типами ПЛИС и с другими производителями?

Теоретически вопрос решаем только с микросхемами фирмы Xilinx. В среде ISE есть возможности ручного редактирования логики и внутренних соединений, а значит можно методом "проб и ошибок" сопоставить bitstream с внутренней прошивкой микросхемы. Несколько упростить решение этой задачи можно путем дизассемблирования утилиты bitgen, делающей из нетлиста и некоторого описания микросхемы (можно декриптовать) файл прошивки - bitstream. Сколько на это может потребоваться времени, я скромно промолчу.
Shtirlits
Для altera теоретически задача тоже решается.
Может и не все, но многое можно сделать на VHDL с констрейнами. Как НЕ съевший всех устриц уверен, что сделать декомпилятор нетлиста из битстрима можно (but why?!).
Другое дело, что вопросы на эту тему часто начинаются с "сами мы не местные", да и перед "срубившими бабок" мужиками как-то неудобно.
AALEGYR
Цитата
Это столько НЕ стоит. Стоит ЗНАЧИТЕЛЬНО (на порядок, как минимум) дороже. И на такое ходят не в одиночку. И НЕ всё - невозможно!


У каждого свои тараканы в голове. Да и понятие стоимости у каждого свое. Я вот тоже не думаю, что стоимость ByteBlaster II у производителя должна быть равна розничной стоимости сотового телефона со встроенным телевизором и ЧМ приемником, или стоимости электронной книжки с цветным 7-и дюймовым дисплеем и мультимедийными функциями. Но видя прайсы на то и другое, я не сомневаюсь, что стоимость платки с однобаксовой микросхемой может быть равна стоимости платки с несколькими взросыми ПЛИС и парой контроллеров.
Ну а по поводу "на такое ходят не в одиночку" могу сказать, что я рад бы встретить подобных мне энтузиастов, но они мне пока не попадаются. sad.gif

Цитата
Теоретически вопрос решаем только с микросхемами фирмы Xilinx. В среде ISE есть возможности ручного редактирования логики и внутренних соединений, а значит можно методом "проб и ошибок" сопоставить bitstream с внутренней прошивкой микросхемы.


rloc, спасибо за информацию. Тем более что плисы Xilinx тоже используются в моей аппаратуре.
rloc
Цитата(Shtirlits @ Feb 14 2011, 02:31) *
Для altera теоретически задача тоже решается.
Может и не все, но многое можно сделать на VHDL с констрейнами. Как НЕ съевший всех устриц уверен, что сделать декомпилятор нетлиста из битстрима можно (but why?!).

Никакими констрейнами нельзя в Quartus включить и выключить один сегмент линии связи (а одна линия может быть из нескольких десятков сегментов) и посмотреть на какой битик в bitstream это повлияло.
Adv
Цитата(AALEGYR @ Feb 14 2011, 03:46) *
У каждого свои тараканы в голове.



Именно. Раз сходивший по этому пути не пойдёт по нему вторично. Удач.
des00
Цитата(AALEGYR @ Feb 13 2011, 17:46) *
Ну а по поводу "на такое ходят не в одиночку" могу сказать, что я рад бы встретить подобных мне энтузиастов, но они мне пока не попадаются. sad.gif

потому что их нет. задача реверс инженеринга по нетлисту бессмысленна. Вам уже советовали сгенерировать простейший нетлист для сыклона и посмотреть в каком мусоре вы будете копаться. Это не считая кросс-соединений. Реверсить криптованные корки, верификационные модели смысл есть, а нетлист никакого. Для клонирования изделия достаточно сделать полный аналог и украсть прошивку.

ЗЫ. Как уже говорил, если реализуете для ПЛИС класса третьего сыклона, подавайте на нобелевку. И небольшой совет, не сравнивайте ПЛИС и МК, это совершенно разного поля ягоды.
tAmega
Если Вам нужна принципиальная схема внутри ПЛИС, попросите RTL схему у разработчиков, пускай они ее Вам сгенерят. Ну подпишете NDA, в любом случае, RTL с одной стороны дает уровень детализации, с другой стороны, не особо раскрывает секреты. Правда если дизайн сложный, от RTL схемы толку мало, так как она сама выглядит монстроидально.

Если отвлечься от темы "хочу исходник из битстрима", вопрос к топикстартеру, хорошо получили Вы исходник, дальше что?
Чтобы оттестировать так, как Вы хотите, надо влезть в исходник, вставить тест сигналы и вытащить их на внешние пины, а затем внешним оборудованием поймать и проверить, работает там чего или нет. Но даже такая простая задача как добавление сигналов в дизайн, может потребовать от Вас незаурядных знаний программиста ПЛИС.
Если есть связь с разработчиками, можно попросить их сгенерировать пару тройку или даже десяток тест дизайнов, которые выдают промежуточные сигналы на нужные пины.

Конечно, если связь с исходниками утеряна, есть только голый битстрим. Ну да, требуется нечто на уровне искусственного интелекта, который будет подставлять стандартные решения под наборы сигналов. Но тут тоже вопросы, а если программист с вывихом в голове, а такие через одного. Каждый хочет выпендриться особой фишкой, толку от которой мало, но типа "мой особый стиль". Тут то искусственный интелект попыхтит конкретно.
dxp
Цитата(AALEGYR @ Feb 14 2011, 03:02) *
ПЛИС можно менять если есть уверенность, что она и является причиной дефекта. Но практика показывает, что это далеко не всегда так. Гораздо чаще причиной дефекта является то что к ней подключено.

Попробуйте выяснить по служебным сигналам (nSTATUS, CONF_DONE, DATA0, DCLK, nCONFIG и т.д.) живая ПЛИСка хотя бы на этом уровне. Т.е. грузится или нет, пытается ли грузиться. Это поведение документировано и не зависит от потрохов ПЛИС. Если тут будет видно, что не работает, то менять её, и все дела.

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

Конечно, это потребует необходимости разобраться с азами САПРа (Квартуса) и обзавестись байт-бластером (можно изготовить самому на макетке, там разъёмы, несколько резисторов и буфер). Но это несоизмеримо проще, чем даже разбираться в логике дизайна, когда у вас есть сорцы, не говоря уже о том, чтобы поднять логику работы из низкоуровневого нетлиста, который ещё надо получить. И при этом даже не нужно будет изучать HDL - достаточно будет в графическом редакторе квартуса нарисовать схемку, сам редактор очень простой.

Внутренние дефекты ПЛИС, которые этими двумя способами отловить тяжело, возникают крайне редко.
MaslovVG
Вы пошли вообще не по тому пути. Для тестирования внешних по отношению к плис элементов намного проще разработать свою прошивку генерирующую тест сигналы. Но даже в этом случае проще демонтировать подозрительный элементи проверить его на соответствующих приборах или стендах.
Я занимался ремонтом и обсжуживанием РЭА более 35 лет. И уверен что в эксплуатации ремонт плат экономически нецелесообразен посколку ремонт дороже изготовления новой. А после ремонта плата по надежности уже не лезет ни в какие ворота и в ответственные места связанные с жизнью людей ее ставит уже нельзя.
sazh
Цитата(MaslovVG @ Feb 14 2011, 09:30) *
Вы пошли вообще не по тому пути.


Да тот это путь. Тот. Называется - метод тыка. Когда весь ремонт сводится к отысканию неисправного компонента, обрывов, короткого на плате.
Если игра стоит свечь.
Насчет того, что прошивку ПЗУ подправить, чтобы лучше работало - так это вообще шедевр.
dvladim
Цитата(AALEGYR @ Feb 14 2011, 00:02) *
dvladim, так это мои затраты, и не стоит из-за этого так сильно переживать. Лучше бы подсказали, если знаете, как и чем подобные вопросы решаются с другими типами ПЛИС и с другими производителями?

Так вам подсказали: читаете даташит на нужную вам ПЛИС, делаете n-ое количество своих тестовых прошивок, сравниваете получившиеся нетлисты с битовыми потоками, выявляете соответствие, далее пишете свою утилитку для вытаскивания нетлиста из битстрима, прогоняете нужный битстрим и вуаля: у вас есть требуемый нетлист.
Это кстати касается всех ПЛИС. Все просто wink.gif, но долго sad.gif.
Что касается Альтеры - конкретные треки можно задействовать поставив элемены, выходы которых идут на нужные треки, у Ксайлинкса проще конечно.

Цитата(dxp @ Feb 14 2011, 08:48) *
Если есть подозрения на то, что не работает тот или иной пин - например, вышибло статикой, то это тоже можно проверить. Для этого можно в том же квартусе слепить простейший дизайн - например, счетчик, и вывести один из его выходов (по вкусу, от этого частота будет зависеть) на тестируемый пин, который, конечно же, сконфигурировать на выход.

Цитата(MaslovVG @ Feb 14 2011, 09:30) *
Для тестирования внешних по отношению к плис элементов намного проще разработать свою прошивку генерирующую тест сигналы.

Для этого есть JTAG EXTEST.
iosifk
Цитата(dvladim @ Feb 14 2011, 10:19) *
Для этого есть JTAG EXTEST.



для того, чтобы проверить жив пин сам по себе или нет, можно сделать тестирование по JTAG. Если Вы знаете, кем или чем должен управлять пин, то можно написать последовательность действий для этого пина и эту последовательность выдавать. Программ для JTAG-тестирования сейчас достаточно много. Есть и бесплатные.
vitan
Да, точно, чуть не забыли! sm.gif
Если изделие изначально разработано с учетом тестопригодности, то это может быть просто спасением.
Просто подрыгать ногами не интересно, а вот софт, который может с помощью JTAG-а имитировать функционирование девайсов сильно помогает. Сходите куда-нибудь на Asset или Intellitech. Там это есть.
Вот на это стоит тратить деньги, но не на реверс-инжинириг. Эти средства будут работать всегда и приносить пользу (прибыль), а весь этот хакинг - это разовая работа, да и то вынужденная (потому, что тестопригодностью изначально не озаботились).
Если у Вас схема большая и серьезная, то достаточно велик шанс, что разработчики что-то слышали про DFT и что-то сделали в этом направлении. Ну, хотя бы JTAG не отключили, а может даже и (!) девайсы в цепочку объединили. Посмотрите, если так, то шансы у Вас по ремонту увеличиваются, наверное, порядка на 2-3...
Adv
По-моему это просто плохая пайка BGA (ПЛИС-то EP1C12F324C8N). Актуально если отказ частичный и произошёл спотнанно.
vitan
Цитата(Adv @ Feb 14 2011, 12:34) *
По-моему это просто плохая пайка BGA (ПЛИС-то EP1C12F324C8N). Актуально если отказ частичный и произошёл спотнанно.

Если так, то еще могу посоветовать нажимать пальцем на нее или морозить фризом из баллончика (который на -49 градусов).
Но, вообще-то, цель, как я понимаю, разобраться в функционировании для того, чтобы более качественно\продуктивно чинить.
Так вот, повторю, вместо этого дешевле, быстрее и продуктивнее делать структурное тестирование по JTAG-у.
Т.к. топикстартер профессиональный ремонтник, то ему можно посоветовать купить вышеозначенный софт. Даже, если JTAG не выведен, почти всегда можно подпаяться и создать специальные переходники, объединяющие девайсы в цепочку. Если есть схема, то это на 99% спасение. Если нет схемы, то все равно шансы починить возрастают с _намного_ большей скоростью, чем при хакинге.
Maverick
Цитата(AALEGYR @ Feb 11 2011, 15:46) *
Скажите мне пожалуйста - можно ли по конфигурационной прошивке определить внутреннее содержание ПЛИС?
Конкретно меня интересует возможность декомпиляции Cyclone III через содержание EPCS-16

Практически невозможно!
Вероятность что Вам удастся сделать это сводится к нулю.
AALEGYR
Цитата
Если Вам нужна принципиальная схема внутри ПЛИС, попросите RTL схему у разработчиков, пускай они ее Вам сгенерят.

Для ремонта мне не нужна принципиальная схема внутри ПЛИС, как не нужна принципиальная схема любой микросхемы. Мне нужно знать как они работают, и как физически подключены в общую схему устройства.
Я сам в 80-е годы работал разработчиком, и хорошо знаю, что в отличие от разработчика, ремонтнику не нужно ломать голову над тем почему на листе, и при симуляции проект работает, а в железе нет. Я знаю, что аппарат работал, его схемотехника не имеет принципиальных ошибок, но в данный момент в нем есть неисправный компонент, который я должен найти.
Ну а если говорить по теме, то мне сегодня не нужна принципиальная схема ПЛИС, так как я знаю что она рабочая, и работает так как ей говорит контроллер. В конце концов, всегда можно найти возможность и перекинуть плисину с одной платы на другую. Мне нужна принципиальная схема всего устройства, и чтобы в этой схеме было указано, помимо функцианальных назначений выводов ПЛИС, еще и номера контантактов к которым они присвоены.
Вот как по представленной картинке определить куда поступают сигналы TXD и RXD, и с каких контактов выходят у микросхемы IC305, если из блок-схемы видно, что это ПЛИС, которая имеет на плате даже разъем (CN301) для ее программирования?
IC305 это плисина Xilinx на корпусе которой написано 2с128.
vitan
Цитата(AALEGYR @ Feb 14 2011, 12:53) *
Вот как по представленной картинке определить куда поступают сигналы TXD и RXD, и с каких контактов выходят у микросхемы IC305, если из блок-схемы видно, что это ПЛИС, которая имеет на плате даже разъем (CN301) для ее программирования?

Дык ну джитагом-же! В режиме sample просто мониторите состояние выводов. Дрыгаете ногой на IC703 (там точный рефдес и-за красного не видно). Если дрыгать не можете, приподнимите ее пин и дрыгайте. Пять минут и все найдете.
AALEGYR
Цитата(vitan @ Feb 14 2011, 12:43) *
Т.к. топикстартер профессиональный ремонтник, то ему можно посоветовать купить вышеозначенный софт. Даже, если JTAG не выведен, почти всегда можно подпаяться и создать специальные переходники, объединяющие девайсы в цепочку. Если есть схема, то это на 99% спасение. Если нет схемы, то все равно шансы починить возрастают с _намного_ большей скоростью, чем при хакинге.


Все это есть, и JTAG есть, и разъемы на платах для него есть, как есть на платах разъемы для AS программирования и программирования отдельных ПЛИС, есть даже UniversalScan установленный на компе. Нету только принципиальной схемы и распиновки плисов. sad.gif
И это не потому, что приходится заниматься ремонтом непонятно кем ввезеной и изготовленной техники, а потому, что известный мировой производитель считает, что уровень квалификации российских электронщиков не предполагает знания о JTAG и его возможностях. (А может он стал это делать намерянно, пока Россия не вернет им Курильские острова. sm.gif )
vitan
Цитата(AALEGYR @ Feb 14 2011, 13:39) *
Все это есть

Обратите внимание, я Вам пока про UniversalScan ничего не говорил. Я говорил о "более другом" софте. И, похоже, когда Вы говорите про знания российских разработчиков, Вы недалеки от истины. sm.gif
Итак, тема плавно перетекла в то, как надо пользоваться UniversalScan-ом?
Вы нашли Ваш пин? sm.gif
Мур
Обычно желание иметь исходник появляется при необходитости модифицировать проект. Глядя на соединения макроячеек понять функциональное назначение элемента невозможно. А это ведь главное,- видеть архитектуру! Получить из битовой последовательности макро-картину не удастся. Разве что если иметь возможность наблюдать поведение. А как же это возможно про тактированиях более 100МГц? Имейте ввиду, что ЦОС, если такая имеется на борту, вообще съедает большинство рессурса и отделить ключевые места от второстепенных делает задачу неразрешимой для человека.
Не вижу я перспектив. Проще самому всё сделать с нуля.

В вашем случае я бы взялся за задачу при наличии рабочего образцового варианта. Долго бы снимал её временные в разных режимах, чтобы понять логику, а потом уже строил свои версии заливки.
AALEGYR
Цитата(vitan @ Feb 14 2011, 13:46) *
Вы нашли Ваш пин? sm.gif


Так я и платы уже починил! sm.gif
Цитата(vitan @ Feb 14 2011, 13:46) *
Обратите внимание, я Вам пока про UniversalScan ничего не говорил. Я говорил о "более другом" софте.

А чего же секретничали?

Цитата(vitan @ Feb 14 2011, 13:46) *
И, похоже, когда Вы говорите про знания российских разработчиков, Вы недалеки от истины. sm.gif


Так я ничего не говорил про знания российских разработчиков, я говорил про предположения японских разработчиков о знаниях российских электронщиков. Это разные вещи!
У меня была возможность задать им вопрос о начилии на платах разъемов джитаг, и массе светодиодной индикации на самих платах, и это вызвало у них некоторое удивление. Ну а когда было высказано предложение о выдаче информации по использованию всей этой красоты, то был выдан ответ, суть которого заключалась в том, что это достаточно сложно для мастера по ремонту, и этим должен заниматься специально подготовленный инженер. Им в голову не приходит, что в России масса инженеров занимается ремонтом их техники.
Цитата(vitan @ Feb 14 2011, 13:46) *
Итак, тема плавно перетекла в то, как надо пользоваться UniversalScan-ом?

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

vitan
Цитата(AALEGYR @ Feb 14 2011, 16:13) *
Так я и платы уже починил! sm.gif

Если платы были починены за два дня, и работа по декомпиляции займет больше (а так и будет), то она не имеет смысла, верно? sm.gif

Цитата(AALEGYR @ Feb 14 2011, 16:13) *
А чего же секретничали?

Ничего не секретничал. Говорил по теме, не отколняясь.

Цитата(AALEGYR @ Feb 14 2011, 16:13) *
Ну если Вы хотите рассказать мне о том, чем лучше ваш "более другой" софт, нежели чем тот, который я имею, то я с удовольствием почитаю об этом.

Я не знаю, что у Вас есть. Но думаю, что того, что надо нет. Посмотрите продукцию упомянутых фирм, все поймете.
sazh
Цитата(AALEGYR @ Feb 14 2011, 16:13) *
Так я и платы уже починил


Ну да . Первичный осмотр тела?
AALEGYR
Цитата(vitan @ Feb 14 2011, 17:14) *
Если платы были починены за два дня, и работа по декомпиляции займет больше (а так и будет), то она не имеет смысла, верно? sm.gif

Я не думаю, что процесс познания не имеет смысла.

Цитата(vitan @ Feb 14 2011, 17:14) *
Я не знаю, что у Вас есть. Но думаю, что того, что надо нет. Посмотрите продукцию упомянутых фирм, все поймете.

То что у меня есть я уже написал, ну а то что надо, можно узнать только выяснив с чем имеешь дело, и каким образом это "надо" может тебе помочь.

Цитата
Ну да . Первичный осмотр тела?

Первичный осмотр тела не помог, как не помогла прозвонка цепей питания. Просто появилась возможность поиметь исправный аппарат, и по нему определить где бегают импульсики, а где нет. После чего выяснилось, что в неисправном аппарате импульсики бегали все время, а в исправном только несколько милисекунд в момент включения. Ну а дальше используя логический анализатор стало понятно, что циклон просит epcs поделится с ним информацией, а та решила не баловать его ей. Ну а в заключение перелили инфу из одной памяти в другую, и платы ожили. sm.gif
sazh
Цитата(AALEGYR @ Feb 14 2011, 18:42) *
После чего выяснилось, что в неисправном аппарате импульсики бегали все время, а в исправном только несколько милисекунд в момент включения. Ну а дальше используя логический анализатор стало понятно, что циклон просит epcs поделится с ним информацией, а та решила не баловать его ей. Ну а в заключение перелили инфу из одной памяти в другую, и платы ожили.


Свежо придание, да вериться с трудом.
В проекте по умолчанию установлено -авто рестарт конфигурации по ошибке. Вот они и бегали все время.
Своими манипуляциями (потрясли плату) Вы устранили неисправность.
А если и перезалили тоже самое, что уже было в ПЗУ, так ПЗУ от этого хуже не будет.
AALEGYR
Цитата(sazh @ Feb 14 2011, 21:20) *
В проекте по умолчанию установлено -авто рестарт конфигурации по ошибке. Вот они и бегали все время.


Спасибо за информацию, но жаль, что она не была дана 25.01.2011, когда в моем компе появился текстовый файл со следующим содержанием

Цитата
Time(seconds),Bus Name,Signal Name,Data
0,000004500,SPI 1,ASDI,AB - Read silicon ID
0,000161000,SPI 1,DATA,14 - Silicon ID для EPCS16
0,000391000,SPI 1,ASDI,03 - Read bytes
0,000391000,SPI 1,DATA,FF
0,000428000,SPI 1,DATA,FF
0,000465000,SPI 1,DATA,FF
0,000501500,SPI 1,DATA,FF
0,000547500,SPI 1,DATA,FF

Который, кстати, был получен благодаря данному форуму, из которого я узнал о существовании чудесного прибора USBee AX-Pro, и который в России можно преобрести за цену почти на порядок меньше, нежели чем он стоит на родине производителя.
Конечно информацию этого текстового файла трудно перелить из одной памяти в другую, но мир не без добрых людей! Благодаря этим людям, появился интернет, в котором без проблем можно найти сайт производителя, на котором тебе бесплатно представят информацию о том как переписать инфу из одной памяти в другую, и даже разрешат скачать бесплатный софт, который позволяет теоретическую информацию преобразовать в физическую реальность.

Ну а по поводу
Цитата(sazh @ Feb 14 2011, 21:20) *
Своими манипуляциями (потрясли плату) Вы устранили неисправность.


хочу сказать - Подобную фразу в свой адрес, я впервые услышал 35 лет назад. Когда мододым бойцом отремонтировал свой первый аппарат. Сказал ее младший сержант, который прослужил на 180 дней больше чем я, но который по возрасту был на год меня моложе. Через полгода, этот сержант уже предпочитал сбегать на кухню за закуской, нежели чем взять в руки паяльник и отремонтировать очередной комплект. Делал он это не по принуждению, а по собственному желанию. Ибо за это время он смог убедиться, что все его серьезные случаи были серьезными только для него, а у меня и еще у одного парня, эти серьезные случаи решались на раз. Причем решались так, что в наших зипах комплект исправных блоков почти вcегда оставался нетронутым, что не оставалось не замеченным старлеем, который нами комадовал.
Так что, прежде чем делать правильные выводы о результатах деятельности кого-либо, хорошо бы понаблюдать за этой деятельностью, а не предполагать о ней.
dxp
Цитата(AALEGYR @ Feb 14 2011, 21:42) *
Первичный осмотр тела не помог, как не помогла прозвонка цепей питания. Просто появилась возможность поиметь исправный аппарат, и по нему определить где бегают импульсики, а где нет. После чего выяснилось, что в неисправном аппарате импульсики бегали все время, а в исправном только несколько милисекунд в момент включения. Ну а дальше используя логический анализатор стало понятно, что циклон просит epcs поделится с ним информацией, а та решила не баловать его ей. Ну а в заключение перелили инфу из одной памяти в другую, и платы ожили. sm.gif

Ну, так что вам и предлагалось ранее - посмотреть за процессом загрузки и поведением сигналов на выводах, имеющих отношение к этому. В частности, уверен, что там у вас в неисправном приборе должна была быть генерация на выводе nSTATUS, который указывает на успешность загрузки, и высокий уровень на нём устанавливается в случае успеха и стоит постоянно. А если в процессе загрузки сигнал на этом выводе постоянно скачет, то это указывает на ошибки и вызывает повторную загрузку (этот сигнал одновременно служит для сброса конфигуратора).

Т.ч. всё советы в силе: проверить общее документированное поведение микросхемы (питания, загрузку), проверить исправность пинов. Если владеете технологией boundary-scan через jtag (а я понял, что владеете), то с проверкой пинов вообще особых проблем быть не должно. Потроха ПЛИС не нужны ни в каком виде.
sazh
Цитата(AALEGYR @ Feb 15 2011, 00:59) *
нежели чем взять в руки паяльник и отремонтировать очередной комплект. Причем решались так, что в наших зипах комплект исправных блоков почти вcегда оставался нетронутым, что не оставалось не замеченным старлеем, который нами комадовал.
Так что, прежде чем делать правильные выводы о результатах деятельности кого-либо, хорошо бы понаблюдать за этой деятельностью, а не предполагать о ней.



bb-offtopic.gif
Еще 35 лет назад мне, молодому лейтенанту сказал командир. Не трогай технику и она тебя не тронет.
И я ее не трогаю. А наблюдать за деятельностью других - эта моя работа.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.