split shared memroy access into tx and rx section

This commit is contained in:
optixx 2009-08-06 10:52:44 +02:00
parent cf95b95723
commit 97962b8e89
3 changed files with 46 additions and 37 deletions

View File

@ -126,7 +126,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_write(SHARED_MEM_TX_CMD_UPLOAD_PROGESS,req_bank);
} }
ret_len = USB_MAX_TRANS; ret_len = USB_MAX_TRANS;
/* /*
@ -158,7 +158,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
"USB_BULK_UPLOAD_INIT: bank_size=0x%08lx bank_cnt=0x%x end_addr=0x%08lx\n", "USB_BULK_UPLOAD_INIT: bank_size=0x%08lx bank_cnt=0x%x end_addr=0x%08lx\n",
req_bank_size, req_bank_cnt, req_addr_end); req_bank_size, req_bank_cnt, req_addr_end);
shared_memory_put(SHARED_MEM_CMD_BANK_COUNT, req_bank_cnt); shared_memory_write(SHARED_MEM_TX_CMD_BANK_COUNT, req_bank_cnt);
if (req_addr == 0x000000) { if (req_addr == 0x000000) {
timer_start(); timer_start();
} }
@ -184,7 +184,7 @@ 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); shared_memory_write(SHARED_MEM_TX_CMD_UPLOAD_PROGESS, req_bank);
sram_bulk_write_start(req_addr); sram_bulk_write_start(req_addr);
timer_start(); timer_start();
@ -226,7 +226,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
#endif #endif
req_bank++; req_bank++;
timer_start(); timer_start();
shared_memory_put(SHARED_MEM_CMD_BANK_CURRENT, req_bank); shared_memory_write(SHARED_MEM_TX_CMD_BANK_CURRENT, req_bank);
sram_bulk_write_start(req_addr); sram_bulk_write_start(req_addr);
} }
@ -243,7 +243,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
debug(DEBUG_USB, "USB_BULK_UPLOAD_END:\n"); debug(DEBUG_USB, "USB_BULK_UPLOAD_END:\n");
req_state = REQ_STATUS_IDLE; req_state = REQ_STATUS_IDLE;
sram_bulk_write_end(); sram_bulk_write_end();
shared_memory_put(SHARED_MEM_CMD_UPLOAD_END, 0); shared_memory_write(SHARED_MEM_TX_CMD_UPLOAD_END, 0);
ret_len = 0; ret_len = 0;
/* /*
@ -524,7 +524,7 @@ int main(void)
while (req_state != REQ_STATUS_SNES) { while (req_state != REQ_STATUS_SNES) {
usbPoll(); usbPoll();
} }
shared_memory_put(SHARED_MEM_CMD_TERMINATE, 0); shared_memory_write(SHARED_MEM_TX_CMD_TERMINATE, 0);
info("USB poll done\n"); info("USB poll done\n");
snes_reset_hi(); snes_reset_hi();
snes_reset_off(); snes_reset_off();

View File

@ -38,18 +38,18 @@ uint8_t scratchpad_state;
uint8_t scratchpad_cmd; uint8_t scratchpad_cmd;
uint8_t scratchpad_payload; uint8_t scratchpad_payload;
void shared_memory_scratchpad_save() void shared_memory_scratchpad_tx_save()
{ {
scratchpad_state = sram_read(SHARED_MEM_LOC_STATE); scratchpad_state = sram_read(SHARED_MEM_TX_LOC_STATE);
scratchpad_cmd = sram_read(SHARED_MEM_LOC_CMD); scratchpad_cmd = sram_read(SHARED_MEM_TX_LOC_CMD);
scratchpad_payload = sram_read(SHARED_MEM_LOC_PAYLOAD); scratchpad_payload = sram_read(SHARED_MEM_TX_LOC_PAYLOAD);
} }
void shared_memory_scratchpad_restore() void shared_memory_scratchpad_tx_restore()
{ {
sram_write(SHARED_MEM_LOC_STATE, scratchpad_state); sram_write(SHARED_MEM_TX_LOC_STATE, scratchpad_state);
sram_write(SHARED_MEM_LOC_CMD, scratchpad_cmd); sram_write(SHARED_MEM_TX_LOC_CMD, scratchpad_cmd);
sram_write(SHARED_MEM_LOC_PAYLOAD, scratchpad_payload); sram_write(SHARED_MEM_TX_LOC_PAYLOAD, scratchpad_payload);
} }
void shared_memory_irq_hook() void shared_memory_irq_hook()
@ -66,18 +66,18 @@ void shared_memory_irq_restore()
sram_write(SHARED_IRQ_LOC_HI, irq_addr_hi); sram_write(SHARED_IRQ_LOC_HI, irq_addr_hi);
} }
void shared_memory_put(uint8_t cmd, uint8_t value) void shared_memory_write(uint8_t cmd, uint8_t value)
{ {
info("Write shared memory 0x%04x=0x%02x 0x%04x=0x%02x \n", info("Write shared memory 0x%04x=0x%02x 0x%04x=0x%02x \n",
SHARED_MEM_LOC_CMD, cmd, SHARED_MEM_LOC_PAYLOAD, value); SHARED_MEM_TX_LOC_CMD, cmd, SHARED_MEM_TX_LOC_PAYLOAD, value);
shared_memory_scratchpad_save(); shared_memory_scratchpad_tx_save();
shared_memory_irq_hook(); shared_memory_irq_hook();
sram_write(SHARED_MEM_LOC_STATE, SHARED_MEM_SNES_ACK); sram_write(SHARED_MEM_TX_LOC_STATE, SHARED_MEM_TX_SNES_ACK);
sram_write(SHARED_MEM_LOC_CMD, cmd); sram_write(SHARED_MEM_TX_LOC_CMD, cmd);
sram_write(SHARED_MEM_LOC_PAYLOAD, value); sram_write(SHARED_MEM_TX_LOC_PAYLOAD, value);
snes_hirom(); snes_hirom();
snes_wr_disable(); snes_wr_disable();
@ -91,7 +91,7 @@ void shared_memory_put(uint8_t cmd, uint8_t value)
snes_lorom(); snes_lorom();
snes_wr_disable(); snes_wr_disable();
shared_memory_scratchpad_restore(); shared_memory_scratchpad_tx_restore();
shared_memory_irq_restore(); shared_memory_irq_restore();
} }

View File

@ -22,30 +22,39 @@
#define __SHARED_MEMORY_H__ #define __SHARED_MEMORY_H__
#define SHARED_MEM_SNES_ACK 0xa5 #define SHARED_MEM_TX_SNES_ACK 0xa5
#define SHARED_MEM_SNES_RTS 0x5a #define SHARED_MEM_TX_SNES_RTS 0x5a
#define SHARED_MEM_TX_CMD_BANK_COUNT 0x00
#define SHARED_MEM_TX_CMD_BANK_CURRENT 0x01
#define SHARED_MEM_CMD_BANK_COUNT 0 #define SHARED_MEM_TX_CMD_UPLOAD_START 0x03
#define SHARED_MEM_CMD_BANK_CURRENT 1 #define SHARED_MEM_TX_CMD_UPLOAD_END 0x04
#define SHARED_MEM_TX_CMD_UPLOAD_PROGESS 0x05
#define SHARED_MEM_TX_CMD_TERMINATE 0x06
#define SHARED_MEM_CMD_UPLOAD_START 3 #define SHARED_MEM_TX_LOC_STATE 0x000000
#define SHARED_MEM_CMD_UPLOAD_END 4 #define SHARED_MEM_TX_LOC_CMD 0x000001
#define SHARED_MEM_CMD_UPLOAD_PROGESS 5 #define SHARED_MEM_TX_LOC_PAYLOAD 0x000002
#define SHARED_MEM_CMD_TERMINATE 6
#define SHARED_MEM_RX_AVR_ACK 0xa5
#define SHARED_MEM_RX_AVR_RTS 0x5a
#define SHARED_MEM_LOC_STATE 0x000000 #define SHARED_MEM_RX_CMD_PRINFT 0x00
#define SHARED_MEM_LOC_CMD 0x000001 #define SHARED_MEM_RX_CMD_FILESEL 0x01
#define SHARED_MEM_LOC_PAYLOAD 0x000002
#define SHARED_IRQ_LOC_LO 0x00fffe #define SHARED_MEM_RX_LOC_STATE 0x001000
#define SHARED_IRQ_LOC_HI 0x00ffff #define SHARED_MEM_RX_LOC_CMD 0x001001
#define SHARED_MEM_RX_LOC_LEN 0x001002
#define SHARED_MEM_RX_LOC_PAYLOAD 0x001003
#define SHARED_IRQ_LOC_LO 0x00fffe
#define SHARED_IRQ_LOC_HI 0x00ffff
#define SHARED_IRQ_HANDLER_LO 0x00 #define SHARED_IRQ_HANDLER_LO 0x00
#define SHARED_IRQ_HANDLER_HI 0x10 #define SHARED_IRQ_HANDLER_HI 0x10
void shared_memory_put(uint8_t cmd, uint8_t value); void shared_memory_write(uint8_t cmd, uint8_t value);
void shared_memory_read(uint8_t *cmd, uint8_t *len,uint8_t *buffer);
#endif #endif