Fixed NVRAM initialization.
This commit is contained in:
@@ -33,14 +33,83 @@ extern uint8_t _EMUTOS[];
|
|||||||
extern uint8_t _EMUTOS_SIZE[];
|
extern uint8_t _EMUTOS_SIZE[];
|
||||||
#define EMUTOS_SIZE ((uint32_t)_EMUTOS_SIZE) /* size of EmuTOS, in bytes */
|
#define EMUTOS_SIZE ((uint32_t)_EMUTOS_SIZE) /* size of EmuTOS, in bytes */
|
||||||
|
|
||||||
|
void write_pic_byte(uint8_t value)
|
||||||
|
{
|
||||||
|
/* Wait until the tramsmitter is ready */
|
||||||
|
while (!(MCF_PSC3_PSCSR & MCF_PSC_PSCSR_TXRDY));
|
||||||
|
|
||||||
|
/* Transmit the byte */
|
||||||
|
//MCF_PSC3_PSCTB_8BIT = value; // This define is actually 32-bit
|
||||||
|
*(volatile uint8_t*)(&MCF_PSC3_PSCTB_8BIT) = value; // Really 8-bit
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t read_pic_byte(void)
|
||||||
|
{
|
||||||
|
/* Wait until a byte has been received */
|
||||||
|
while (!(MCF_PSC3_PSCSR & MCF_PSC_PSCSR_RXRDY));
|
||||||
|
|
||||||
|
/* Return the received byte */
|
||||||
|
//return MCF_PSC3_PSCRB_8BIT; // This define is actually 32-bit
|
||||||
|
return *(volatile uint8_t*)(&MCF_PSC3_PSCTB_8BIT); // Really 8-bit
|
||||||
|
}
|
||||||
|
|
||||||
|
void pic_init(void)
|
||||||
|
{
|
||||||
|
char answer[4];
|
||||||
|
|
||||||
|
xprintf("initialize the PIC: ");
|
||||||
|
|
||||||
|
/* Send the PIC initialization string */
|
||||||
|
write_pic_byte('A');
|
||||||
|
write_pic_byte('C');
|
||||||
|
write_pic_byte('P');
|
||||||
|
write_pic_byte('F');
|
||||||
|
|
||||||
|
/* Read the 3-char answer string. Should be "OK!". */
|
||||||
|
answer[0] = read_pic_byte();
|
||||||
|
answer[1] = read_pic_byte();
|
||||||
|
answer[2] = read_pic_byte();
|
||||||
|
answer[3] = '\0';
|
||||||
|
|
||||||
|
xprintf("%s\r\n", answer);
|
||||||
|
}
|
||||||
|
|
||||||
|
void nvram_init(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
xprintf("Restore the NVRAM data: ");
|
||||||
|
|
||||||
|
/* Request for NVRAM backup data */
|
||||||
|
write_pic_byte(0x01);
|
||||||
|
|
||||||
|
/* Check answer type */
|
||||||
|
if (read_pic_byte() != 0x81)
|
||||||
|
{
|
||||||
|
// FIXME: PIC protocol error
|
||||||
|
xprintf("FAILED\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Restore the NVRAM backup to the FPGA */
|
||||||
|
for (i = 0; i < 64; i++)
|
||||||
|
{
|
||||||
|
uint8_t data = read_pic_byte();
|
||||||
|
*(volatile uint8_t*)0xffff8961 = i;
|
||||||
|
*(volatile uint8_t*)0xffff8963 = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
/********************************************************************/
|
/********************************************************************/
|
||||||
void BaS(void)
|
void BaS(void)
|
||||||
{
|
{
|
||||||
//int az_sectors;
|
//int az_sectors;
|
||||||
int i;
|
|
||||||
uint8_t *src;
|
uint8_t *src;
|
||||||
uint8_t *dst = (uint8_t *)TOS;
|
uint8_t *dst = (uint8_t *)TOS;
|
||||||
uint32_t *adr;
|
uint32_t *adr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
az_sectors = sd_card_init();
|
az_sectors = sd_card_init();
|
||||||
|
|
||||||
@@ -49,30 +118,9 @@ void BaS(void)
|
|||||||
sd_card_idle();
|
sd_card_idle();
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
/* Initialize the NVRAM */
|
|
||||||
|
|
||||||
xprintf("initialize the NVRAM: ");
|
pic_init();
|
||||||
MCF_PSC3_PSCTB_8BIT = 'ACPF';
|
nvram_init();
|
||||||
wait_10ms();
|
|
||||||
|
|
||||||
* (volatile uint8_t *) &_MBAR[0x860C] = (uint8_t) (MCF_PSC3_PSCRB_8BIT);
|
|
||||||
* (volatile uint8_t *) &_MBAR[0x860C] = (uint8_t) (MCF_PSC3_PSCRB_8BIT);
|
|
||||||
* (volatile uint8_t *) &_MBAR[0x860C] = (uint8_t) (MCF_PSC3_PSCRB_8BIT);
|
|
||||||
|
|
||||||
xprintf("finished\r\n");
|
|
||||||
|
|
||||||
//MCF_PSC3_PSCTB_8BIT = 0x01; /* request RTC data */
|
|
||||||
|
|
||||||
* (volatile uint8_t *) &_MBAR[0x890C] = 0x01;
|
|
||||||
|
|
||||||
//if (MCF_PSC3_PSCRB_8BIT == 0x81)
|
|
||||||
if (* (volatile uint8_t *) &_MBAR[0X890C] == 0x81)
|
|
||||||
{
|
|
||||||
for (i = 0; i < 64; i++)
|
|
||||||
{
|
|
||||||
* (volatile int8_t *) 0xffff8963 = (uint8_t) MCF_PSC3_PSCRB_8BIT; /* Copy the NVRAM data from the PIC to the FPGA */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
xprintf("copy EmuTOS: ");
|
xprintf("copy EmuTOS: ");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user