Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы при прошивке ArriaV Soc FPGA по JTAG
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Vengin
Доброго времени суток.

Имеется удалённый доступ к Arria V SoC Development Board. Собираю в Quartus 14.0, пытаюсь прошить FPGA. В JTAG цепочке 3 устройства: SOCVHPS -> FPGA -> CPLD. За основу прокета взят GHRD (Golden Hardware Reference Design), добавлены свои IP в QSys (и в частности используются 2 FPGA Hard Memory Controllers). Когда прошиваю FPGA *.sof файлом из GHRD (Golden Hardware Reference Design) - всё корректно. Когда пытаюсь прошить FPGA *.sof файлом своего проекта - процесс останавливается на 96%, и JTAG цепочка ломается (необходмо ресетать плату). JTAG Debugger рапортует:
Код
!Error: The TDI connection to the first detected device 5ASTFD5(G3|K3|K3ES)/.. might be shorted to VCC or is an open circuit
!Error: The TCK and TMS connections to the device before the first detected device 5ASTFD5(G3|K3|K3ES)/.. might have a problem

Пытаясь найти причины проблемы, удалось обнаружить только то, что как только из QSys подсистемы выкидываю HPS компонент - проблема исчезает, и FPGA программируется успешно. Перепробовал уже кучу модификаций и проектных настроек, но с HPS программирование фэйлится. При этом проект GHRD, в котором HPS компонент имеется, программируется корректно.

Собственно вопрос: может есть у кого идеи, что не так? Сам я с HPS до этого не работал. Из мануалов вижу, что Boot Process там многоступенчатый, но вроде это больше относится к загрузке из Flash (а по JTAG можно как обычно FPGA залить и отлаживаться).
Vengin
Продолжая копать в поисках причины проблемы, случайно обнаружил такой Warning в *.asm.rpt репорте Quartus Assembler-а (т.е. на этапе создания файла *.sof прошивки FPGA):
Код
Warning (11713): The configuration of the Hard Processor Subsystem (HPS) within this design has changed.
The Preloader software that initializes the HPS requires an update.
Using hps_isw_handoff/<name>/, run the Preloader Support Package Generator to update your Preloader software

В этой папке снегерены какие-то *.c, *.h, *.xml файлы и *.hiof.
Может ли это быть причиной проблемы? Пока ещё не совсем представляю как этот Preloader обновить (статически во Flash?), и нужно ли это будет делать каждый раз при изменении HPS компонента?
sonycman
Цитата(Vengin @ Sep 10 2016, 12:51) *
Продолжая копать в поисках причины проблемы, случайно обнаружил такой Warning в *.asm.rpt репорте Quartus Assembler-а (т.е. на этапе создания файла *.sof прошивки FPGA):
Код
Warning (11713): The configuration of the Hard Processor Subsystem (HPS) within this design has changed.
The Preloader software that initializes the HPS requires an update.
Using hps_isw_handoff/<name>/, run the Preloader Support Package Generator to update your Preloader software

В этой папке снегерены какие-то *.c, *.h, *.xml файлы и *.hiof.
Может ли это быть причиной проблемы? Пока ещё не совсем представляю как этот Preloader обновить (статически во Flash?), и нужно ли это будет делать каждый раз при изменении HPS компонента?

Нет, это исходники для генерации загрузчика (прелоадера) (с помощью BSP-Editor, который входит в пакет SoC EDS).
Да, его нужно обновлять каждый раз, когда вносятся изменения в HPS компонент.
Но к ошибкам программирования по JTAG это не должно приводить.
Вы ведь не пытаетесь загрузить систему с помощью загрузчика пока что.

Если GHRD успешно прошивается, тогда возможно проблема в созданном вами компоненте HPS.
Попробуйте взять за основу GHRD, и на его базе создать свою систему.
Оставьте непосредственно HPS, удалите ненужные модули и добавьте свои.

Vengin
Цитата(sonycman @ Sep 10 2016, 12:58) *
Если GHRD успешно прошивается, тогда возможно проблема в созданном вами компоненте HPS.
Попробуйте взять за основу GHRD, и на его базе создать свою систему.
Оставьте непосредственно HPS, удалите ненужные модули и добавьте свои.

Да в общем-то всё так и делал. Добавли QSys подсистему из GHRD в свой проект и в неё добалял разрабатываемые компоненты. А позже (когда пытался устранить проблему) максимально приблизил все известные параметры к GHRD (и в QSys подситсеме, и в настройках Квартуса *.qsf файле). Пока ещё не испробованный вариант (из-за нехватки времени) - начать полностью с GHRD проекта, и поэтапно туда добалять компоненты своего проекта. пытаясь обнаружить/решить проблему этим способом.

А вообще мне непонятно, разве можно так "настроить" HPS (или другие подсистемы), что FPGA даже не сможет прошиваться по JTAG? Я понимаю если после прошивки (в User Mode) уже всё не заведётся, но чтобы сам процесс прошивки сломался - это мне непонятно. Даже если какой-то reset/watchdog подвешивает HPS, разве это влияет на процез прошивки FPGA? Единственное что приходит в голову, это влияние HPS (он ведь даже присутствует отдельным элементом в JTAG цепочке), и как-то косвенно всё это взаимосвязано.
sonycman
Цитата(Vengin @ Sep 12 2016, 10:16) *
А вообще мне непонятно, разве можно так "настроить" HPS (или другие подсистемы), что FPGA даже не сможет прошиваться по JTAG?

Да, всё это больше похоже на аппаратную проблему 05.gif
Vengin
Цитата(sonycman @ Sep 12 2016, 18:27) *
Да, всё это больше похоже на аппаратную проблему 05.gif

В смысле "аппаратную"? Проблемы с платой (с настройкой платы)? Но тогда ИМХО все проекты нельзя было бы прошить. А тут какие-то да, а какие-то нет... И уж если это какие-то "стахостические" аппаратные вещи, то (учитывая что работаю я с платой удалённо) обнаружить/решить это на практике маловероятно.
Wic
Цитата
В JTAG цепочке 3 устройства: SOCVHPS -> FPGA -> CPLD

FPGA вторая в цепочки, возможно, что во время прошивки SOCVHPS начинает взаимодействовать с JTAG и тем самым сбивает процесс прошивки. Думаю где то здесь собака зарылась
Vengin
Цитата(Wic @ Sep 13 2016, 08:50) *
FPGA вторая в цепочки, возможно, что во время прошивки SOCVHPS начинает взаимодействовать с JTAG и тем самым сбивает процесс прошивки. Думаю где то здесь собака зарылась

Гм. Мне казалось, что когда делается файл прошивки *.sof в Quartus-е, разве это не чисто прошивка FPGA (т.е. для 2-го устройства в цепочке)? А SOCVHPS прошивается не каким-то отдельным образом (т.е. компилится в DS-5 Development Studio) и там свой отдельный файл?
Как я и говорил с HPS раньше не работал, поэтому могу ошибаться - учусь по ходу дела.
sonycman
Цитата(Vengin @ Sep 13 2016, 13:23) *
Гм. Мне казалось, что когда делается файл прошивки *.sof в Quartus-е, разве это не чисто прошивка FPGA

Нет, если в прошивке есть HPS - он частично конфигурируется аппаратно.

Выше правильно написали - в процессе прошивки встревает HPS и нарушает обмен.
Надо копать, почему.

В QSys в настройках HPS есть что нибудь, относящееся к JTAG?
EugeneS
QUOTE (sonycman @ Sep 13 2016, 16:37) *
Нет, если в прошивке есть HPS - он частично конфигурируется аппаратно.

Выше правильно написали - в процессе прошивки встревает HPS и нарушает обмен.
Надо копать, почему.

В QSys в настройках HPS есть что нибудь, относящееся к JTAG?


Терзает смутное чувство, что проблема связана с FPGA Manager System / Manager блоками, там и JTAG Host имеется
sonycman
Цитата(EugeneS @ Sep 14 2016, 14:31) *
Терзает смутное чувство, что проблема связана с FPGA Manager System / Manager блоками, там и JTAG Host имеется

У меня плата с Cyclone V SoC - завелась с полоборота что с HPS, что без.
Проект свой с нуля.
Настройки HPS в QSys у ArriaV и CycloneV почти один в один - ничего особенного по части JTAG там нет.

Непонятно, в общем.

Попробуйте обновить Квартус, может бага какая-то.
Vengin
Цитата(EugeneS @ Sep 14 2016, 13:31) *
Терзает смутное чувство, что проблема связана с FPGA Manager System / Manager блоками, там и JTAG Host имеется

Вот только вопрос, как это настраивается. В QSys ничего такого не наблюдается.

Цитата(sonycman @ Sep 14 2016, 16:35) *
У меня плата с Cyclone V SoC - завелась с полоборота что с HPS, что без.
Проект свой с нуля.
Настройки HPS в QSys у ArriaV и CycloneV почти один в один - ничего особенного по части JTAG там нет.

Непонятно, в общем.

Попробуйте обновить Квартус, может бага какая-то.

По-моему в QSys вообще никаких явных настроек HPS JTAG интрефейса нет. Мне тоже кажется, что всё должно работать. Попробую обновить до 14.1.1 (и ещё может в 15.1.0 собрать). Обидно будет конечно если это баг софта - столько времени потрачено.
Wic
Vengin, если скинете проект могу собрать в 16.0
R6L-025
У меня схожая проблема была, тоже кастомная плата на ArriaV, процесс фейлился в самом конце. Пытаясь затолкать в FPGA прошивку в виде SVF файла пришли к мнению что в самом конце происходит верификация залитой прошивки, и если что-то во время загрузки пошло не так (аппаратно) то процесс фейлится. Конкретно у меня была проблема в грязном питании.
Vengin
Цитата(R6L-025 @ Sep 19 2016, 22:24) *
У меня схожая проблема была, тоже кастомная плата на ArriaV, процесс фейлился в самом конце. Пытаясь затолкать в FPGA прошивку в виде SVF файла пришли к мнению что в самом конце происходит верификация залитой прошивки, и если что-то во время загрузки пошло не так (аппаратно) то процесс фейлится. Конкретно у меня была проблема в грязном питании.

Ну тут всё-таки не кастомная плата, а весьма недешёвая Arria V SoC Development Board. Хотелось бы верить, что там проблем уровня "грязного питания" быть не должно. Если не удастся победить "программным" путём, будем копать глубже (по мере возможностей удалённого доступа).
На данный момент плата временно недоступна, хардварный дебаг приостановлен, и идёт процесс дальнейшего девелопмента. Как будут какие-то подвижки - расскажу. Ну или если у кого есть ещё мысли/догадки/решения - милости прошу.
Vengin
Upd. Дошли таки руки до этой проблемы. После достаточно продолжительных боданий источник был найден - очепятка! Оказывается, когда я копировал топ файл из Verilog экзампла в свой топ VHDL файл, я не проинвертировал ресеты идущие на HPS (а именно не были проинвертированы hps_cold_reset, hps_warm_reset, hps_debug_reset). Получается FPGA держало HPS в ресете, и на этапе программирования ломалась цепочка JTAG, и это приводило к ошибке. Вот.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.