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__ #ifndef __FIFO_H__
#define __FIFO_H__ #define __FIFO_H__
#define ROM_SIZE 30151 #define ROM_SIZE 30119
#endif #endif

View File

@ -124,7 +124,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
req_bank, req_addr); req_bank, req_addr);
req_bank++; 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; ret_len = USB_MAX_TRANS;
/* /*
@ -167,7 +167,6 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
req_addr = rq->wValue.word; req_addr = rq->wValue.word;
req_addr = req_addr << 16; req_addr = req_addr << 16;
req_addr = req_addr | rq->wIndex.word; req_addr = req_addr | rq->wIndex.word;
sram_bulk_write_start(req_addr);
rx_remaining = rq->wLength.word; rx_remaining = rq->wLength.word;
if (req_addr && req_addr % req_bank_size == 0) { 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()); req_bank, req_addr,timer_stop_int());
#endif #endif
req_bank++; req_bank++;
shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS,req_bank);
sram_bulk_write_start(req_addr);
timer_start(); timer_start();
} else {
sram_bulk_write_start(req_addr);
} }
ret_len = USB_MAX_TRANS; ret_len = USB_MAX_TRANS;
@ -204,15 +207,16 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
#endif #endif
if (req_addr && ( req_addr % req_bank_size) == 0) { if (req_addr && ( req_addr % req_bank_size) == 0) {
#ifdef FLT_DEBUG #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()); req_bank, req_addr,timer_stop());
#else #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()); req_bank, req_addr,timer_stop_int());
#endif #endif
req_bank++; req_bank++;
shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS,req_bank);
timer_start(); timer_start();
shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS,req_bank);
sram_bulk_write_start(req_addr);
} }
ret_len = USB_MAX_TRANS; ret_len = USB_MAX_TRANS;
@ -489,7 +493,8 @@ void boot_startup_rom(){
_delay_ms(100); _delay_ms(100);
info("Reset Snes\n"); info("Reset Snes\n");
send_reset(); send_reset();
#if 0 _delay_ms(100);
#if 0
i = 20; i = 20;
info("Wait"); info("Wait");
while (--i){ while (--i){
@ -559,9 +564,10 @@ int main(void)
while (req_state != REQ_STATUS_AVR){ while (req_state != REQ_STATUS_AVR){
usbPoll(); usbPoll();
#ifdef DO_IRQ #ifdef DO_IRQ
i = 10; i = 10;
while (--i) { /* fake USB disconnect for > 250 ms */ while (--i) {
_delay_ms(100); _delay_ms(100);
} }
info("Send IRQ %i\n",++irq_count); 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){ 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_scratchpad_save();
shared_memory_irq_hook(); 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_CMD,cmd);
sram_write(SHARED_MEM_LOC_PAYLOAD,value); sram_write(SHARED_MEM_LOC_PAYLOAD,value);
snes_irq_lo();
snes_irq_off();
snes_hirom(); snes_hirom();
snes_wr_disable(); snes_wr_disable();
snes_bus_active(); snes_bus_active();
_delay_ms(50);
//snes_irq_on();
//snes_irq_lo();
//_delay_us(20);
//snes_irq_hi();
//snes_irq_off();
avr_bus_active(); avr_bus_active();
snes_irq_off();
snes_irq_lo(); snes_irq_lo();
snes_irq_off();
snes_lorom(); snes_lorom();
snes_wr_disable();
shared_memory_scratchpad_restore(); shared_memory_scratchpad_restore();
shared_memory_irq_restore(); shared_memory_irq_restore();

View File

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