|
Remote update CycloneIII |
|
|
|
 |
Ответов
|
Jan 5 2011, 07:10
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(Fynjisx @ Jan 5 2011, 15:46)  Привет Всем!Вопросы у меня по удаленной отладке. Что имеют в виду в документах, когда говорят об factory configuration? Всегда ли этот factory configuration file располагается по адресу 000?(во flash?) Я так понимаю что обновленная конфигурация называется у Alter'ы - aplication configuration. Короче хочу удаленно ообновить flash EPCS и не могу понять откуда(через какие пины поступает и в каком виде должна поступать новая конфигурация) приходит и каким образом записывается... адреса можно посмотреть в справочнике на циклон. ноги те же, что и в Active Serial. доступ через регистры, я пользовался такими макросами: CODE #ifndef ALTERA_AVALON_REMOTE_UPDATE_CYCLONEIII_REGS_H_ #define ALTERA_AVALON_REMOTE_UPDATE_CYCLONEIII_REGS_H_
#include "alt_types.h" #include "io.h"
#define IOADDR_ALTERA_REMUPD_CSTATE_CSM(base) __IO_CALC_ADDRESS_NATIVE(base, 0) #define IORD_ALTERA_REMUPD_CSTATE_CSM(base) IORD(base, 0) #define IOWR_ALTERA_REMUPD_CSTATE_CSM(base,data) IOWR(base, 0, data)
#define IOADDR_ALTERA_REMUPD_CSTATE_FCC(base) __IO_CALC_ADDRESS_NATIVE(base, 1) #define IORD_ALTERA_REMUPD_CSTATE_FCC(base) IORD(base, 1) #define IOWR_ALTERA_REMUPD_CSTATE_FCC(base,data) IOWR(base, 1, data)
#define IOADDR_ALTERA_REMUPD_CSTATE_WDT(base) __IO_CALC_ADDRESS_NATIVE(base, 2) #define IORD_ALTERA_REMUPD_CSTATE_WDT(base) IORD(base, 2) #define IOWR_ALTERA_REMUPD_CSTATE_WDT(base,data) IOWR(base, 2, data)
#define IOADDR_ALTERA_REMUPD_CSTATE_WDE(base) __IO_CALC_ADDRESS_NATIVE(base, 3) #define IORD_ALTERA_REMUPD_CSTATE_WDE(base) IORD(base, 3) #define IOWR_ALTERA_REMUPD_CSTATE_WDE(base,data) IOWR(base, 3, data)
#define IOADDR_ALTERA_REMUPD_CSTATE_BA(base) __IO_CALC_ADDRESS_NATIVE(base, 4) #define IORD_ALTERA_REMUPD_CSTATE_BA(base) IORD(base, 4) #define IOWR_ALTERA_REMUPD_CSTATE_BA(base,data) IOWR(base, 4, data)
#define IOADDR_ALTERA_REMUPD_CSTATE_FIOSC(base) __IO_CALC_ADDRESS_NATIVE(base, 6) #define IORD_ALTERA_REMUPD_CSTATE_FIOSC(base) IORD(base, 6) #define IOWR_ALTERA_REMUPD_CSTATE_FIOSC(base,data) IOWR(base, 6, data)
#define IOADDR_ALTERA_REMUPD_CSTATE_RTC(base) __IO_CALC_ADDRESS_NATIVE(base, 7) #define IORD_ALTERA_REMUPD_CSTATE_RTC(base) IORD(base, 7) #define IOWR_ALTERA_REMUPD_CSTATE_RTC(base,data) IOWR(base, 7, data)
#define IOADDR_ALTERA_REMUPD_P1STATE_CSM(base) __IO_CALC_ADDRESS_NATIVE(base, 8) #define IORD_ALTERA_REMUPD_P1STATE_CSM(base) IORD(base, 8)
#define IOADDR_ALTERA_REMUPD_P1STATE_FCC(base) __IO_CALC_ADDRESS_NATIVE(base, 9) #define IORD_ALTERA_REMUPD_P1STATE_FCC(base) IORD(base, 9)
#define IOADDR_ALTERA_REMUPD_P1STATE_WDT(base) __IO_CALC_ADDRESS_NATIVE(base, 0xA) #define IORD_ALTERA_REMUPD_P1STATE_WDT(base) IORD(base, 0xA)
#define IOADDR_ALTERA_REMUPD_P1STATE_WDE(base) __IO_CALC_ADDRESS_NATIVE(base, 0xB) #define IORD_ALTERA_REMUPD_P1STATE_WDE(base) IORD(base, 0xB)
#define IOADDR_ALTERA_REMUPD_P1STATE_BA(base) __IO_CALC_ADDRESS_NATIVE(base, 0xC) #define IORD_ALTERA_REMUPD_P1STATE_BA(base) IORD(base, 0xC)
#define IOADDR_ALTERA_REMUPD_P1STATE_FIOSC(base) __IO_CALC_ADDRESS_NATIVE(base, 0xE) #define IORD_ALTERA_REMUPD_P1STATE_FIOSC(base) IORD(base, 0xE)
#define IOADDR_ALTERA_REMUPD_P1STATE_RTC(base) __IO_CALC_ADDRESS_NATIVE(base, 0xF) #define IORD_ALTERA_REMUPD_P1STATE_RTC(base) IORD(base, 0xF)
#define IOADDR_ALTERA_REMUPD_P2STATE_CSM(base) __IO_CALC_ADDRESS_NATIVE(base, 0x10) #define IORD_ALTERA_REMUPD_P2STATE_CSM(base) IORD(base, 0x10)
#define IOADDR_ALTERA_REMUPD_P2STATE_FCC(base) __IO_CALC_ADDRESS_NATIVE(base, 0x11) #define IORD_ALTERA_REMUPD_P2STATE_FCC(base) IORD(base, 0x11)
#define IOADDR_ALTERA_REMUPD_P2STATE_WDT(base) __IO_CALC_ADDRESS_NATIVE(base, 0x12) #define IORD_ALTERA_REMUPD_P2STATE_WDT(base) IORD(base, 0x12)
#define IOADDR_ALTERA_REMUPD_P2STATE_WDE(base) __IO_CALC_ADDRESS_NATIVE(base, 0x13) #define IORD_ALTERA_REMUPD_P2STATE_WDE(base) IORD(base, 0x13)
#define IOADDR_ALTERA_REMUPD_P2STATE_BA(base) __IO_CALC_ADDRESS_NATIVE(base, 0x14) #define IORD_ALTERA_REMUPD_P2STATE_BA(base) IORD(base, 0x14)
#define IOADDR_ALTERA_REMUPD_P2STATE_FIOSC(base) __IO_CALC_ADDRESS_NATIVE(base, 0x16) #define IORD_ALTERA_REMUPD_P2STATE_FIOSC(base) IORD(base, 0x16)
#define IOADDR_ALTERA_REMUPD_P2STATE_RTC(base) __IO_CALC_ADDRESS_NATIVE(base, 0x17) #define IORD_ALTERA_REMUPD_P2STATE_RTC(base) IORD(base, 0x17)
#define IOADDR_ALTERA_REMUPD_CSR(base) __IO_CALC_ADDRESS_NATIVE(base, 0x20) #define IORD_ALTERA_REMUPD_CSR(base) IORD(base, 0x20) #define IOWR_ALTERA_REMUPD_CSR(base,data) IOWR(base, 0x20, data)
#define ALTERA_REMUPD_CSM_MSK (0x3) #define ALTERA_REMUPD_CD_MSK (0x1) #define ALTERA_REMUPD_WDT_MSK (0x1FFFFFFF) #define ALTERA_REMUPD_WDE_MSK (0x1) #define ALTERA_REMUPD_BARD_MSK (0xFFFFFF) #define ALTERA_REMUPD_BAWR_MSK (0x3FFFFF) #define ALTERA_REMUPD_FIOSC_MSK (0x1) #define ALTERA_REMUPD_RTC_MSK (0x1F)
#endif /*ALTERA_AVALON_REMOTE_UPDATE_CYCLONEIII_REGS_H_*/
собственно переключение из factory в application выглядит примерно так: Код #define EPCS_APP_OFFS 0x200000 ... IOWR_ALTERA_REMUPD_CSTATE_BA(REMOTE_UPDATE_CYCLONEIII_0_BASE,EPCS_APP_OFFS>>2); IOWR_ALTERA_REMUPD_CSR(REMOTE_UPDATE_CYCLONEIII_0_BASE,1); посмотрите AN521 и user guide на корку remote upgrade
|
|
|
|
|
Jan 5 2011, 07:22
|
студент
   
Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712

|
Цитата(vadimuzzz @ Jan 5 2011, 13:10)  ноги те же, что и в Active Serial Вы Nios используете, а без него как? 1.На сайте http://www.altera.com/products/devices/cyc...figuration.html видно, что от Development Location приходят на ПЛИС данные новой кофигурации (это какой-то файл созданный Квартусом?). 2.Эти данные приходят непонятно на какие ноги ПЛИС. Если приходят на ноги epcs, тогда зачем они показали стрелку на ПЛИС? Все таки через неё я думаю всё это хозяйство проходит.
--------------------
С Уважением...
|
|
|
|
|
Jan 5 2011, 07:28
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(Fynjisx @ Jan 5 2011, 16:22)  Вы Nios используете, а без него как? ну через порты в корку каким-нибудь автоматом писать, там 2 регистра всего (в моем примере выше). Цитата 1.На сайте http://www.altera.com/products/devices/cyc...figuration.html видно, что от Development Location приходят на ПЛИС данные новой кофигурации (это какой-то файл созданный Квартусом?). 2.Эти данные приходят непонятно на какие ноги ПЛИС. Если приходят на ноги epcs, тогда зачем они показали стрелку на ПЛИС? Все таки через неё я думаю всё это хозяйство проходит. стрелки 1 и 3 - это SPI интерфейс флешки в вашем случае. т.е. в простейшем варианте 2 sof`а сконвертировать в бинарный формат и зашить программатором, а автомат в factory-прошивке попытается подгрузить application. некоторый трах будет с записью через SPI во флешку, но вы же без ниоса хотите, значит как настоящий джедай - через SPI- мастер
|
|
|
|
|
Jan 5 2011, 07:49
|
студент
   
Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712

|
Цитата(vadimuzzz @ Jan 5 2011, 13:28)  в простейшем варианте 2 sof`а сконвертировать в бинарный формат и зашить программатором, зачем 2 sof? Цитата(vadimuzzz @ Jan 5 2011, 13:28)  а автомат в factory-прошивке попытается подгрузить application. factory-прошивку я же готовлю? Если я, то как она записывается? Совместно с двумя или тремя sof'ами? Вы меня извините у меня вопросы действительно могут показаться глупыми, но я всё это спрашиваю, чтобы как то понять как мне сделать такую схему: к примеру готовлю новые прошиви на компе далее отправляю их по Ethernet, затем на принимающей стороне Ethernet переводится в UART ну а далее мне нужно как-то записать данные с UART в EPCS.
--------------------
С Уважением...
|
|
|
|
|
Jan 5 2011, 09:42
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(Fynjisx @ Jan 5 2011, 16:49)  зачем 2 sof? 1 - factory, 2 и т.д - application Цитата factory-прошивку я же готовлю? Если я, то как она записывается? Совместно с двумя или тремя sof'ами? Вы меня извините у меня вопросы действительно могут показаться глупыми, но я всё это спрашиваю, чтобы как то понять как мне сделать такую схему: к примеру готовлю новые прошиви на компе далее отправляю их по Ethernet, затем на принимающей стороне Ethernet переводится в UART ну а далее мне нужно как-то записать данные с UART в EPCS. factory зашивается программатором и впоследствии не должна меняться. ее функции - зашивать application (если его нет) и передавать управление application. это минимум. application тоже должен уметь зашивать application (в т.ч. и переписывать себя), но не factory. я не знаю, зачем вам промежуточный UART, мне eth для всех нужд хватает. а функций - принять пакет (часть прошивки), зашить эту часть во флеш, посчитать контрольную сумму (CRC или еще какую) для всей прошивки, при необходимости (ошибка при передаче, например) - повторить процедуру. далее контроль за целостностью прошивки берет на себя сам циклон.
|
|
|
|
|
Jan 5 2011, 11:54
|
студент
   
Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712

|
Цитата(vadimuzzz @ Jan 5 2011, 15:42)  factory зашивается программатором factory я же пишу на VHDL, Verilog? Цитата(vadimuzzz @ Jan 5 2011, 15:42)  я не знаю, зачем вам промежуточный UART, мне eth для всех нужд хватает. а функций - принять пакет (часть прошивки), зашить эту часть во флеш, посчитать контрольную сумму (CRC или еще какую). я собираюсь в проект воткнуть cp2200. Это контроллер Ethernet. ОТсюда и UART на выходе
--------------------
С Уважением...
|
|
|
|
Сообщений в этой теме
Fynjisx Remote update CycloneIII Jan 5 2011, 06:46      vadimuzzz Цитата(Fynjisx @ Jan 5 2011, 20:54) facto... Jan 5 2011, 20:50       Fynjisx Цитата(vadimuzzz @ Jan 6 2011, 02:50) тол... Jan 7 2011, 05:38        vadimuzzz Цитата(Fynjisx @ Jan 7 2011, 14:38) А как... Jan 7 2011, 05:59         Fynjisx Цитата(vadimuzzz @ Jan 7 2011, 12:59) там... Jan 14 2011, 16:15         Fynjisx Цитата(vadimuzzz @ Jan 7 2011, 12:59) там... Jan 15 2011, 07:36          vadimuzzz Цитата(Fynjisx @ Jan 15 2011, 16:36) это ... Jan 15 2011, 07:55 Alex11 Сдается мне, что эти красивые разговоры про две пр... Jan 14 2011, 18:03 Fynjisx Цитата(Alex11 @ Jan 15 2011, 01:03) Сдает... Jan 14 2011, 20:43 vadimuzzz Цитата(Alex11 @ Jan 15 2011, 03:03) Сдает... Jan 14 2011, 23:52 Alex11 Просто так Вам не дадут отмапить ноги на эти пины.... Jan 15 2011, 13:34 vadimuzzz Цитата(Alex11 @ Jan 15 2011, 22:34) Прост... Jan 15 2011, 14:57 Alex11 Да, однако, в CycloneIII разрешает, это в CycloneI... Jan 16 2011, 01:48 vadimuzzz Цитата(Alex11 @ Jan 16 2011, 10:48) Да, о... Jan 16 2011, 01:50 slawikg Цитатаэто понятно что обычный, но через какие лини... Jan 16 2011, 16:37
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|