|
Прошивка ПЛИС Cyclone IV с микроконтроллера |
|
|
|
Apr 23 2018, 04:21
|

Частый гость
 
Группа: Участник
Сообщений: 173
Регистрация: 11-05-08
Пользователь №: 37 414

|
Цитата(Enthusiast @ Apr 21 2018, 17:00)  Чтобы однозначно удостовериться в правильной загрузке ПЛИСа обычно в самой прошивке ПЛИС предусматривают отправку сообщения с ПЛИС в микроконтроллер в любом виде по любому выводу. Если после загрузки ПЛИСа микроконтроллер получает это сообщение, значит загрузка ПЛИСа прошла успешно. Я бы отправлял эти сообщения время от времени во время работы устройства, чтобы удостовериться, что прошивка не сбилась в ходе работы и отрабатывает верно. В противном случае просто перезагружаем ПЛИС прошивкой заново. Всяко надёжнее будет, чем просто грузить ПЛИС с ПЗУшки. Спасибо, учту! Связь МК с ПЛИС планирую осуществлять по SPI.
|
|
|
|
|
Apr 25 2018, 03:01
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 31-01-09
Пользователь №: 44 224

|
Всем привет. Занимаюсь вот чем-то подобным. Пишу бутлоадер для устройства. Программа на компьютере открывает rbf файл и шлет его кусками по 256 байт на устройство, плисина заливает эти куски постранично во флешку EPCS64. Перед записью производится стирание нужного участка флехи посекторно, участок заведомо больше rbf файла. После записи каждой страницы производится чтение ее из флехии и сравнение с буфером, ошибок нет, пишется правильно. Пишу по нулевому адресу.
Проблема в том, что после перезагрузки плисина не грузится. Уже не знаю что делать, ошибок не вижу. Байты перед записью во флеху переворачиваю задом-наперед.
Подскажите что-нибудь.
|
|
|
|
|
Apr 25 2018, 16:41
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 31-01-09
Пользователь №: 44 224

|
Цитата(ViKo @ Apr 25 2018, 07:45)  И, повторю для невнимательных, я ничего не переворачиваю задом наперед. Просто посылаю байты с нужного конца. И чем это отличается одно от другого ? Если я работаю с массивом 256*8 бит, то проще отобразить биты данных еще на моменте формирования буфера, чем потом сушить мозг над адрессацией.
|
|
|
|
|
Apr 25 2018, 18:04
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 31-01-09
Пользователь №: 44 224

|
Цитата(ViKo @ Apr 25 2018, 21:22)  Тем, что процессор выполняет меньше команд. У нас немного разные сиcтемы. У меня нет процессора и все делает плисина. В Верилоге обратить байт этo просто byte <= byte[0+:7] Rbf ,шьется во штатную флеш из которой она же потом грузится в режиме AS.
Сообщение отредактировал rolin - Apr 25 2018, 18:04
|
|
|
|
|
Apr 28 2018, 20:12
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 31-01-09
Пользователь №: 44 224

|
Разобрался, все работает. Оказалось, что в Верилоге byte <= byte[0+:7] не реверсирует биты, несмотря на кажущуюся логичность записи.
А вообще - берем rbf файл, пишем его по нужному адресу во флешку не забыв реверсировать биты в каждом байте и вперед, все работает.
|
|
|
|
|
May 2 2018, 05:27
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 31-01-09
Пользователь №: 44 224

|
Исходники проекта бутлоадера 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 уровнями.
|
|
|
|
|
May 2 2018, 12:03
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 31-01-09
Пользователь №: 44 224

|
Цитата(ViKo @ May 2 2018, 10:07)  А просто выбрать биты Y = X[0:7]? Ну так это то же самое. Будет выбран указанный диапазон линий, старший к старшему, младший к младшему, без реверса. Видимо сама структура Плис не позволяет так вольно обходиться с адрессацией.
|
|
|
|
|
May 2 2018, 12:33
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(rolin @ May 2 2018, 15:03)  Ну так это то же самое. Будет выбран указанный диапазон линий, старший к старшему, младший к младшему, без реверса. Видимо сама структура Плис не позволяет так вольно обходиться с адрессацией. Обычно биты нумеруются так [MSB:LSB]. И, если заметили, я присвоил игреку икс. Т.е., напишите так, конкретно, и биты прицепятся, как нужно. Y[7:0] = X[0:7]. Это же просто "провода".
|
|
|
|
|
May 2 2018, 15:12
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 31-01-09
Пользователь №: 44 224

|
Цитата(ViKo @ May 2 2018, 16:33)  Обычно биты нумеруются так [MSB:LSB]. И, если заметили, я присвоил игреку икс. Т.е., напишите так, конкретно, и биты прицепятся, как нужно. Y[7:0] = X[0:7]. Это же просто "провода". Увы, нет. В Верилоге идентично, что 7:0 что 0:7. Вы просто указываете необходимый диапазон адресов в удобной для вас форме, но реверса не будет. Эта оказия часто обсуждается, можете по стековерфлоу пройтись. Говорят, что в SystemVerilog есть спецкоманда компилятора для реверса адрессации, но я не особо специалист в этих вещах, просто хобби.
|
|
|
|
|
May 3 2018, 04:49
|
Местный
  
Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771

|
Цитата(rolin @ May 2 2018, 18:12)  В Верилоге идентично, что 7:0 что 0:7. а можно об этом поподробнее, где это написано???? я просто хочу сказать, что это не идентично в 1ом случае старший бит имеет индекс 7, во 2ом - 0
--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
|
|
|
|
|
May 3 2018, 16:51
|
Знающий
   
Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737

|
Цитата(rolin @ May 2 2018, 18:12)  Увы, нет. В Верилоге идентично, что 7:0 что 0:7. Бред сивой кобылы. Ну не нравится, напишите так: Y[7:0] = {X[0], X[1], X[2], X[3], X[4], X[5], X[6], X[7]}. Провода, они и есть провода.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|