|
Remote Update для Cyclone 3, пара вопросов по Remote Update |
|
|
|
 |
Ответов
(1 - 4)
|
Nov 11 2012, 13:41
|
Частый гость
 
Группа: Свой
Сообщений: 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?
|
|
|
|
|
Nov 11 2012, 18:02
|
Знающий
   
Группа: Свой
Сообщений: 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 для приложения.
|
|
|
|
|
Dec 28 2012, 11:18
|
Участник

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

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