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

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


Участник
*

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



Добрый день!
Есть ли у кого опыт решения задачки присвоения ID номера микросхеме? Хочется сделать это не меняя какую-либо константу в программе, а просто прошивочным (программаторским) методом, минуя "залезания" в код.
Ведь рано или поздно запустится серия и так хочется делать всё быстро и проще!
Нет никаких идей, а?
Заранее благодарен за возможные пути решения задачки!
Используем Cyclone II и Quartus II.
rolleyes.gif

Сообщение отредактировал Moks - Aug 25 2009, 07:16
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
XVR
сообщение Sep 22 2010, 09:05
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Я что-то так и не понял - в итоге можно ли отдельно переписать USERCODE-регистр в JTAG'е?
Нет, он закопан в битстриме. Можно сгенерить 2 битстрима с разными USERCODE, посмотреть где в них отличаются биты, а потом написать скрипт, который по этому месту будет прописывать в файл прошивки необходимый ID
Go to the top of the page
 
+Quote Post
disel
сообщение Sep 22 2010, 09:37
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Цитата(XVR @ Sep 22 2010, 13:05) *
Нет, он закопан в битстриме. Можно сгенерить 2 битстрима с разными USERCODE, посмотреть где в них отличаются биты, а потом написать скрипт, который по этому месту будет прописывать в файл прошивки необходимый ID


Я пробовал анализировать разные битстримы на предмет поиска положения USERCODE. Но то ли мозгов не хватило, то ли времени, но разобраться где USERCODE живет я не смог. А в документации все тихо по этому поводу.
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 22 2010, 12:52
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(disel @ Sep 22 2010, 13:37) *
Я пробовал анализировать разные битстримы на предмет поиска положения USERCODE. Но то ли мозгов не хватило, то ли времени, но разобраться где USERCODE живет я не смог. А в документации все тихо по этому поводу.
Увы, с Alter'ой не работал. У Xilinx'а местоположение регистра IDCODE задокументированно

Go to the top of the page
 
+Quote Post
disel
сообщение Sep 22 2010, 13:14
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Цитата(XVR @ Sep 22 2010, 16:52) *
Увы, с Alter'ой не работал. У Xilinx'а местоположение регистра IDCODE задокументированно


Так я про ксалинкс и писал. Только не про IDCODE, а про USERCODE. Джитагом его прочитать можно, а как найти в битстриме неясно.
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 22 2010, 19:58
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(disel @ Sep 22 2010, 17:14) *
Так я про ксалинкс и писал. Только не про IDCODE, а про USERCODE. Джитагом его прочитать можно, а как найти в битстриме неясно.
Покапаюсь в битстриме rolleyes.gif

Кстати, а почему бы просто не сгенерить новый битстрим с нужным ID? Это делается запуском bitgen с командной строки, т.е. сие действо можно автоматизировать скриптом. ISE конечно должен на машине стоять (хотя бы огрызок его), но запускать GUI совсем необязательно



Покопал битстрим. Похоже USERID записан внутри конфигурационного фрейма (в виде 2х половин по 16 бит и сдвинутый на 1 бит влево). Проблема в том, что позиция в файле видимо будет зависеть от прошивки и совершенно точно при изменении USERID меняется CRC фрейма, который тоже записан в битстриме sad.gif
Go to the top of the page
 
+Quote Post
disel
сообщение Sep 23 2010, 02:23
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Цитата(XVR @ Sep 22 2010, 23:58) *
Покапаюсь в битстриме rolleyes.gif

Кстати, а почему бы просто не сгенерить новый битстрим с нужным ID? Это делается запуском bitgen с командной строки, т.е. сие действо можно автоматизировать скриптом. ISE конечно должен на машине стоять (хотя бы огрызок его), но запускать GUI совсем необязательно

Меня интересовало не как генерить, а как его в битстриме найти. Как генерить я знаю. Ситуация такая: есть две платы (точнее две генерации одной платы), плис на них стоит одна и та же. Но окружение (синтезаторы, ддс, периферия разная) другое, ноги другие используются. Прошивки посылаются заказчику эл.почтой и заливаются в пзу через RS422. И вот сейчас у них оказались в руках обе платы одновременно. Заказчик раздолбай редкостный и чую, что начнут путать прошивки и писать нам что мы всякую лажу делаем.
Вот и хотелось бы зашить в битстрим какой-то признак, идентифицирующий прошивку. А микроблейз, который живет в плис и принимает прошивку по RS422, мог бы это несоответствие обнаружить. USERID для этого очень хорошо подходит.

Цитата(XVR @ Sep 22 2010, 23:58) *
Покопал битстрим. Похоже USERID записан внутри конфигурационного фрейма (в виде 2х половин по 16 бит и сдвинутый на 1 бит влево). Проблема в том, что позиция в файле видимо будет зависеть от прошивки и совершенно точно при изменении USERID меняется CRC фрейма, который тоже записан в битстриме sad.gif

Интересно. Я честно говоря тупо запустил поиск по целому USERID и не нашел. Поделитесь пожалуйста своими находками.
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 23 2010, 06:39
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 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 его проигнорирует (главное, что бы в нем не нашлось синхронизирующее слово rolleyes.gif )
Go to the top of the page
 
+Quote Post
disel
сообщение Sep 24 2010, 02:29
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Цитата(XVR @ Sep 23 2010, 10:39) *
Как видим ID лежит 2 частями по адресам 32E39 (3 байта) и 32FBD (3 байта) Возможно еще были переставленны биты. CRC лежит с 452BA (2 байта)
Увы, для другой прошивки адреса могут уехать

Спасибо. Интересно, положение в битстриме для одного типа микросхем постоянно или нет? Сегодня поэкспериментирую.

Цитата(XVR @ Sep 23 2010, 10:39) *
Сделайте у прошивки свой заголовок (с ID), при заливке проверяйте его и выбрасывайте (во FLASH его писать не надо)
Да даже можно и записать, FPGA его проигнорирует (главное, что бы в нем не нашлось синхронизирующее слово rolleyes.gif )

Такая мысль была сразу, но это надо не забыть запустить скрипт, которые припишет заголовок. А это человеческий фактор, могу ведь и забыть при очередной генерации прошивки. А с USERID все автоматически.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 24 2010, 02:40
Сообщение #10


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(disel @ Sep 23 2010, 20:29) *
Такая мысль была сразу, но это надо не забыть запустить скрипт, которые припишет заголовок. А это человеческий фактор, могу ведь и забыть при очередной генерации прошивки. А с USERID все автоматически.

а
set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:assign_id.tcl" не катит?
или
set_global_assignment -name POST_FLOW_SCRIPT_FILE "quartus_sh:assign_id.tcl" не катит?


--------------------
Go to the top of the page
 
+Quote Post
disel
сообщение Sep 24 2010, 05:08
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Цитата(des00 @ Sep 24 2010, 06:40) *
а
set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:assign_id.tcl" не катит?
или
set_global_assignment -name POST_FLOW_SCRIPT_FILE "quartus_sh:assign_id.tcl" не катит?


Так то квартус, я про ксалникс. Как автоматически запустить скрипт для ISE я не смог разобраться.

Цитата(XVR @ Sep 24 2010, 08:54) *
Декодировал битстрим. ID лежит внутри фрейма (ISE сгенерил один большой фрейм). Уверен, что положение внутри одного отдельного фрейма (а не внутри той пачки, которая записана в битстриме) будет постоянна (и адрес фрейма будет фиксирован). Но вот положение внутри самого образа битстрима точно будет плавать

Жалко что положение не постоянно.

Цитата(XVR @ Sep 24 2010, 08:54) *
Скрипт тоже можно запускать автоматически

А как?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Moks   Присвоение ID ПЛИС'е   Aug 25 2009, 07:15
- - Kuzmi4   2 Moks - ниос есть/нет ?   Aug 25 2009, 07:27
- - DmitryR   Впаять рядом DS28CM00. В каждой микрухе - свой код...   Aug 25 2009, 07:30
- - AJIEKCEu   Как вариант, аналогично DmitryR DS1990 правда инт...   Aug 25 2009, 07:36
|- - Moks   Цитата(AJIEKCEu @ Aug 25 2009, 11:36) Но ...   Aug 25 2009, 07:49
- - AJIEKCEu   Цитата(Moks @ Aug 25 2009, 11:49) Да, но ...   Aug 25 2009, 07:54
- - Moks   Задача-то состоит в том, что все устройства объеди...   Aug 25 2009, 08:08
- - AJIEKCEu   Цитата(Moks @ Aug 25 2009, 12:08) Задача-...   Aug 25 2009, 08:13
|- - SM   Цитата(AJIEKCEu @ Aug 25 2009, 12:13) Но ...   Aug 25 2009, 08:40
- - SM   А откуда грузится ПЛИСка? Вариант - сделать блок О...   Aug 25 2009, 08:27
|- - Moks   Цитата(SM @ Aug 25 2009, 12:27) А откуда ...   Aug 25 2009, 09:01
|- - DmitryR   Если вам необходимо именно самому с помощью тети К...   Aug 25 2009, 09:22
- - Kuzmi4   Если есть ниос - когда то этот вопрос довольно дет...   Aug 25 2009, 08:35
- - x736C   Moks, доступ через дизайн к константе не планирует...   Aug 25 2009, 08:47
- - Moks   Примерно понятно, спасибо. Значит, без дополнитель...   Aug 25 2009, 09:48
- - AJIEKCEu   Цитата(SM @ Aug 25 2009, 12:40) Неудачный...   Aug 25 2009, 11:47
|- - SM   Цитата(AJIEKCEu @ Aug 25 2009, 15:47) А п...   Aug 25 2009, 12:03
- - spectr   Э народ вы че, какие нафиг ПЗУ для идентификатора ...   Aug 25 2009, 17:01
|- - SM   Цитата(spectr @ Aug 25 2009, 21:01) Э нар...   Aug 25 2009, 17:43
- - Евгений Николаев   А каково должно быть разнообразие этих ID-номеров?...   Aug 25 2009, 18:27
|- - sazh   Цитата(Евгений Николаев @ Aug 25 2009, 22...   Aug 25 2009, 18:33
|- - SM   Цитата(sazh @ Aug 25 2009, 22:33) А ОТК п...   Aug 25 2009, 18:45
|- - sazh   Цитата(SM @ Aug 25 2009, 22:45) ДолжОн. S...   Aug 25 2009, 19:05
|- - SM   Цитата(sazh @ Aug 25 2009, 23:05) Может я...   Aug 25 2009, 19:18
|- - ReAl   Цитата(sazh @ Aug 25 2009, 22:05) Может я...   Aug 25 2009, 20:11
- - x736C   А зачем его вносить? В документацию на технологию ...   Aug 25 2009, 19:15
- - Евгений Николаев   ЦитатаТолько мне кажется джамперами задавать ID не...   Aug 26 2009, 04:24
|- - AJIEKCEu   Цитата(Евгений Николаев @ Aug 26 2009, 08...   Aug 26 2009, 07:40
|- - SM   Цитата(AJIEKCEu @ Aug 26 2009, 11:40) Сам...   Aug 26 2009, 08:25
|- - DmitryR   Цитата(AJIEKCEu @ Aug 26 2009, 11:40) А п...   Aug 26 2009, 08:35
|- - SM   Цитата(DmitryR @ Aug 26 2009, 12:35) И вс...   Aug 26 2009, 08:40
||- - Gothard   Цитата(SM @ Aug 26 2009, 12:40) Да не тол...   Sep 23 2010, 04:51
||- - iosifk   Все прочитать не успел... Я могу предложить для эт...   Sep 23 2010, 05:07
|- - x736C   Цитата(DmitryR @ Aug 26 2009, 12:35) Если...   Aug 26 2009, 09:32
- - SFx   DS2401 - вот решение. цена 1тыщи от 0.52$ но ...   Aug 26 2009, 09:25
- - SM   Кстати еще решение - IMHO самое простое из всех. Н...   Aug 26 2009, 09:31
|- - des00   Цитата(SM @ Aug 26 2009, 04:31) Кстати ещ...   Aug 26 2009, 11:41
- - spectr   Я что-то так и не понял - в итоге можно ли отдельн...   Sep 21 2010, 15:59
|- - XVR   Цитата(disel @ Sep 24 2010, 06:29) Спасиб...   Sep 24 2010, 04:54
- - XVR   ЦитатаСкрипт тоже можно запускать автоматически А ...   Sep 24 2010, 09:10
|- - disel   Цитата(XVR @ Sep 24 2010, 13:10) Как вари...   Sep 24 2010, 13:00
- - spectr   Народ, смотрите что нашел - описание POF-формата (...   Sep 24 2010, 13:43
|- - zombi   Цитата(spectr @ Sep 24 2010, 16:43) Народ...   Sep 28 2010, 21:32
|- - spectr   Цитата(zombi @ Sep 29 2010, 01:32) Кстати...   Sep 30 2010, 17:19
|- - zombi   Цитата(spectr @ Sep 30 2010, 20:19) Наско...   Oct 1 2010, 12:12
- - vitan   По повдоу основного вопроса топика можно сказать, ...   Sep 24 2010, 18:41
- - XVR   ЦитатаА прошивку ПЛИС, имхо, нужно стремиться сохр...   Sep 25 2010, 05:03
- - Reanimator++   Мне честно говоря не нравится идея вставки номера ...   Sep 26 2010, 09:49
|- - XVR   Цитата(Reanimator++ @ Sep 26 2010, ...   Sep 27 2010, 08:38
- - Reanimator++   Я бы тогда разделил прошивку заводскую (через JTAG...   Sep 27 2010, 13:12
- - Aprox   Позвольте напомню, как этот вопрос решался на древ...   Oct 5 2010, 18:13


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

 


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


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