Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: JTAG интерфейс для прошивки цепочки Хilinх iMРАСT
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Интерфейсы
eugen_pcad_ru
Всем доброго времени суток!
Вопрос к специалистам по прошивке Хilinх. Имеется схема, в котрой JТАG реализуется на микроконтроллере МК. Далее установлена цепочка {FPGА, ПЗУ1, ПЗУ2}. Файл прошивки хранится на удаленном компьютере, который имеет канал связи TСР/IР с микроконтроллером.
То есть схема приблизительно следующая:
ПЭВМ(TCP/IP) -> MK(JTАG) -> FPGА -> PRОМ1 -> PRОМ2 -> bak to MK -> ПЭВМ.

Задача: прошивать без использования iMРАСT.
Как подступиться к этой задаче пока не представляю. Б0льшая часть реализаций из инета предполагает наличие файла прошивки в составе МК. Поиск про JТАG выдает ссылки на периферийное сканирование, но я так понимаю это не совсем то, что нужно.

Что читать? Куда смотреть?
Заранее спасибо всем ответившим!

P.S.: Имеются файлы: bin, bit, mcs1, mcs2.
P.P.S.: Не уверен что с этой темой надо сюда. Не возражаю против переноса в другой подходящий раздел.
XVR
Вам нужно с помощью iMPACT сформировать файл прошивки в формате SVF, XSVF или STAPL. Это все форматы для проигрывание через JTAG. Далее в своем MK делаете проигрыватель под один из этих форматов (для XSVF сорцы есть на сайте Xilinx, для STAPL ищите на сайте Alter'ы)


UPD: XSVF - xapp058 у Xilinx
eugen_pcad_ru
2XVR:
Спасибо за ответ!
Использую ISЕ 10.1. XSVF создал. SVF без подключенного железа почему-то создать не удалось. Получить SVF из XSVF тоже пока не удалось.
xaрр058 изучаю. Поведение исходников (xарp058_exаmple_fоr_win32_visuаlc2008) из состава xapp058.ziр не соответсвует готовому exe-плееру playxsvf501b.exe (в режиме симуляции с ключом -s).
Пока планирую использовать команду типа "playxsvf501.exe -s file.xsvf > log.txt", после этого парсить txt-файл и прошивать транслируя данные (Это если не удастся реализовать необходимый механизм в микроконтроллере). Недостаток - это всё довольно долго (десятки секунд). Конечно на микроконтроллере должно быть побыстрее.

Еще хотел бы один вопрос для себя прояснить: в XSVF-формате уже присутствуют все команды для прошивки всей JTAG-цепочки? После перезагрузки питания не нужно будет перепрошивать цепочку XSVF-файлом?

Спасибо!

P.S.: STAPL можно для Xilinx-a получить?

XVR
Цитата(eugen_pcad_ru @ Dec 14 2012, 10:18) *
Пока планирую использовать команду типа "playxsvf501.exe -s file.xsvf > log.txt", после этого парсить txt-файл и прошивать транслируя данные
Гм...
Цитата
(Это если не удастся реализовать необходимый механизм в микроконтроллере).
Именно там и надо его реализовывать. берете исходники плеера из xapp058, адаптируете и зашиваете их в МК

Цитата
Еще хотел бы один вопрос для себя прояснить: в XSVF-формате уже присутствуют все команды для прошивки всей JTAG-цепочки?
Да. XSVF файл - это конвертированный в бинарную форму SVF файл. А в нем содержится протокол команд, передаваемых по JTAG'у
Да, прежде чем генерить файл прошивки убедитесь, что в iMPACT'е правильно задана JTAG цепочка - что в ней присутсвуют все ваши устройства и в правильном порядке.

Цитата
После перезагрузки питания не нужно будет перепрошивать цепочку XSVF-файлом?
Если у вас в цепочки нет FPGA, то не нужно

Цитата
P.S.: STAPL можно для Xilinx-a получить?
Вроде iMPACT умеет
eugen_pcad_ru
2XVR:
Спасибо за ответы!
Да, в iMPАСT-е всё корректно. Там то я разобралсяsm.gif
Цитата(XVR @ Dec 14 2012, 10:38) *
Если у вас в цепочки нет FPGА, то не нужно

В цепочке FPGА и две ПЗУ. Я предполагал, что ПЗУ как раз и будут хранить конфигурацию для FPGA до тех пор, пока не потребуется обновить ПО на плате(не взирая на включения/выключения питания). Я не прав?

P.S.: Режим работы приблизительно следующий: прошиваю первый раз, потом через год-другой эксплуатации обновляю прошивку и т.п. В общем похоже на обновление прошивки мобильного телефонаsm.gif
XVR
Цитата(eugen_pcad_ru @ Dec 17 2012, 11:23) *
В цепочке FPGА и две ПЗУ. Я предполагал, что ПЗУ как раз и будут хранить конфигурацию для FPGA до тех пор, пока не потребуется обновить ПО на плате(не взирая на включения/выключения питания). Я не прав?
Это зависит от режима загрузки FPGA (выбирается перемычками на специальных ногах). Есди FPGA грузится с ПЗУ, то ее перешивать не надо, и после перепрошивки ПЗУ достаточно передернуть питание на приборе.

Перешивать FPGA через JTAG может понадобится только в процессе отладки rolleyes.gif
eugen_pcad_ru
2XVR:
Спасибо!

P.S.: Тему пока закрывать не буду: вдруг по прибытии железа еще чего понадобится спросить.
eugen_pcad_ru
Получил три платы. Две заработали нормально, на третьей не определяется JTAG-цепочка.
iМРАCT выдает следующее:
"
// *** BАTCH CMD : ReadIdcode -p 1
INFO:iMРАCT:583 - '0': The idcode read from the device does not match the idcode in the bsdl File.
INFO:iMРАCT:1578 - '0': Device IDCODE : 00001010110100001011011101010101
INFO:iMРАCT:1579 - '0': Expected IDCODE: 00000010011000110000000010010011
INFO:iMРАCT:583 - '1': The idcode read from the device does not match the idcode in the bsdl File.
INFO:iMРАCT:1578 - '1': Device IDCODE : 00001010110100001011011101010101
INFO:iMРАCT:1579 - '1': Expected IDCODE: 00000010011000110000000010010011
"
Пока предполагаю, что дело в непропае FPGА (ХС3S1400АN-4FGG676). Кто-нибудь сталкивался с подобным? Чем еще это может быть вызвано? И какие рекомендации по лечению: менять всю цепочку?

XVR
А чипы правильные стоят? Возможно не те версии запаяли
iosifk
Цитата(XVR @ Jan 10 2013, 17:28) *
А чипы правильные стоят? Возможно не те версии запаяли

или неправильный (старый) BSDL файл...
eugen_pcad_ru
Чипы на всех платах одинаковые (судя по маркировке). автодектом следующие за FPGА ПЗУшки определяются, но прошить их (вручную определяю цепочку) не удается.
А вот FPGА определяется как несколько unknown device (потому как ID не соответствует ожидаемому).
Настройки iMPАСTa для всех трех плат одинаковы, так что с ВSDL я думаю тоже всё ок. Правда не знаю как в этом удостовериться.

Какие еще могут быть предположения?

P.S.: Могу привести полный лог импакта. Надо?
XVR
Цитата(eugen_pcad_ru @ Jan 11 2013, 09:40) *
Какие еще могут быть предположения?
Левые чипы

eugen_pcad_ru

Большое спасибо все ответившим.
Выяснил в чем была беда. Был небольшой коротыш на ножках преобразователя питания ядра 1,2В. После устранения КЗ, FРGA начала определяться и программироваться. Но возникла другая беда: где-то на 10ти-30ти процентах (каждый раз по разному) загрузки PROM1 (это XСF04 - средняя микросхема в цепочке JTАG) начинаются ошибки. Краткий фрагмент лога ниже:
"
Validating chain...
Boundary-scan chain validated successfully.
'2': Erasing device...
PROGRESS_START - Starting Operation.
'2': Erasure completed successfully.
'2': Programming device...
write count != nBytes(0), rc = C0000011.
write cmd failed C0000011.
write cmdbuffer failed 20000015.
write cmdbuffer failed 20000015.
...
write cmdbuffer failed 20000015.
'2': Programming terminated due to errors.
"
По некоторым советам Хilinх-a
(http://www.xilinx.com/support/answers/24911.htm
http://www.xilinx.com/support/answers/31254.htm
http://www.xilinx.com/support/answers/31931.htm
)
предлагают переустановить/перезапустить драйвер и перезапустить программатор. Больше пока никаких внятных рекомендаций не увидел.
Всё это делал, конкретно для этой ПЗУ не помогает. Может кто-нибудь сталкивался с таким? Какое лечение?

Конечно первое, что приходит в голову - это заменить ПЗУ. Но на FРGA я тоже раньше грешил, оказалось дело не в ней.

P.S.: Использую iMPACT из состава ISE 10.1.
XVR
Посмотрите осциллографом сигналы на ногах JTAG'а. Возможно проблема в уровнях или фронтах
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.