From 97962b8e8961bfc300deaf5bd70af56988205613 Mon Sep 17 00:00:00 2001 From: optixx Date: Thu, 6 Aug 2009 10:52:44 +0200 Subject: [PATCH] split shared memroy access into tx and rx section --- avr/usbload/main.c | 12 +++++------ avr/usbload/shared_memory.c | 30 +++++++++++++-------------- avr/usbload/shared_memory.h | 41 ++++++++++++++++++++++--------------- 3 files changed, 46 insertions(+), 37 deletions(-) diff --git a/avr/usbload/main.c b/avr/usbload/main.c index 48f5e5b..79021f6 100644 --- a/avr/usbload/main.c +++ b/avr/usbload/main.c @@ -126,7 +126,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_write(SHARED_MEM_TX_CMD_UPLOAD_PROGESS,req_bank); } 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", 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) { timer_start(); } @@ -184,7 +184,7 @@ 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); + shared_memory_write(SHARED_MEM_TX_CMD_UPLOAD_PROGESS, req_bank); sram_bulk_write_start(req_addr); timer_start(); @@ -226,7 +226,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) #endif req_bank++; 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); } @@ -243,7 +243,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) debug(DEBUG_USB, "USB_BULK_UPLOAD_END:\n"); req_state = REQ_STATUS_IDLE; 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; /* @@ -524,7 +524,7 @@ int main(void) while (req_state != REQ_STATUS_SNES) { usbPoll(); } - shared_memory_put(SHARED_MEM_CMD_TERMINATE, 0); + shared_memory_write(SHARED_MEM_TX_CMD_TERMINATE, 0); info("USB poll done\n"); snes_reset_hi(); snes_reset_off(); diff --git a/avr/usbload/shared_memory.c b/avr/usbload/shared_memory.c index e8c63a3..1148a98 100644 --- a/avr/usbload/shared_memory.c +++ b/avr/usbload/shared_memory.c @@ -38,18 +38,18 @@ uint8_t scratchpad_state; uint8_t scratchpad_cmd; uint8_t scratchpad_payload; -void shared_memory_scratchpad_save() +void shared_memory_scratchpad_tx_save() { - scratchpad_state = sram_read(SHARED_MEM_LOC_STATE); - scratchpad_cmd = sram_read(SHARED_MEM_LOC_CMD); - scratchpad_payload = sram_read(SHARED_MEM_LOC_PAYLOAD); + scratchpad_state = sram_read(SHARED_MEM_TX_LOC_STATE); + scratchpad_cmd = sram_read(SHARED_MEM_TX_LOC_CMD); + 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_LOC_CMD, scratchpad_cmd); - sram_write(SHARED_MEM_LOC_PAYLOAD, scratchpad_payload); + sram_write(SHARED_MEM_TX_LOC_STATE, scratchpad_state); + sram_write(SHARED_MEM_TX_LOC_CMD, scratchpad_cmd); + sram_write(SHARED_MEM_TX_LOC_PAYLOAD, scratchpad_payload); } void shared_memory_irq_hook() @@ -66,18 +66,18 @@ void shared_memory_irq_restore() 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", - 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(); - sram_write(SHARED_MEM_LOC_STATE, SHARED_MEM_SNES_ACK); - sram_write(SHARED_MEM_LOC_CMD, cmd); - sram_write(SHARED_MEM_LOC_PAYLOAD, value); + sram_write(SHARED_MEM_TX_LOC_STATE, SHARED_MEM_TX_SNES_ACK); + sram_write(SHARED_MEM_TX_LOC_CMD, cmd); + sram_write(SHARED_MEM_TX_LOC_PAYLOAD, value); snes_hirom(); snes_wr_disable(); @@ -91,7 +91,7 @@ void shared_memory_put(uint8_t cmd, uint8_t value) snes_lorom(); snes_wr_disable(); - shared_memory_scratchpad_restore(); + shared_memory_scratchpad_tx_restore(); shared_memory_irq_restore(); } diff --git a/avr/usbload/shared_memory.h b/avr/usbload/shared_memory.h index 784bd78..817d710 100644 --- a/avr/usbload/shared_memory.h +++ b/avr/usbload/shared_memory.h @@ -22,30 +22,39 @@ #define __SHARED_MEMORY_H__ -#define SHARED_MEM_SNES_ACK 0xa5 -#define SHARED_MEM_SNES_RTS 0x5a +#define SHARED_MEM_TX_SNES_ACK 0xa5 +#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_CMD_BANK_CURRENT 1 +#define SHARED_MEM_TX_CMD_UPLOAD_START 0x03 +#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_CMD_UPLOAD_END 4 -#define SHARED_MEM_CMD_UPLOAD_PROGESS 5 -#define SHARED_MEM_CMD_TERMINATE 6 +#define SHARED_MEM_TX_LOC_STATE 0x000000 +#define SHARED_MEM_TX_LOC_CMD 0x000001 +#define SHARED_MEM_TX_LOC_PAYLOAD 0x000002 +#define SHARED_MEM_RX_AVR_ACK 0xa5 +#define SHARED_MEM_RX_AVR_RTS 0x5a -#define SHARED_MEM_LOC_STATE 0x000000 -#define SHARED_MEM_LOC_CMD 0x000001 -#define SHARED_MEM_LOC_PAYLOAD 0x000002 +#define SHARED_MEM_RX_CMD_PRINFT 0x00 +#define SHARED_MEM_RX_CMD_FILESEL 0x01 -#define SHARED_IRQ_LOC_LO 0x00fffe -#define SHARED_IRQ_LOC_HI 0x00ffff +#define SHARED_MEM_RX_LOC_STATE 0x001000 +#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_HI 0x10 +#define SHARED_IRQ_HANDLER_LO 0x00 +#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