add scratchpad region save and restore
This commit is contained in:
parent
98ac61c91d
commit
ee9b377698
@ -62,11 +62,8 @@ help:
|
|||||||
@echo "make clean ..... to delete objects and hex file"
|
@echo "make clean ..... to delete objects and hex file"
|
||||||
|
|
||||||
hex: main.hex
|
hex: main.hex
|
||||||
@echo "==============================="
|
|
||||||
@echo "$(TARGET) compiled for: $(DEVICE)"
|
@echo "$(TARGET) compiled for: $(DEVICE)"
|
||||||
@echo -n "size is: "
|
@./checksize $(TARGET).elf
|
||||||
@$(SIZE) -A $(TARGET).hex | grep "\.sec1" | tr -s " " | cut -d" " -f2
|
|
||||||
@echo "==============================="
|
|
||||||
|
|
||||||
program: flash fuse
|
program: flash fuse
|
||||||
|
|
||||||
|
|||||||
6
avr/usbload/checksize
Normal file → Executable file
6
avr/usbload/checksize
Normal file → Executable file
@ -5,11 +5,11 @@
|
|||||||
# Creation Date: 2004-12-29
|
# Creation Date: 2004-12-29
|
||||||
# Tabsize: 4
|
# Tabsize: 4
|
||||||
# Copyright: (c) 2005 OBJECTIVE DEVELOPMENT Software GmbH.
|
# Copyright: (c) 2005 OBJECTIVE DEVELOPMENT Software GmbH.
|
||||||
# Revision: $Id: checksize 83 2006-01-05 22:20:53Z cs $
|
# Revision: $:Id: checksize 83 2006-01-05 22:20:53Z cs $
|
||||||
|
|
||||||
error=0
|
error=0
|
||||||
codelimit=16384 # default value
|
codelimit=65536 # default value
|
||||||
datalimit=992 # default value; leave 32 bytes for stack
|
datalimit=4064 # default value; leave 32 bytes for stack
|
||||||
|
|
||||||
if [ $# -gt 1 ]; then
|
if [ $# -gt 1 ]; then
|
||||||
codelimit="$2"
|
codelimit="$2"
|
||||||
|
|||||||
@ -38,6 +38,52 @@ uint8_t scratchpad_state;
|
|||||||
uint8_t scratchpad_cmd;
|
uint8_t scratchpad_cmd;
|
||||||
uint8_t scratchpad_payload;
|
uint8_t scratchpad_payload;
|
||||||
|
|
||||||
|
uint8_t scratchpad_region_rx[SHARED_MEM_RX_LOC_SIZE];
|
||||||
|
uint8_t scratchpad_region_tx[SHARED_MEM_TX_LOC_SIZE];
|
||||||
|
|
||||||
|
uint8_t scratchpad_locked_rx = 1;
|
||||||
|
uint8_t scratchpad_locked_tx = 1;
|
||||||
|
|
||||||
|
|
||||||
|
void shared_memory_scratchpad_region_saye_helper(uint32_t addr){
|
||||||
|
|
||||||
|
if(addr > (SHARED_MEM_TX_LOC_STATE + SHARED_MEM_TX_LOC_SIZE ))
|
||||||
|
shared_memory_scratchpad_region_tx_save();
|
||||||
|
|
||||||
|
if(addr > (SHARED_MEM_RX_LOC_STATE + SHARED_MEM_RX_LOC_SIZE ))
|
||||||
|
shared_memory_scratchpad_region_rx_save();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void shared_memory_scratchpad_region_tx_save()
|
||||||
|
{
|
||||||
|
debug(DEBUG_SHM,"shared_memory_scratchpad_region_tx_save: unlock\n");
|
||||||
|
sram_bulk_read_buffer(SHARED_MEM_TX_LOC_STATE,scratchpad_region_tx,SHARED_MEM_TX_LOC_SIZE);
|
||||||
|
scratchpad_locked_tx = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void shared_memory_scratchpad_region_tx_restore()
|
||||||
|
{
|
||||||
|
debug(DEBUG_SHM,"shared_memory_scratchpad_region_tx_restore: lock\n");
|
||||||
|
sram_bulk_copy(SHARED_MEM_TX_LOC_STATE,scratchpad_region_tx,SHARED_MEM_TX_LOC_SIZE);
|
||||||
|
scratchpad_locked_tx = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void shared_memory_scratchpad_region_rx_save()
|
||||||
|
{
|
||||||
|
debug(DEBUG_SHM,"shared_memory_scratchpad_region_rx_save: unlock\n");
|
||||||
|
sram_bulk_read_buffer(SHARED_MEM_RX_LOC_STATE,scratchpad_region_rx,SHARED_MEM_RX_LOC_SIZE);
|
||||||
|
scratchpad_locked_rx = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void shared_memory_scratchpad_region_rx_restore()
|
||||||
|
{
|
||||||
|
debug(DEBUG_SHM,"shared_memory_scratchpad_region_tx_save: lock\n");
|
||||||
|
sram_bulk_copy(SHARED_MEM_RX_LOC_STATE,scratchpad_region_rx,SHARED_MEM_RX_LOC_SIZE);
|
||||||
|
scratchpad_locked_rx = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void shared_memory_scratchpad_tx_save()
|
void shared_memory_scratchpad_tx_save()
|
||||||
{
|
{
|
||||||
scratchpad_state = sram_read(SHARED_MEM_TX_LOC_STATE);
|
scratchpad_state = sram_read(SHARED_MEM_TX_LOC_STATE);
|
||||||
@ -70,6 +116,9 @@ void shared_memory_irq_restore()
|
|||||||
void shared_memory_write(uint8_t cmd, uint8_t value)
|
void shared_memory_write(uint8_t cmd, uint8_t value)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (scratchpad_locked_tx)
|
||||||
|
debug(DEBUG_SHM,"shared_memory_write: locked_tx\n");
|
||||||
|
|
||||||
debug(DEBUG_SHM,"shared_memory_write: 0x%04x=0x%02x 0x%04x=0x%02x \n",
|
debug(DEBUG_SHM,"shared_memory_write: 0x%04x=0x%02x 0x%04x=0x%02x \n",
|
||||||
SHARED_MEM_TX_LOC_CMD, cmd, SHARED_MEM_TX_LOC_PAYLOAD, value);
|
SHARED_MEM_TX_LOC_CMD, cmd, SHARED_MEM_TX_LOC_PAYLOAD, value);
|
||||||
|
|
||||||
@ -125,6 +174,9 @@ int shared_memory_read(uint8_t *cmd, uint8_t *len,uint8_t *buffer)
|
|||||||
{
|
{
|
||||||
uint8_t state;
|
uint8_t state;
|
||||||
|
|
||||||
|
if (scratchpad_locked_rx)
|
||||||
|
debug(DEBUG_SHM,"shared_memory_write: locked_tx\n");
|
||||||
|
|
||||||
|
|
||||||
state = sram_read(SHARED_MEM_RX_LOC_STATE);
|
state = sram_read(SHARED_MEM_RX_LOC_STATE);
|
||||||
if (state != SHARED_MEM_RX_AVR_ACK){
|
if (state != SHARED_MEM_RX_AVR_ACK){
|
||||||
|
|||||||
@ -37,6 +37,7 @@
|
|||||||
#define SHARED_MEM_TX_CMD_TERMINATE 0x06
|
#define SHARED_MEM_TX_CMD_TERMINATE 0x06
|
||||||
|
|
||||||
#define SHARED_MEM_TX_LOC_STATE 0x000000
|
#define SHARED_MEM_TX_LOC_STATE 0x000000
|
||||||
|
#define SHARED_MEM_TX_LOC_SIZE 0x000100
|
||||||
#define SHARED_MEM_TX_LOC_CMD 0x000001
|
#define SHARED_MEM_TX_LOC_CMD 0x000001
|
||||||
#define SHARED_MEM_TX_LOC_PAYLOAD 0x000002
|
#define SHARED_MEM_TX_LOC_PAYLOAD 0x000002
|
||||||
|
|
||||||
@ -47,6 +48,7 @@
|
|||||||
#define SHARED_MEM_RX_CMD_FILESEL 0x01
|
#define SHARED_MEM_RX_CMD_FILESEL 0x01
|
||||||
|
|
||||||
#define SHARED_MEM_RX_LOC_STATE 0x001000
|
#define SHARED_MEM_RX_LOC_STATE 0x001000
|
||||||
|
#define SHARED_MEM_RX_LOC_SIZE 0x000400
|
||||||
#define SHARED_MEM_RX_LOC_CMD 0x001001
|
#define SHARED_MEM_RX_LOC_CMD 0x001001
|
||||||
#define SHARED_MEM_RX_LOC_LEN 0x001002
|
#define SHARED_MEM_RX_LOC_LEN 0x001002
|
||||||
#define SHARED_MEM_RX_LOC_PAYLOAD 0x001003
|
#define SHARED_MEM_RX_LOC_PAYLOAD 0x001003
|
||||||
@ -60,6 +62,11 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void shared_memory_scratchpad_region_saye_helper(uint32_t addr);
|
||||||
|
void shared_memory_scratchpad_region_tx_save();
|
||||||
|
void shared_memory_scratchpad_region_tx_restore();
|
||||||
|
void shared_memory_scratchpad_region_rx_save();
|
||||||
|
void shared_memory_scratchpad_region_rx_restore();
|
||||||
void shared_memory_write(uint8_t cmd, uint8_t value);
|
void shared_memory_write(uint8_t cmd, uint8_t value);
|
||||||
int shared_memory_read(uint8_t *cmd, uint8_t *len,uint8_t *buffer);
|
int shared_memory_read(uint8_t *cmd, uint8_t *len,uint8_t *buffer);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user