Цитата(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