реклама на сайте
подробности

 
 
> Remote Update для Cyclone 3, пара вопросов по Remote Update
djhall
сообщение Nov 8 2012, 13:11
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 29-04-06
Пользователь №: 16 608



Здравствуйте,
хочу добавить функцию remote upgrate в свой проект, но возникло некоторое не допонимание. Если кто знает объясните, пожалуйста.
Задача - сделать возможность обновления прошивки в EPCS, т.е. простенький процессор в качестве Factory Configuration и уже нормальный
в качестве Application Configuration. В общем всё по описанию, как обычно.
А не понятно мне как найти сдвиг второй прошивки относительно первой? Ведь этот адрес нужно записывать в Remote Update Controller для переконфигурации.
Вторую прошивку (Application Configuration) я собираюсь передовать по USB сохранять в оперативной памяти и далее записывать во флэш память стандартными средствами. Но какой файл мне передовать .flash или какой-то другой?

Заранее благодарю.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
Копейкин
сообщение Nov 9 2012, 13:44
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Чтобы найти адрес смещения для второй страницы прошивки,
я использовал конвертер файлов программирования.
1) Q9.1sp2 File->Convert programming files. Открывается окно конвертера.
2) Выбираю тип выходного файла *.jic, ставлю галку Memory map file, выбираю конф. ПЗУ.
3) Задаю Flash loader, тип кристалла.
4) Подключаю SOF файл, т.е. прошивку загрузчика.
5) Генерирую файл прошивки.
Таким образом я получаю адрес конца прошивки в файле *.map и файл *.jic,
код загрузчика, который можно заливать простым программатором от Альтеры.
Дальнейшее будет зависеть от Вашего загрузчика,
какой он будет поддерживать формат.
Может стоит посмотреть формат *.hex или *.rbf?
Go to the top of the page
 
+Quote Post
djhall
сообщение Nov 11 2012, 13:41
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 29-04-06
Пользователь №: 16 608



Решил я сначала сделать по простому. Записать прогамматором две прошивки с Nios по разным адресам: factory в 0x00000000 и application в 0x000E0000. Причём это не две прошивки, а одна и таже только с программно изменённой частотой мигания светодиода.
Применил следующий скрипт для получения сдвига application прошивки:
sof2flash --epcs --input="factory_image.sof" --output="factory_image.flash"
elf2flash --epcs --after="factory_image.flash" --input="rsu_1.elf" --output="rsu_1.flash"
cat factory_image.flash rsu_1.flash > hw_sw_image.flash
nios2-elf-objcopy -I srec -O srec --change-addresses=0x000E0000 hw_sw_image.flash hw_sw_image_a.flash --srec-len=0x20 --srec-forceS3
nios2-flash-programmer --epcs --base=0x21800 "hw_sw_image_a.flash"

А factory прошивку с уменьшенной частотой мигания светодиода запрогамировал чарез Flash Programmer.

Включаю - работает прошивка factory. Через отладчик сменяю прошивку на application следующими командами:
IOWR( REMOTE_UPDATE_CYCLONEIII_0_BASE, 0x3, 0 );
IOWR( REMOTE_UPDATE_CYCLONEIII_0_BASE, 0x4, address >> 2);
IOWR( REMOTE_UPDATE_CYCLONEIII_0_BASE, 0x20, 0x1 );

Видно что происходит перепрошивка и вновь работает прошивка factory (по частоте мигания светодиода).

Решил вместо прошивки application с Nios, сделать обычный аппаратный счётчик чтобы моргал светодиодик.
Сделал, запрограммировал скриптом как в предыдущем случае (без программы ясное дело) по адресу 0x000E0000, переключил прошивку - работает. Светодиодик моргает так как должен.

Т.е. касательно предыдущего случая выходит что прошивка ПЛИС грузится, а программа для Nios нет.
Знает кто-нибудь как сделать переключение между двумя процессорами? Есть тут связь с boot_copier?
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Nov 11 2012, 18:02
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(djhall @ Nov 11 2012, 17:41) *
nios2-elf-objcopy -I srec -O srec --change-addresses=0x000E0000 hw_sw_image.flash hw_sw_image_a.flash --srec-len=0x20 --srec-forceS3

Попробуйте использовать --set-start вместо --change-addresses. Или преобразуйте "hw_sw_image.flash" в "hw_sw_image.bin". А затем используйте "bin2flash" и уже здесь задайте смещение в EPCS для приложения.
Go to the top of the page
 
+Quote Post
VG2903
сообщение Dec 28 2012, 11:18
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 31-01-05
Из: Великий Новгород
Пользователь №: 2 314



Добрый день!
Хочу сделать аналогично. Имеется 2 конфигурации ПЛИС, и соответственно 2 программы для NIOS (для каждой из них). Но мне не понятен следующий момент.
Дело в том, что программный код для NIOS храню в EPCS, при этом сам код выполняется из On-Chip-памяти ПЛИС типа MRAM (не инициализируемая память, поэтому и приходится хранить программу в EPCS, а затем загрузчик копирует её во внутреннюю память и выполняет). Для Factory-прошивки всё понятно, загрузчик знает по какому адресу находится программа для NIOS. А как быть с Application-конфигурацией, где адрес расположения программы NIOS в EPCS будет другим? Каким образом можно этот адрес указать при компиляции или сборке проекта для модификации стандартного загрузчика NIOS?
Потому как думается мне, если оставить всё как есть, то для Application-конфигурации будет загружена программа NIOS, которая была для Factory-конфигурации. Как этот момент обойти?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 22:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016