|
Присвоение ID ПЛИС'е, Как бы проще сделать? |
|
|
|
Aug 25 2009, 07:15
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 510

|
Добрый день! Есть ли у кого опыт решения задачки присвоения ID номера микросхеме? Хочется сделать это не меняя какую-либо константу в программе, а просто прошивочным (программаторским) методом, минуя "залезания" в код. Ведь рано или поздно запустится серия и так хочется делать всё быстро и проще! Нет никаких идей, а? Заранее благодарен за возможные пути решения задачки! Используем Cyclone II и Quartus II.
Сообщение отредактировал Moks - Aug 25 2009, 07:16
|
|
|
|
|
 |
Ответов
(30 - 44)
|
Aug 26 2009, 09:32
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Цитата(DmitryR @ Aug 26 2009, 12:35)  Если так, то бить следует того, кто при такой партии решил отдать распределение номеров на откуп тете Клаве. Если партия небольшая в пару десятков, то можно и прошивок понастроить. А если она больше, то точно что-то напутают. Согласен с AJIEKCEu. «А если ситуация такова, что этап присвоения этого ID проходит через дядю или тётю с соответствующей квалификацией..» То это нетехнологичное некомильфо, Евгений Николаев. И пайка только усугубит. Считаю, что лучше постараться реализовать самому, как попытался автор темы, и не перекладывать на монтажника или еще какую-нибудь «бабусю». «Работа с реальными эксплуатационщиками не раз разработчиков "спускала на землю"». Работали, знаем.  Провода путают местами. А вы говорите, номера паяльником.
|
|
|
|
|
Sep 23 2010, 02:23
|
Знающий
   
Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410

|
Цитата(XVR @ Sep 22 2010, 23:58)  Покапаюсь в битстриме Кстати, а почему бы просто не сгенерить новый битстрим с нужным ID? Это делается запуском bitgen с командной строки, т.е. сие действо можно автоматизировать скриптом. ISE конечно должен на машине стоять (хотя бы огрызок его), но запускать GUI совсем необязательно Меня интересовало не как генерить, а как его в битстриме найти. Как генерить я знаю. Ситуация такая: есть две платы (точнее две генерации одной платы), плис на них стоит одна и та же. Но окружение (синтезаторы, ддс, периферия разная) другое, ноги другие используются. Прошивки посылаются заказчику эл.почтой и заливаются в пзу через RS422. И вот сейчас у них оказались в руках обе платы одновременно. Заказчик раздолбай редкостный и чую, что начнут путать прошивки и писать нам что мы всякую лажу делаем. Вот и хотелось бы зашить в битстрим какой-то признак, идентифицирующий прошивку. А микроблейз, который живет в плис и принимает прошивку по RS422, мог бы это несоответствие обнаружить. USERID для этого очень хорошо подходит. Цитата(XVR @ Sep 22 2010, 23:58)  Покопал битстрим. Похоже USERID записан внутри конфигурационного фрейма (в виде 2х половин по 16 бит и сдвинутый на 1 бит влево). Проблема в том, что позиция в файле видимо будет зависеть от прошивки и совершенно точно при изменении USERID меняется CRC фрейма, который тоже записан в битстриме  Интересно. Я честно говоря тупо запустил поиск по целому USERID и не нашел. Поделитесь пожалуйста своими находками.
|
|
|
|
|
Sep 23 2010, 04:51
|
Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 16-02-07
Из: Долгопрудный
Пользователь №: 25 406

|
Цитата(SM @ Aug 26 2009, 12:40)  Да не только потому. CRC фигня, а вот что-то добавить дополнительное, не зная формата... Это еще та задача. Если CRC фигня, то можно закрепить ROM-lutы на конкретных местах (и оставить их там навсегда), сделать пару прошивок с разными значениями этих ROMов, чтобы найти, где они сидят в потоке и дальше дело техники, если вы знаете как посчитать CRC. Типа реверсинжиниринг  P.S. Но если предстоят обновления загрузок я бы так делать точно не стал  Лучше поставить что-то снаружи для хранения ID.
Сообщение отредактировал Gothard - Sep 23 2010, 04:55
|
|
|
|
|
Sep 23 2010, 06:39
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(disel @ Sep 23 2010, 06:23)  Интересно. Я честно говоря тупо запустил поиск по целому USERID и не нашел. Поделитесь пожалуйста своими находками. Сгенерил 2 прошивки с ID 000000 и FFFFFFFF и сравнил (побайтно) Код C:\home\roman\cnc\fpga_v3_servo>fc /b top.bin.fffff top.bin Сравнение файлов top.bin.fffff и TOP.BIN 00032E39: 00 01 00032E3A: 00 FF 00032E3B: 00 FE 00032FBD: 00 01 00032FBE: 00 FF 00032FBF: 00 FE 000452BA: 13 B1 000452BB: 8C 5F Как видим ID лежит 2 частями по адресам 32E39 (3 байта) и 32FBD (3 байта) Возможно еще были переставленны биты. CRC лежит с 452BA (2 байта) Увы, для другой прошивки адреса могут уехать Цитата Вот и хотелось бы зашить в битстрим какой-то признак, идентифицирующий прошивку. А микроблейз, который живет в плис и принимает прошивку по RS422, мог бы это несоответствие обнаружить. Сделайте у прошивки свой заголовок (с ID), при заливке проверяйте его и выбрасывайте (во FLASH его писать не надо) Да даже можно и записать, FPGA его проигнорирует (главное, что бы в нем не нашлось синхронизирующее слово  )
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|