get shared mem working

This commit is contained in:
David Voswinkel 2009-08-02 16:02:36 +02:00
parent 1b45c2f325
commit d1447db7b0
5 changed files with 1848 additions and 1849 deletions

File diff suppressed because it is too large Load Diff

View File

@ -2,6 +2,6 @@
#ifndef __FIFO_H__
#define __FIFO_H__
#define ROM_SIZE 30151
#define ROM_SIZE 30119
#endif

View File

@ -124,7 +124,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
req_bank, req_addr);
req_bank++;
shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS,req_bank);
//shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS,req_bank);
}
ret_len = USB_MAX_TRANS;
/*
@ -167,7 +167,6 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
req_addr = rq->wValue.word;
req_addr = req_addr << 16;
req_addr = req_addr | rq->wIndex.word;
sram_bulk_write_start(req_addr);
rx_remaining = rq->wLength.word;
if (req_addr && req_addr % req_bank_size == 0) {
@ -179,8 +178,12 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
req_bank, req_addr,timer_stop_int());
#endif
req_bank++;
shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS,req_bank);
sram_bulk_write_start(req_addr);
timer_start();
} else {
sram_bulk_write_start(req_addr);
}
ret_len = USB_MAX_TRANS;
@ -204,15 +207,16 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
#endif
if (req_addr && ( req_addr % req_bank_size) == 0) {
#ifdef FLT_DEBUG
debug(DEBUG_USB,"USB_BULK_UPLOAD_ADDR: req_bank=0x%02x addr=0x%08lx time=%.4f\n",
debug(DEBUG_USB,"USB_BULK_UPLOAD_NEXT: req_bank=0x%02x addr=0x%08lx time=%.4f\n",
req_bank, req_addr,timer_stop());
#else
debug(DEBUG_USB,"USB_BULK_UPLOAD_ADDR: req_bank=0x%02x addr=0x%08lx time=%i\n",
debug(DEBUG_USB,"USB_BULK_UPLOAD_NEXT: req_bank=0x%02x addr=0x%08lx time=%i\n",
req_bank, req_addr,timer_stop_int());
#endif
req_bank++;
shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS,req_bank);
timer_start();
shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS,req_bank);
sram_bulk_write_start(req_addr);
}
ret_len = USB_MAX_TRANS;
@ -489,6 +493,7 @@ void boot_startup_rom(){
_delay_ms(100);
info("Reset Snes\n");
send_reset();
_delay_ms(100);
#if 0
i = 20;
info("Wait");
@ -559,9 +564,10 @@ int main(void)
while (req_state != REQ_STATUS_AVR){
usbPoll();
#ifdef DO_IRQ
i = 10;
while (--i) { /* fake USB disconnect for > 250 ms */
while (--i) {
_delay_ms(100);
}
info("Send IRQ %i\n",++irq_count);

View File

@ -64,7 +64,8 @@ void shared_memory_irq_restore(){
void shared_memory_put(uint8_t cmd, uint8_t value){
info("Write shared memory %06lx=%02x %06lx=%02x \n",SHARED_MEM_LOC_CMD,cmd,SHARED_MEM_LOC_PAYLOAD,value);
//return;
info("Write shared memory 0x%04x=0x%02x 0x%04x=0x%02x \n",SHARED_MEM_LOC_CMD,cmd,SHARED_MEM_LOC_PAYLOAD,value);
shared_memory_scratchpad_save();
shared_memory_irq_hook();
@ -73,23 +74,17 @@ void shared_memory_put(uint8_t cmd, uint8_t value){
sram_write(SHARED_MEM_LOC_CMD,cmd);
sram_write(SHARED_MEM_LOC_PAYLOAD,value);
snes_irq_lo();
snes_irq_off();
snes_hirom();
snes_wr_disable();
snes_bus_active();
_delay_ms(50);
//snes_irq_on();
//snes_irq_lo();
//_delay_us(20);
//snes_irq_hi();
//snes_irq_off();
avr_bus_active();
snes_irq_off();
snes_irq_lo();
snes_irq_off();
snes_lorom();
snes_wr_disable();
shared_memory_scratchpad_restore();
shared_memory_irq_restore();

View File

@ -34,8 +34,8 @@
#define SHARED_IRQ_LOC_HI 0x00ffff
#define SHARED_IRQ_HANDLER_LO 0x12
#define SHARED_IRQ_HANDLER_HI 0x34
#define SHARED_IRQ_HANDLER_LO 0x00
#define SHARED_IRQ_HANDLER_HI 0x10
void shared_memory_put(uint8_t cmd, uint8_t value);