get sram restore working and make the switch to quickdev loader more

mature
This commit is contained in:
David Voswinkel 2009-08-08 16:04:45 +02:00
parent df167b285e
commit dbff180a91
4 changed files with 24 additions and 24 deletions

View File

@ -145,8 +145,8 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
req_percent = (uint32_t)( 100 * req_addr ) / req_addr_end;
if (req_percent!=req_percent_last){
debug(DEBUG_USB,
"USB_BULK_UPLOAD_ADDR: precent=%i\n", req_percent);
//debug(DEBUG_USB,
// "USB_BULK_UPLOAD_ADDR: precent=%i\n", req_percent);
shared_memory_write(SHARED_MEM_TX_CMD_UPLOAD_PROGESS, req_percent);
sram_bulk_write_start(req_addr);
}
@ -283,20 +283,15 @@ void usb_connect()
void boot_startup_rom()
{
info("Activate AVR bus\n");
avr_bus_active();
info("IRQ off\n");
snes_irq_lo();
snes_irq_off();
snes_lorom();
info("Set Snes lowrom \n");
rle_decode(&_rom, ROM_BUFFER_SIZE, 0x000000);
dump_memory(0x10000 - 0x100, 0x10000);
snes_reset_hi();
snes_reset_off();
snes_irq_lo();
@ -307,20 +302,9 @@ void boot_startup_rom()
info("Disable snes WR\n");
snes_bus_active();
info("Activate Snes bus\n");
_delay_ms(100);
info("Reset Snes\n");
_delay_ms(20);
send_reset();
_delay_ms(100);
#if 0
uint8_t i = 0;
i = 20;
info("Wait");
while (--i) {
_delay_ms(500);
info(".");
}
info("\n");
#endif
_delay_ms(200);
}
@ -343,10 +327,12 @@ int main(void)
info("Boot startup rom\n");
boot_startup_rom();
usbInit();
usb_connect();
while (1) {
avr_bus_active();
info("Activate AVR bus\n");
info("IRQ off\n");
@ -369,7 +355,6 @@ int main(void)
snes_bus_active();
info("Activate Snes bus\n");
_delay_ms(100);
info("Reset Snes\n");
send_reset();
info("Poll\n");
@ -411,6 +396,8 @@ int main(void)
info("Read 0x3000=%c\n", c);
#endif
}
info("Boot startup rom\n");
boot_startup_rom();
}
return 0;

View File

@ -73,6 +73,7 @@ void shared_memory_write(uint8_t cmd, uint8_t value)
debug(DEBUG_SHM,"shared_memory_write: 0x%04x=0x%02x 0x%04x=0x%02x \n",
SHARED_MEM_TX_LOC_CMD, cmd, SHARED_MEM_TX_LOC_PAYLOAD, value);
sram_bulk_addr_save();
shared_memory_scratchpad_tx_save();
shared_memory_irq_hook();
@ -81,6 +82,7 @@ void shared_memory_write(uint8_t cmd, uint8_t value)
sram_write(SHARED_MEM_TX_LOC_PAYLOAD, value);
snes_hirom();
snes_wr_disable();
snes_bus_active();
#if SHARED_MEM_SWITCH_IRQ
@ -94,10 +96,14 @@ void shared_memory_write(uint8_t cmd, uint8_t value)
#endif
avr_bus_active();
snes_irq_lo();
snes_irq_off();
snes_lorom();
snes_wr_disable();
shared_memory_scratchpad_tx_restore();
shared_memory_irq_restore();
//sram_bulk_addr_restore();
}
@ -124,6 +130,7 @@ int shared_memory_read(uint8_t *cmd, uint8_t *len,uint8_t *buffer)
if (state != SHARED_MEM_RX_AVR_ACK){
return 1;
}
sram_bulk_addr_save();
*cmd = sram_read(SHARED_MEM_RX_LOC_CMD);
*len = sram_read(SHARED_MEM_RX_LOC_LEN);
@ -134,6 +141,7 @@ int shared_memory_read(uint8_t *cmd, uint8_t *len,uint8_t *buffer)
sram_write(SHARED_MEM_RX_LOC_STATE, SHARED_MEM_RX_AVR_RTS);
snes_hirom();
snes_wr_disable();
snes_bus_active();
#if SHARED_MEM_SWITCH_IRQ
@ -148,5 +156,7 @@ int shared_memory_read(uint8_t *cmd, uint8_t *len,uint8_t *buffer)
avr_bus_active();
snes_lorom();
snes_wr_disable();
sram_bulk_addr_restore();
return 0;
}

View File

@ -54,8 +54,11 @@
#define SHARED_IRQ_LOC_LO 0x00fffe
#define SHARED_IRQ_LOC_HI 0x00ffff
#define SHARED_IRQ_HANDLER_LO 0x00
#define SHARED_IRQ_HANDLER_HI 0x10
/* Use COP IRQ LOC for hooked IRQ handler */
#define SHARED_IRQ_HANDLER_LO 0x0ffe4
#define SHARED_IRQ_HANDLER_HI 0x0ffe5
void shared_memory_write(uint8_t cmd, uint8_t value);
int shared_memory_read(uint8_t *cmd, uint8_t *len,uint8_t *buffer);

View File

@ -124,7 +124,7 @@ inline void sram_bulk_addr_save()
inline void sram_bulk_addr_restore()
{
sram_bulk_read_start(addr_stash);
sreg_set(addr_stash);
}