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

 
 
 
Reply to this topicStart new topic
> Active Serial Remoute не стартует, при использовании IP Altera Remoute Update
rolin
сообщение Jun 9 2016, 08:06
Сообщение #1


Участник
*

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



Решил вот обзавестись загрузчиком в проекте.
Для переконфигурации FPGA с разных адресов памяти использую Remoute Update.

Но вот проблема - при использовании этого IP, компилятор требует установки в свойствах проекта вместо Active Serial - Standart, Active Serial - Remoute, и как только я выставляю этот параметр, плисина перестает грузиться.

Что я не так делаю ? Cyclone 4 E. EPCS16 подключена к ногам как обычно.
Go to the top of the page
 
+Quote Post
vikS
сообщение Jun 10 2016, 13:32
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 14-09-05
Пользователь №: 8 562



Не должна влиять эта установка. Базовая ж прошивка по 0му адресу лежит в epcs? А какие еще параметры установлены у вас на вкладке Configuration?
Go to the top of the page
 
+Quote Post
rolin
сообщение Jun 10 2016, 14:41
Сообщение #3


Участник
*

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



Цитата(vikS)

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

Установка Active serial - Remote требует применения IP Remote в проекте, они связаны между собой.

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


Посмотрел осциллографом - плисина пытается читать память в цикле.
На выходе флешки вижу данные, равно как и клок и синхро и данные к ней.
А ПЛИС не грузится, хотя попытки делает.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 13 2016, 08:08
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Вероятно, отсутствует (либо неправильно сформирован) сигнал reset_timer - WDT сбрасывает FPGA.
Go to the top of the page
 
+Quote Post
rolin
сообщение Jun 14 2016, 22:33
Сообщение #5


Участник
*

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



Цитата(doom13 @ Jun 13 2016, 11:08) *
Вероятно, отсутствует (либо неправильно сформирован) сигнал reset_timer - WDT сбрасывает FPGA.

Точно! Сразу после запуска нужно конфигурировать ALT_REMOTE и отключать WDT, а у меня таймер на секунду стоял по глобальному сбросу.

Теперь загрузчик работает, но появилась вторая проблема - после попытки загрузить рабочую конфигурацию, плисина тут же перезагружается опять в загрузчик. Рабочий код не содержит ALT_REMOTE, то есть это уже не проблема WDT.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 15 2016, 06:30
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(rolin @ Jun 15 2016, 01:33) *
Теперь загрузчик работает, но появилась вторая проблема - после попытки загрузить рабочую конфигурацию, плисина тут же перезагружается опять в загрузчик. Рабочий код не содержит ALT_REMOTE, то есть это уже не проблема WDT.

Каким образом в данном случае сбрасывается WDT при переходе в Application?
Ядро Remote Update должно присутствовать в обоих проектах (и в Factory и в Application). Factory при переходе в Application должен стартануть WDT, а Application его сбрасывает (периодически).
Go to the top of the page
 
+Quote Post
rolin
сообщение Jun 15 2016, 09:51
Сообщение #7


Участник
*

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



Цитата(doom13 @ Jun 15 2016, 09:30) *
Ядро Remote Update должно присутствовать в обоих проектах (и в Factory и в Application). Factory при переходе в Application должен стартануть WDT, а Application его сбрасывает (периодически).

Тут я с вами пожалуй не соглашусь. Зачем мне в рабочей прошивке Remote_Update, если я не планирую переконфигурироваться из нее ?
Еще в загрузчике я отключаю WDT чтоб не мешал, а после переконфигурации так и вовсе режим Remote не представлен.

Есть рабочий проект, с которого я черпаю вдохновение, правда он под циклон 3, а у меня 4. Так там рабочие прошивки самые обычные, Active serial - Standart.

Вот код инициализации в загрузчике
CODE
// Remote Update State Machine
always @ (posedge clock)
begin
if (reset) ConfigState <= 0;

case (ConfigState)
// Reset State
0: begin
ResetRU <= 'b1;
if (Busy)
ConfigState <= 0;
else
ConfigState <= ConfigState + 1'b1;
end

//Setup Defaults
1: begin
ResetRU <= 'b0;
CRC_error <= 1'b0;
done <= 1'b0;
ReconfigLine <= 1'b0;
WriteParam <= 1'b0;
ReadSource <= 2'b0;
Reason <= 5'b01011;
loop <= 0;
ConfigState <= ConfigState + 1'b1;
end

//Turn on CONFG_DONE early
2: begin
DataIn <= 1'b1;
Param <= 3'b001;
ConfigState <= ConfigState + 1'b1;
end
3: begin
WriteParam <= 1'b1;
ConfigState <= ConfigState + 1'b1;
end
4: begin
WriteParam <= 1'b0;
ConfigState <= ConfigState + 1'b1;
end
5: begin
if (Busy)
ConfigState <= 5;
else
ConfigState <= ConfigState + 1'b1;
end

//Turn on OSC_INT
6: begin
DataIn <= 1'd1;
Param <= 3'b110;
ConfigState <= ConfigState + 1'b1;
end
7: begin
WriteParam <= 1'b1;
ConfigState <= ConfigState + 1'b1;
end
8: begin
WriteParam <= 1'b0;
ConfigState <= ConfigState + 1'b1;
end
9: begin
if (Busy)
ConfigState <= 9;
else
ConfigState <= ConfigState + 1'b1;
end

//Set Application Boot_Address
10: begin
DataIn <= (BootAddress >> 2); // Set the Boot Address of the Application Image, Only the 22 MSB bits are written
Param <= 3'b100;
ConfigState <= ConfigState + 1'b1;
end
11: begin
WriteParam <= 1'b1;
ConfigState <= ConfigState + 1'b1;
end
12: begin
WriteParam <= 1'b0;
ConfigState <= ConfigState + 1'b1;
end
13: begin
if (Busy)
ConfigState <= 13;
else
ConfigState <= ConfigState + 1'b1;
end

//Disable the WATCHDOG_EN
14: begin
DataIn <= 1'd0; // set DataIn to 0 to disable
Param <= 3'b011;
ConfigState <= ConfigState + 1'b1;
end
15: begin
WriteParam <= 1'b1;
ConfigState <= ConfigState + 1'b1;
end
16: begin
WriteParam <= 1'b0;
ConfigState <= ConfigState + 1'b1;
end
17: begin
if (Busy)
ConfigState <= 17;
else
ConfigState <= ConfigState + 1'b1;
end

// READ REASON for last Config
18: begin
Param <= 3'b111;
ConfigState <= ConfigState + 1'b1;
end
19: begin
ReadParam <= 1'b1;
ConfigState <= ConfigState + 1'b1;
end
20: begin
ReadParam <= 1'b0;
ConfigState <= ConfigState + 1'b1;
end
21: begin
if (Busy) begin
ConfigState <= 21;
end else
ConfigState <= ConfigState + 1'b1;
end
22: begin
Reason <= DataOut[4:0]; // Read the Reason for Last ReConfig
ConfigState <= ConfigState + 1'b1;
end
23: begin
ConfigState <= ConfigState + 1'b1;
end

// Check if we need to Reconfig
24: begin
if (Reason[3]) begin // If we are here due to CRC Error, skip reconfig &
CRC_error <= 1'b1; // set CRC error flag
ConfigState <= 24;
end
else
ConfigState <= ConfigState + 1'b1;
end
25: begin
if (control == 1) begin ReconfigLine <= 1'b1;
ConfigState <= ConfigState + 1'b1; end
end
26: begin // Hold ReconfigLine high for > 250nS as per handbook
if (loop == delay)
ConfigState <= ConfigState + 1'b1;
else loop <= loop + 1'b1;
end

// End State
27: begin
done <= 1'b1; // Indicate the State Machine is Finished
ConfigState <= 27; // Loop here
end


default: ConfigState <= 0;
endcase
end

remote Remoteinst(
.clock(clock),
.data_in(DataIn),
.param(Param),
.read_param(ReadParam),
.read_source(ReadSource),
.reconfig(ReconfigLine),
.reset(ResetRU),
.busy(Busy),
.data_out(DataOut),
.write_param(WriteParam)
);


Сообщение отредактировал rolin - Jun 15 2016, 09:53
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 15 2016, 11:24
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(rolin @ Jun 15 2016, 12:51) *
Тут я с вами пожалуй не соглашусь. Зачем мне в рабочей прошивке Remote_Update, если я не планирую переконфигурироваться из нее ?
Еще в загрузчике я отключаю WDT чтоб не мешал, а после переконфигурации так и вовсе режим Remote не представлен.

Да, наверное можно и так.

Цитата(rolin @ Jun 15 2016, 01:33) *
Теперь загрузчик работает, но появилась вторая проблема - после попытки загрузить рабочую конфигурацию, плисина тут же перезагружается опять в загрузчик. Рабочий код не содержит ALT_REMOTE, то есть это уже не проблема WDT.

Ну и что за причина перезагрузки? Судя по всему, должна быть "CRC Error". Уверены, что с адресами ничего не напутали, каким образом происходит загрузка образа Application в конфигурационную флэшку?
Go to the top of the page
 
+Quote Post
rolin
сообщение Jun 15 2016, 12:01
Сообщение #9


Участник
*

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



Цитата(doom13 @ Jun 15 2016, 14:24) *
Ну и что за причина перезагрузки? Судя по всему, должна быть "CRC Error".

Трудно сказать, код, что выше эту ошибку не выдает. Согласно коду выше, если бы Remote выдал бы эту ошибку, то процесс не пошел бы дальше и до переконфигурации не дошел.
Причем ошибку не выдает даже когда я намеренно неправильно готовлю образ флешки.
Непонятно, на каком этапе происходит проверка CRC фактически, но проверка этого флага в коде происходит после установки адреса и перед командой реконфиггурации. Как-то странно это.

Прошивку для флешки делаю так


Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 15 2016, 12:53
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(rolin @ Jun 15 2016, 15:01) *
Трудно сказать, код, что выше эту ошибку не выдает. Согласно коду выше, если бы Remote выдал бы эту ошибку, то процесс не пошел бы дальше и до переконфигурации не дошел.

Проверяйте источник реконфигурации и всё станет ясно.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 03:55
Рейтинг@Mail.ru


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