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

Прошивка ПЛИС Cyclone IV с микроконтроллера

Чтобы однозначно удостовериться в правильной загрузке ПЛИСа обычно в самой прошивке ПЛИС предусматривают отправку сообщения с ПЛИС в микроконтроллер в любом виде по любому выводу. Если после загрузки ПЛИСа микроконтроллер получает это сообщение, значит загрузка ПЛИСа прошла успешно.

Я бы отправлял эти сообщения время от времени во время работы устройства, чтобы удостовериться, что прошивка не сбилась в ходе работы и отрабатывает верно. В противном случае просто перезагружаем ПЛИС прошивкой заново. Всяко надёжнее будет, чем просто грузить ПЛИС с ПЗУшки.

Спасибо, учту! Связь МК с ПЛИС планирую осуществлять по SPI.

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


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

Всем привет.

Занимаюсь вот чем-то подобным. Пишу бутлоадер для устройства.

Программа на компьютере открывает rbf файл и шлет его кусками по 256 байт на устройство, плисина заливает эти куски постранично во флешку EPCS64.

Перед записью производится стирание нужного участка флехи посекторно, участок заведомо больше rbf файла.

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

Пишу по нулевому адресу.

 

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

 

Подскажите что-нибудь.

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


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

Нужно сигналы CONFIG, STATUS, CONF_DONE использовать для инициализации загрузки и контроля. Собственно, больше никаких подтверждений не нужно - это ответ и на предыдущий вопрос в теме.

И, повторю для невнимательных, я ничего не переворачиваю задом наперед. Просто посылаю байты с нужного конца.

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


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

И, повторю для невнимательных, я ничего не переворачиваю задом наперед. Просто посылаю байты с нужного конца.

И чем это отличается одно от другого ? Если я работаю с массивом 256*8 бит, то проще отобразить биты данных еще на моменте формирования буфера, чем потом сушить мозг над адрессацией.

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


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

И чем это отличается одно от другого ? Если я работаю с массивом 256*8 бит, то проще отобразить биты данных еще на моменте формирования буфера, чем потом сушить мозг над адрессацией.

Тем, что процессор выполняет меньше команд.

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


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

Тем, что процессор выполняет меньше команд.

У нас немного разные сиcтемы. У меня нет процессора и все делает плисина. В Верилоге обратить байт этo просто byte <= byte[0+:7]

Rbf ,шьется во штатную флеш из которой она же потом грузится в режиме AS.

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

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


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

Разобрался, все работает.

Оказалось, что в Верилоге byte <= byte[0+:7] не реверсирует биты, несмотря на кажущуюся логичность записи.

 

А вообще - берем rbf файл, пишем его по нужному адресу во флешку не забыв реверсировать биты в каждом байте и вперед, все работает.

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


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

Исходники проекта бутлоадера https://github.com/Dfinitski/Odyssey-2_2017...ssey_BL_2.0.zip

И программа на Питоне для ПК для работы с ним https://github.com/Dfinitski/Odyssey-2_2017...tLoader_2.0.pyw

 

Бутлоадер реализует 4 слота для хранения прошивок, один из них используется для загрузки самого бутлоадера ( по нулевому адресу).

 

Написано для специфичного девайса, коряво, но работает. Модуль Remote не обновлять, его предупреждение игнорировать, иначе не будет работать, не знаю почему.

 

Также может представлять интерес Gigabit Ethernet trough RGMII стек с ARP, ICMP, UDP уровнями.

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


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

Оказалось, что в Верилоге byte <= byte[0+:7] не реверсирует биты, несмотря на кажущуюся логичность записи.

А просто выбрать биты Y = X[0:7]?

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


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

А просто выбрать биты Y = X[0:7]?

Ну так это то же самое. Будет выбран указанный диапазон линий, старший к старшему, младший к младшему, без реверса.

Видимо сама структура Плис не позволяет так вольно обходиться с адрессацией.

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


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

Ну так это то же самое. Будет выбран указанный диапазон линий, старший к старшему, младший к младшему, без реверса.

Видимо сама структура Плис не позволяет так вольно обходиться с адрессацией.

Обычно биты нумеруются так [MSB:LSB]. И, если заметили, я присвоил игреку икс. Т.е., напишите так, конкретно, и биты прицепятся, как нужно.

Y[7:0] = X[0:7].

Это же просто "провода".

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


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

Обычно биты нумеруются так [MSB:LSB]. И, если заметили, я присвоил игреку икс. Т.е., напишите так, конкретно, и биты прицепятся, как нужно.

Y[7:0] = X[0:7].

Это же просто "провода".

Увы, нет. В Верилоге идентично, что 7:0 что 0:7. Вы просто указываете необходимый диапазон адресов в удобной для вас форме, но реверса не будет. Эта оказия часто обсуждается, можете по стековерфлоу пройтись. Говорят, что в SystemVerilog есть спецкоманда компилятора для реверса адрессации, но я не особо специалист в этих вещах, просто хобби.

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


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

В Верилоге идентично, что 7:0 что 0:7.

 

а можно об этом поподробнее, где это написано????

 

я просто хочу сказать, что это не идентично

 

в 1ом случае старший бит имеет индекс 7, во 2ом - 0

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


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

Увы, нет. В Верилоге идентично, что 7:0 что 0:7.

Бред сивой кобылы.

Ну не нравится, напишите так: Y[7:0] = {X[0], X[1], X[2], X[3], X[4], X[5], X[6], X[7]}. Провода, они и есть провода.

 

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


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

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

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

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

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

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

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

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

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

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