Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как прочитать CPLD?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
spl
Имеется плата на которой стоит проц и Altera MAXII. Как сделать так, чтобы по запросу проца CPLD передавала ему свой загрузочный код?
Я так понял, что JAM-player может прошить ПЛИС, но не прочитать.
Если писать код считывания самому, то в описании протокола (Configuration Handbook) MAXII отсутствует, а для описанных семейств приведены подробные временные диаграммы, но не нашел верхнего уровня (т.е. какие собственно данные нужно посылать).
SM
Цитата(spl @ Apr 24 2009, 12:37) *
Если писать код считывания самому, то в описании протокола (Configuration Handbook) MAXII отсутствует, а для описанных семейств приведены подробные временные диаграммы, но не нашел верхнего уровня (т.е. какие собственно данные нужно посылать).

Сделайте SVF-файло для программирования и верификации, и посмотрите его. Все увидите сами. Что касается описания протокола MAX-II, так его никто не скрывал. Беглым просмотром документации обнаруживается, что он есть IEEE-1532. А более глубоким - на раз находятся MAX II 1532 BSDL файлы. JAM-плеером можно считать конфигурацию. Раз он верифицирует, значит и считывает. Ну соответственно надо написать JAM-программу для этого действия.
atlantic
Цитата(spl @ Apr 24 2009, 11:37) *
Имеется плата на которой стоит проц и Altera MAXII. Как сделать так, чтобы по запросу проца CPLD передавала ему свой загрузочный код?
Я так понял, что JAM-player может прошить ПЛИС, но не прочитать.
Если писать код считывания самому, то в описании протокола (Configuration Handbook) MAXII отсутствует, а для описанных семейств приведены подробные временные диаграммы, но не нашел верхнего уровня (т.е. какие собственно данные нужно посылать).

А какой смысл ее читать процессором?
Она(прошивка CPLD) меняется во времени?
Если хотите скопировать, то проще прочитать байтбластером(если там бит секретности не установлен, а если установлен то и вопросы все отпадают).
EvgenyNik
Цитата
А какой смысл ее читать процессором?
Она(прошивка CPLD) меняется во времени?

Предположу, что для того, чтобы проц мог обновить прошивку CPLD при необходимости. Например, высылаешь заказчику новую прошивку для проца, а в ней актуальная версия прошивки для CPLD. Проц сравнивает - если различается, то прошивает новую...
Плюс в том, что на признаки версии прошивки CPLD не приходится тратить немногочисленные ресурсы самой CPLD.
SM
Цитата(Евгений Николаев @ Apr 24 2009, 13:44) *
Например, высылаешь заказчику новую прошивку для проца, а в ней актуальная версия прошивки для CPLD. Проц сравнивает - если различается, то прошивает новую...

Ага, это называется через зад автогеном. Может быть еще посложнее что-то придумать можно? Если хорошо подумать... Для этого придуман User Code, который шьется в любое значение при прошивке ПЛИС и читается потом одной командой вне зависимости от security bit.
spl
Цитата(atlantic @ Apr 24 2009, 13:30) *
А какой смысл ее читать процессором?
Она(прошивка CPLD) меняется во времени?
Если хотите скопировать, то проще прочитать байтбластером(если там бит секретности не установлен, а если установлен то и вопросы все отпадают).

Специфика девайса:
По запросу контролирующих органов проц должен выдать дампы прошивки всего что шьется включая и свой собственный.
atlantic
>По запросу контролирующих органов
Наверно это налоговая инспекция smile.gif
Что они с этим дампом потом смогут сделать?
Наверно "дизассемлерировать" и посмотреть/сравнить с исходником прошивки smile.gif
spl
Цитата(atlantic @ Apr 24 2009, 14:05) *
>По запросу контролирующих органов
Наверно это налоговая инспекция smile.gif

Да, они любят чтобы им все отдавались.
DmitryR
Цитата(spl @ Apr 24 2009, 13:58) *
По запросу контролирующих органов проц должен выдать дампы прошивки всего что шьется включая и свой собственный.

А как контроллирующие органы проверят, что то, что им отдал процессор, является прошивкой CPLD? Никак. Поэтому тут два варианта: если они хотят иметь реальный контроль - то сами читают CPLD через JTAG (и потом наверное сравнивают с эталонной прошивкой). Если они хотят нарисовать галочку, что "проверили", то есть просто повысить чувство собственной важности - пусть им процессор просто зашитый в его ПЗУ SVF отдает и все.
spl
Цитата(DmitryR @ Apr 24 2009, 15:33) *
А как контроллирующие органы проверят, что то, что им отдал процессор, является прошивкой CPLD?

Для этого придумали разделение труда -
специалисты по сертификации проверяют что проц выдает именно именно прошивку а не ее копию,
а контролирующие органы проверяют соответствие этой прошивки оригиналу.
EvgenyNik
SM, про USER CODE согласен. Красивое, оптимальное решение, особенно - обход security bit'а. Подойдёт для крупных серий, где прошивка сто раз проверифицируется и в единственном(!) экземпляре будет передана в производство.
А вот если прошивка находится в постоянном развитии - то один что-то подправит, то другой, прошивка "живёт своей жизнью"... Может случиться так, что под одним User Code'ом будет существовать несколько релизов. Человеческий фактор и ничего с ним не поделаешь, к сожалению.
Поэтому сличение всей прошивки целиком более показательно с точки зрения надёжности. Хотя: от секретности отказываемся сразу, время старта системы увеличиваем, объём кода тоже...
Бывает, что и через зад автогеном приходится: да, сложнее, но при желании и до гланд добраться можно laughing.gif
SM
Цитата(Евгений Николаев @ Apr 24 2009, 17:20) *
А вот если прошивка находится в постоянном развитии - то один что-то подправит, то другой, прошивка "живёт своей жизнью"... Может случиться так, что под одним User Code'ом будет существовать несколько релизов. Человеческий фактор и ничего с ним не поделаешь, к сожалению.

Человеческий фактор аннулируется скриптом, который увеличивает юзеркод на единицу после каждой компиляции smile.gif Или делает его из даты-времени...
rv3dll(lex)
Цитата(Евгений Николаев @ Apr 24 2009, 13:44) *
Предположу, что для того, чтобы проц мог обновить прошивку CPLD при необходимости. Например, высылаешь заказчику новую прошивку для проца, а в ней актуальная версия прошивки для CPLD. Проц сравнивает - если различается, то прошивает новую...
Плюс в том, что на признаки версии прошивки CPLD не приходится тратить немногочисленные ресурсы самой CPLD.


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

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



Цитата(SM @ Apr 26 2009, 23:31) *
Человеческий фактор аннулируется скриптом, который увеличивает юзеркод на единицу после каждой компиляции smile.gif Или делает его из даты-времени...


и тогда пладятся тысячи одинаковых прошивок.
EvgenyNik
Цитата(rv3dll(lex) @ Apr 27 2009, 10:18) *
зачем сравнивать, если можно тупо прошить????

Тупо прошивать нельзя хотя бы потому, что ресурс перепрошивания у CPLD ограничен.
Там, где для наращивания системных функций может потребоваться перепрошивка и программируемая логика стоит в связке с процом, для которого заложена возможность перепрошивки, лучше ставить FPGA и грузить его по PS-у процом. Ни сравнивать ничего не надо, не бояться окончания ресурса. Именно - тупо шить то, с чем верхний софт будет работать.
Цитата
типичный програмистский подход)))

Вот я как раз аппаратчик, в смысле - непрограммист, и мы семь раз отмеряем, прежде чем запустить что-то во внешний оборот только потому, что потом добраться до девайса будет очень непросто. Но иногда мерять можно сколько угодно раз, а отрежешь всё равно мимо...
rv3dll(lex)
у меня есть макетка, на которой стоит 3128s - я на ней всякие мелочи отлаживаю.
так вот мне 12 лет не зватило, чтобы у неё ресурс кончился. так что на жизнь прибора хватит с лихвой. даже если там 10000 раз и по разу в день - это около 30 лет
EvgenyNik
Не все такие долгожители smile.gif
Цитата
MAX 3000A devices use CMOS EEPROM cells to implement logic functions. The devices... can be programmed and erased up to 100 times.

У 7000s такая же оговорка была. На моей памяти есть доведение одной 7160s частыми перепрошивками до невменяемого состояния примерно на 50-70 раз. Про MAXII беглым взглядом не нашёл про живучесть конфигурационной и юзерской памятей.
rv3dll(lex)
вот специально взял 3032slc - засунул её в MPU и прошил 100 раз. никаких проблем.
IEC
По граблям, на которые наступал, обычно EPM3256 хватало раз на 50 для перепрошивки, а потом приходилось снимать с платы. Никакие пляски с бубном вокруг нее не помогали.
Stewart Little
Цитата(Евгений Николаев @ Apr 27 2009, 11:56) *
Про MAXII беглым взглядом не нашёл про живучесть конфигурационной и юзерской памятей.

100 циклов - см. в даташите на MAX II , в разделе DC and Switching Characteristics, стр.5.3

Programming/Erasure Specifications
Table 5–3 shows the MAX II device family programming/erasure specifications.
Erase and reprogram cycles — — 100 Cycles (Maximum)
Note to Table 5–3:
This specification applies to the UFM and configuration flash memory (CFM) blocks.
rv3dll(lex)
мне попадались плис, на которых написано не шьётся пробуешь-а они шьются. Будет время попробую в MPU шить до тех пор, пока не перестанет шиться.
zksystem
Я как понял из поста у Вас CPLD прошивается внешним контроллером, неужели версию прошивы CPLD нельзя сохранить в EEPROM или FLASH памяти контроллера?
rv3dll(lex)
я как то раньше не вдавался в подробности, в настройках есть некоторый параметр код JTAG по умолчанию стоит ffff//// что это и для чего нужно?
EvgenyNik
Это User Code - подобие Vendor & Product ID (см. выше - SM писал об этом), который пользователь может устанавливать сам именно для идентификации прошивки.
spl
Цитата(zksystem @ May 4 2009, 20:55) *
Я как понял из поста у Вас CPLD прошивается внешним контроллером, неужели версию прошивы CPLD нельзя сохранить в EEPROM или FLASH памяти контроллера?

В том-то и дело, что требовалось именно считать всю прошивку внешним процессором.
Спасибо SM за дельную мысль. В итоге мне больше понравился следующая методика:
Из файла *.pof создается *.svf, который конвертится (компилируется) в *.xsvf, который в свою очередь "проигрывается" playxsvf-плеером "встроенным" в процессор. SVF формат понравился больше чем JAM из-за того, что можно легко разделить процессы записи/чтения прошивки ПЛИС.
rv3dll(lex)
Цитата(Евгений Николаев @ May 5 2009, 09:23) *
Это User Code - подобие Vendor & Product ID (см. выше - SM писал об этом), который пользователь может устанавливать сам именно для идентификации прошивки.



лучще бы туда контрольная сумма зашивалась
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.