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

 
 
> 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
 
Start new topic
Ответов
doom13
сообщение Jun 13 2016, 08:08
Сообщение #2


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

Группа: Свой
Сообщений: 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
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #4


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

Группа: Свой
Сообщений: 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
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #6


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

Группа: Свой
Сообщений: 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



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

 


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


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