get sram restore working and make the switch to quickdev loader more
mature
This commit is contained in:
parent
df167b285e
commit
dbff180a91
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user