split shared memroy access into tx and rx section
This commit is contained in:
parent
cf95b95723
commit
97962b8e89
@ -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();
|
||||||
|
|||||||
@ -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();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user