Перейти к содержанию
    

CVP access violation при второй подряд конфигурации

Форумчане, добрый день.

Освоил CVP прошивание у StratixV через pcie. Все проходит по началу хорошо.

1) Зашиваю вторую ревизию, которая изменяет один модуль. CVP в режиме Update изначально.
2) Все проходит удачно. Код начинает работать по новому точно.
3) Решаю откатить на первую ревизию, получаю Access Violation. При этом fpga мне кажется тоже вешается, так перестает подавать признаки жизни.

4) Могу так же зашить первую ревизию (основную), но при прошивке второй, таже самая ошибка.

Завожу компьютер в режим "Сон", чтобы рубануть питание. Пробуждаю, начинает опять шиться.

Получается нельзя два раза подряд шиться без резета? Может кто сталкивался.

 

Изменено пользователем new123
ошибки в тексте

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. меняете только core, периферия остается та же ?

2. чтобы сделать другой вариант прошивки (новую ревизию) - нужны какие-то манипуляции с файлами перед запуском компиляции 

Quote

If the core image contains the reconfigurable core region, you must implement the CvP revision design flow.

Как вариант - сравнить файлы периферии (обеих ревизий)

3. вот пишут в CvP user guide (правда, в старой версии):

Quote

You cannot combine the features of CvP Update Mode and CvP Initialization Mode in a single design.
For example, you cannot create a CvP Update image for your Quartus II project and then specify a
CvP Initialization periphery image in your configuration scheme.

Правда, не знаю как это сочетается с фактом, что в Квартусе есть опция при генерировании прошивки : CvP settings -  "core initialisation and update"   - т.е. вроде как можно совместить оба режима... 

4. проверьте драйвер - все ли он делает так с регистрами fpga, как расписано в CvP Driver Flow

 

 

По п. 3  - похоже, можно делать изменения и после CvP initialisation:

Quote

You can perform CvP update on a device that you originally configure using CvP initialization or any other configuration scheme

По п 3 я проглядел, что речь идет про файлы ядра и периферии. Ведь изначально при CvP говорится, что периферия всегда должна оставаться одинаковой, что-то не дочитал фразу до конца...

Изменено пользователем Yuri124

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25 minutes ago, Yuri124 said:

1. меняете только core, периферия остается та же ?

я периферию не шью. Она мне не очень подходит, потому что я при старте еще конфигурирую по протоколу i2c  плл'ку на плате, чтобы запить pcie и 10g.

поэтому, что я делаю
1) Генерю по базовой ревизии обычный pof с режимом CVP update. Его прошиваю через AS.
2) Генерю core второй ревизии и на всякий случай базовой
3) Стартую железо, потом без проблем шью core по CVP. Шью любой core (и второй ревизии и базовой). 

Первый раз все прошивается норм. Изменения вступают на лету в силу 100%. А вот последующая прошивка становится проблематичной.

У ревизий изменена 1 строчка кода. Просто значения регистра меняю.

 

Мануал этот родной я тоже проштудировал. У меня сразу с первого раза не пошло. С компрессиями проблемы были.

Скоро на линуксе попробую. Может это просто программная какая ошибка у quartus_cvp

Изменено пользователем new123
дополнил

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У cyclone V это работает. Пробовали initialisation + update. Т.е. в fpga грузится по AS периферия , потом по pcie догружается ядро, и пробовали перегружать ядро (правда, одно и то же, но - работает сразу). По мануалу это допустимо только в режиме Gen1. 

Если делать в Gen2 - то фокус проходил три раза, а потом fpga висла (ну, по мануалу вообще не должно работать update в Gen2 в этой микре). Так что получается - эта фича работоспособна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 hours ago, Yuri124 said:

У cyclone V это работает. Пробовали initialisation + update. Т.е. в fpga грузится по AS периферия 

Не совсем понял, что именно работает? Вы тоже конфигурируете pll перед запуском pcie?

Решил переводить уже ближе к боевым действиям на линукс. Тут еще до сих пор драйвер не смог воткнуть. Укомплектованный драйвер в квартусе не поддерживает такие новые ядра линуксов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

pll - имеются только встроенные в fpga, а это - периферия, все в периферийном файле, "стартующем" из epcq. Снаружи только генератор для тактирования реконфигурационных схем.

100 МГц для pcie берется с разъема pcie компьютера.

8 minutes ago, new123 said:

Не совсем понял, что именно работает?

initialisation mode - работает в Gen2.

initialisation + update mode - нормально работает только в Gen1. Как Альтера и обещала для этого fpga.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 minutes ago, Yuri124 said:

pll - имеются только встроенные в fpga, а это - периферия, все в периферийном файле, "стартующем" из epcq. Снаружи только генератор для тактирования реконфигурационных схем.

100 МГц для pcie берется с разъема pcie компьютера.

 

понятно теперь. Я сотку не беру с разъема, хотя может и стоит. Я все частоты себе делаю на внешней pll на плате. И чтобы она заработала, я ее должен сконфигурировать на старте c помощью fpga по протоколу i2c. Это где то 35млсек при включении

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 hours ago, Yuri124 said:

initialisation + update mode - нормально работает только в Gen1. Как Альтера и обещала для этого fpga.

Юрий, подскажите. Если использовать intialization mode, можно при этом top модуль изменять и обновлять получается? в Update то квартус не дает ревизии на топ модуле делать
И если питание сбросить, плис потом опять в initilization входит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 hours ago, new123 said:

Если использовать intialization mode, можно при этом top модуль изменять и обновлять получается?

В этом режиме общая прошивка (.sof файл) разделяется Квартусом на 2 части: периферию и ядро. Периферия - это кроме выводов микросхемы еще и другие блоки, в частности - PLL, pcie. Они у меня не в top модуле.

Файл периферии зашивается во флеш и грузится при старте fpga. Затем - обязательно дозагрузка файла ядра по pcie. Вот ядра менять можно - нужно использовать revision design flow. При этом периферия изменяться не должна. 

Таким образом, если есть необходимость изменить периферию, то нужно использовать другие возможности - изменить файл во флеше. CvP не делает этого.

Можно прошить флеш новым файлом стандартно через jtag или напрямую программатором. Или в проект добавить устройство для записи во флеш, загружать файл прошивки через желаемый интерфейс и прошивать уже изнутри fpga. 

Как я понял, CvP больше для того, чтобы обеспечить старт pcie интерфейса в течение 0,1 сек после подачи питания (но это позволяет сделать также autonomus mode - когда во флеше вся прошивка, но pcie грузится в первую очередь и стартует, не дожидаясь полной загрузки fpga). Также CvP позволяет применить флеш меньшего размера. И - легко дистанционно обновлять прошивку (но только ядро!)

Если выбран режим initialisation and update (и это поддерживается микросхемой с выбранным режимом pcie) - то после загрузки периферии из флеша при старте обязательно нужно дозагрузить ядро по pcie. А потом можно ядро менять без передергивания питания. Если только update - то первоначально грузится из флеша полный проект, а потом можно менять ядро.

Есть еще partial reconfiguration, с этим не  разбирался.
 

12 hours ago, new123 said:

если питание сбросить, плис потом опять в initilization входит?

Да, если выбран режим CvP [initialisation] или [initialisation and update] ( смотрите сами, какие для Вашей микросхемы варианты есть в Вашей версии Квартуса), то при передергивании питания вначале будет загрузка только периферии из флеша, потом - обязательно дозагрузка ядра по pcie.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

50 minutes ago, Yuri124 said:

то при передергивании питания вначале будет загрузка только периферии из флеша, потом - обязательно дозагрузка ядра по pcie.

а я вот пока сделал не так. Я выставил update и зашил цельный pof через AS. Потом через partial reconfiguration и cvp зашил core второй ревизии.

 

ps. Спасибо за такое подробное объяснение

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CVP под LINUX.
в новую тему заводить не буду, отпишусь, вдруг кто поиском найдет

1) Тот драйвер, что идет в комплекте quartus подходит только для линукс ядра версии до 2.6. А это год так 2011
2) Altera предлагает пользовать новым драйвером jungle 30 дней, потом купить.
3) В мануалах десятых серий альтера стала аккуратно приписывать ссылочку на opensource драйвер. В новых мануалах пятых серий чипов этого нет
4) Ссылка ведет на драйвер для 10 серий плис. Советую заглянуть сюда https://www.intel.com/content/www/us/en/programmable/support/support-resources/support-centers/devices/cfg-index/cfg-via-protocol.html и выбрать или под 10 или под 5.
5) Внутри нормальный readme. Запускается прошивка для cvp без проблем.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...